User: mgroot  
  Date: 01/01/24 12:35:27

  Added:       src/main/org/jboss/util AutoNumberHome.java
                        AutoNumberEJB.java AutoNumberFactory.java
                        AutoNumber.java
  Log:
  Autonumber utility classes & EJB
  
  Revision  Changes    Path
  1.1                  jboss/src/main/org/jboss/util/AutoNumberHome.java
  
  Index: AutoNumberHome.java
  ===================================================================
  /*
   * JBoss, the OpenSource EJB server
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
   
  package org.jboss.util;
  
  import javax.ejb.EJBHome;
  import javax.ejb.CreateException;
  import javax.ejb.FinderException;
  import java.rmi.RemoteException;
  
  /*
   * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
   * @version $Revision: 1.1 $
   */
  public interface AutoNumberHome extends EJBHome {
        /**
         * Creates an AutoNumber of given name.
         * @param name the name of the AutoNumber
         */
        public AutoNumber create(String name) throws CreateException, RemoteException;
        
        /**
         * Finds an AutoNumber by its name.
         */
        public AutoNumber findByPrimaryKey(String name) throws FinderException, 
RemoteException;
  }
  
  
  1.1                  jboss/src/main/org/jboss/util/AutoNumberEJB.java
  
  Index: AutoNumberEJB.java
  ===================================================================
  /*
   * JBoss, the OpenSource EJB server
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
   
  package org.jboss.util;
  
  import javax.ejb.EntityBean;
  import javax.naming.InitialContext;
  
  /*
   * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
   * @version $Revision: 1.1 $
   */
  public class AutoNumberEJB implements EntityBean {
        public String name;
        public Integer value; 
        
        public String ejbCreate(String name) {
                this.name = name;
                this.value = new Integer(0);
  
                return null;
        }
        
        public void ejbPostCreate(String name) {}
        
        public Integer getValue()  {
                return value;
        }
        
        public void setValue(Integer value)  {
                this.value = value;
        }
        
        public void ejbActivate() {}
        public void ejbPassivate() {}
        public void ejbLoad() {}
        public void ejbStore() {}
        public void ejbRemove() {}
        public void setEntityContext(javax.ejb.EntityContext ec) {}
        public void unsetEntityContext() {}
        
  }
  
  
  1.1                  jboss/src/main/org/jboss/util/AutoNumberFactory.java
  
  Index: AutoNumberFactory.java
  ===================================================================
  /*
   * JBoss, the OpenSource EJB server
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
   
  package org.jboss.util;
  
  import javax.naming.InitialContext;
  
  /**
   * AutoNumberFactory can persistently auto number items. 
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
   * @version $Revision: 1.1 $
   */
  public class AutoNumberFactory {
        private static AutoNumberHome autoNumberHome;
        
        /**
         * Gets the next key for the given collection.
         * Note 1: you must deploy EJB AutoNumber
         * Note 2: the keys are persistent in your database, independent of 
         * the actual table
         * Note 3: you can only add instances to the collection which have a 
         * key generated by this method, otherwise the keys are not guaranteed
         * to be unique
         * Note 4: key values are >= 0
         * @param collectionName the name of the collection for which you want an 
autonumber
         * @throws ArrayIndexOutOfBoundsException if no more numbers are available
         */
        public static Integer getNextInteger(String collectionName) throws 
ArrayIndexOutOfBoundsException {
                Integer value = null;
                AutoNumber autoNumber = null;
                if (autoNumberHome == null) {
                        try {
                                autoNumberHome = (AutoNumberHome)new 
InitialContext().lookup("JBossUtilAutoNumber");
                        } catch (javax.naming.NamingException e) {
                                e.printStackTrace();
                        }
                }
                try {
                        autoNumber = 
(AutoNumber)autoNumberHome.findByPrimaryKey(collectionName);
                } catch (javax.ejb.FinderException e) {
                        // autonumber does not exist yet, create one at value 0
                        try {
                                autoNumber = autoNumberHome.create(collectionName);
                        } catch (javax.ejb.CreateException e11) {
                                e11.printStackTrace();
                        } catch (java.rmi.RemoteException e12) {
                                e12.printStackTrace();
                        }
                        try {
                                autoNumber.setValue(new Integer(0));
                        } catch (java.rmi.RemoteException e21) {
                                e21.printStackTrace();
                        }
                } catch (java.rmi.RemoteException e2) {
                        e2.printStackTrace();
                }
                try {
                        value = autoNumber.getValue();
                        autoNumber.setValue(new Integer(value.intValue()+1));
                } catch (java.rmi.RemoteException e) {
                        e.printStackTrace();
                }
                
                return value;
        }
  
        /**
         * Resets the given autonumber to zero.
         * Use with extreme care!
         */
        public static void resetAutoNumber(String collectionName) {
                setAutoNumber(collectionName,new Integer(0));
        }
        
        /**
         * Sets the given autonumber to the given value so that it starts
         * counting at the given value.
         * Use with extreme care!
         */
        public static void setAutoNumber(String collectionName, Integer value) {
                AutoNumber autoNumber = null;
                if (autoNumberHome == null) {
                        try {
                                autoNumberHome = (AutoNumberHome)new 
InitialContext().lookup("JBossUtilAutoNumber");
                        } catch (javax.naming.NamingException e) {
                                e.printStackTrace();
                        }
                }
                try {
                        autoNumber = 
(AutoNumber)autoNumberHome.findByPrimaryKey(collectionName);
                } catch (javax.ejb.FinderException e) {
                        // autonumber does not exist yet, create one
                        try {
                                autoNumber = autoNumberHome.create(collectionName);
                        } catch (javax.ejb.CreateException e11) {
                                e11.printStackTrace();
                        } catch (java.rmi.RemoteException e12) {
                                e12.printStackTrace();
                        }
                } catch (java.rmi.RemoteException e2) {
                        e2.printStackTrace();
                }
                try {
                        autoNumber.setValue(value);
                } catch (java.rmi.RemoteException e) {
                        e.printStackTrace();
                }
        }       
  }
  
  
  1.1                  jboss/src/main/org/jboss/util/AutoNumber.java
  
  Index: AutoNumber.java
  ===================================================================
  /*
   * JBoss, the OpenSource EJB server
   *
   * Distributable under LGPL license.
   * See terms of license at gnu.org.
   */
   
  package org.jboss.util;
  
  import javax.ejb.EJBObject;
  import java.rmi.RemoteException;
  
  /**
   * AutoNumber stores autonumbers for items in a collection.
   *
   * @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
   * @version $Revision: 1.1 $
   */
  public interface AutoNumber extends EJBObject {
  
        /**
         * Gets the current value of the autonumber.
         */
        public Integer getValue() throws RemoteException;
        
        /**
         * Sets the current value of the autonumber.
         */
        public void setValue(Integer value) throws RemoteException;
  }
  
  

Reply via email to