Package inheritance.filtered.disc_outof_pk

Source Code of inheritance.filtered.disc_outof_pk.Main

/**
* Copyright (C) 2001-2006 France Telecom R&D
*/
package inheritance.filtered.disc_outof_pk;

import org.objectweb.speedo.api.ExceptionHelper;
import org.objectweb.util.monolog.api.BasicLevel;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import javax.jdo.Extent;
import javax.jdo.JDOException;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;

import common.MainHelper;

public class Main extends MainHelper {

    protected int nbToRetrieve = 0;
    protected String phone = "123456789";
   

    public static void main(String[] args) {
        new Main().init(args).run().end();
    }

    public MainHelper run() {
        //create the forms
        createInheritedObjects();
        //get all the forms
        iterateExtent(Form.class);
        //get all the book forms
        iterateExtent(BookForm.class);
        //get all the purchase forms
        iterateExtent(PurchaseForm.class);
        retrieveAllXXForms(phone);
        queryTruble("1");
        removingOfPersistentObject();
        return this;
    }

    /**
     * Create persistent objects
     */
    private void createInheritedObjects(){
        PersistenceManager pm = pmf.getPersistenceManager();
        try {
            ContactDetails contactDetails1 = new ContactDetails("Jerry", "Rice", phone);
            ContactDetails contactDetails2 = new ContactDetails("Ray", "Allen", "987654321");
       
            CreditCard card1 = new CreditCard(1, "visa");
            CreditCard card2 = new CreditCard(2, "american express");
       
            BookForm bookForm1 = new BookForm(1, contactDetails1, 1);
            BookForm bookForm2 = new BookForm(2, contactDetails1, 2);
            BookForm bookForm3 = new BookForm(3, contactDetails1, 3);
            PurchaseForm purchaseForm1 = new PurchaseForm(4, contactDetails1, 400, card1);
            PurchaseForm purchaseForm2 = new PurchaseForm(5, contactDetails1, 500, card2);
       
            BookForm bookForm4 = new BookForm(6, contactDetails2, 6);
            BookForm bookForm5 = new BookForm(7, contactDetails2, 7);
       
            Collection forms = new ArrayList();
            forms.add(bookForm1);
            forms.add(bookForm2);
            forms.add(bookForm3);
            forms.add(bookForm4);
            forms.add(bookForm5);
            forms.add(purchaseForm1);
            forms.add(purchaseForm2);
       
            Iterator it = forms.iterator();
            nbToRetrieve = 0;
            while (it.hasNext()) {
                Form f = (Form) it.next();
                if (f.getContactDetails().getPhoneNumber().equals(phone))
                    nbToRetrieve++;
            }
            //  make persistent all the forms
            pm.currentTransaction().begin();
            pm.makePersistentAll(forms);
            pm.currentTransaction().commit();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, e);
        } finally {
            if (pm.currentTransaction().isActive())
                pm.currentTransaction().rollback();
            //remove all the objects from the cache
            pm.evictAll();
            pm.close();
        }
    }

    //iterate over all the instances of a class
    private void iterateExtent(Class cl){
        logger.log(BasicLevel.INFO, "Search all form (including sub classes):");
        PersistenceManager pm = pmf.getPersistenceManager();
        try {
            pm.currentTransaction().begin();
            Extent extent = pm.getExtent(cl, true);
            Iterator it = extent.iterator();
            while(it.hasNext()){
                Form f = (Form) it.next();
                logger.log(BasicLevel.INFO, "\t- form.id=" + f.getId());
            }
            extent.close(it);
            pm.currentTransaction().commit();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, e);
        } finally {
            if (pm.currentTransaction().isActive())
                pm.currentTransaction().rollback();
            pm.evictAll();
            pm.close();
        }
    }
   
    private void retrieveAllXXForms(String phoneNumber){
        logger.log(BasicLevel.INFO, "Search all form having a contact with the phone number " + phoneNumber);
        PersistenceManager pm = pmf.getPersistenceManager();
        try {
            Query query = pm.newQuery(Form.class,"contactDetails.phoneNumber==" + phoneNumber);
            Collection results = (Collection)query.execute();
            logger.log(BasicLevel.DEBUG, "All " + phoneNumber + " forms:");
            Iterator it = results.iterator();
            while(it.hasNext()){
                Form f = (Form) it.next();
                logger.log(BasicLevel.INFO, "\t- form.id=" + f.getId());
            }
            query.closeAll();
        } catch (Exception e) {
            logger.log(BasicLevel.ERROR, e);
        } finally {
            pm.evictAll();
            pm.close();
        }
    }
   
    //problem sent by a user
    private void queryTruble(String myId) {
        PersistenceManager pm = pmf.getPersistenceManager();
        try {
            pm.currentTransaction().begin();
       
            BookForm b = null;
            Query query = pm.newQuery(BookForm.class, "(id == argId)");
            query.declareParameters("int argId");
            Integer id = Integer.valueOf(myId);
            Collection results = (Collection)query.execute(id);
            Iterator it = results.iterator();
            if(it.hasNext()){
                b = (BookForm) it.next();
                logger.log(BasicLevel.DEBUG, b.getTitle());
            }
            query.closeAll();
            pm.currentTransaction().commit();
        } catch (Exception e) {
            if (pm.currentTransaction().isActive())
                pm.currentTransaction().rollback();
            logger.log(BasicLevel.ERROR, e);
        } finally {
            pm.close();
        }
    }
   
    private void removingOfPersistentObject() {
        PersistenceManager pm = pmf.getPersistenceManager();
        try {
            Class[] cs = new Class[]{Form.class, CreditCard.class, ContactDetails.class};
            pm.currentTransaction().begin();
            for(int i=0; i<cs.length; i++) {
                Query query = pm.newQuery(cs[i]);
                Collection col = (Collection) query.execute();
                Iterator it = col.iterator();
                while(it.hasNext()) {
                    Object o = it.next();
                    pm.deletePersistent(o);

                }
                query.close(col);
            }
            pm.currentTransaction().commit();
        } catch (JDOException e) {
            Exception ie = ExceptionHelper.getNested(e);
            logger.log(BasicLevel.ERROR, "", ie);
        } finally {
            pm.close();
        }
    }

}
TOP

Related Classes of inheritance.filtered.disc_outof_pk.Main

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.