User: dsundstrom
  Date: 02/01/15 13:18:42

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata
                        JDBCQueryMetaDataFactory.java
  Log:
  Cleaned-up public interface. Now there is just a create it function,
  instead of a set of functions that must be called in a special order.
  
  Revision  Changes    Path
  1.9       +65 -15    
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCQueryMetaDataFactory.java
  
  Index: JDBCQueryMetaDataFactory.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/metadata/JDBCQueryMetaDataFactory.java,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- JDBCQueryMetaDataFactory.java     2001/11/26 03:12:27     1.8
  +++ JDBCQueryMetaDataFactory.java     2002/01/15 21:18:41     1.9
  @@ -9,7 +9,9 @@
   import java.lang.reflect.Method;
   import java.lang.reflect.Modifier;
   import java.util.ArrayList;
  +import java.util.HashMap;
   import java.util.Iterator;
  +import java.util.Map;
   
   import org.w3c.dom.Element;
   
  @@ -22,7 +24,7 @@
    * on the query specifiection type.
    *    
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dain Sundstrom</a>
  - * @version $Revision: 1.8 $
  + * @version $Revision: 1.9 $
    */
   public class JDBCQueryMetaDataFactory {
      private JDBCEntityMetaData entity;
  @@ -31,14 +33,54 @@
         this.entity = entity;
      }
   
  -   public JDBCQueryMetaData createJDBCQueryMetaData(
  -         QueryMetaData queryMetaData,
  -         Method method) throws DeploymentException  {
  +   public Map createJDBCQueryMetaData(QueryMetaData queryData)
  +         throws DeploymentException {
   
  -      return new JDBCQlQueryMetaData(queryMetaData, method);
  +      Method[] methods = getQueryMethods(queryData);
  +      Map queries = new HashMap(methods.length);
  +      for(int i=0; i<methods.length; i++) {
  +         queries.put(methods[i],
  +               new JDBCQlQueryMetaData(queryData, methods[i]));
  +      }
  +      return queries;
      }
  +
  +   public Map createJDBCQueryMetaData(
  +         Element queryElement,
  +         Map defaultValues,
  +         JDBCReadAheadMetaData readAhead) throws DeploymentException {
  +
  +      // get the query methods
  +      Method[] methods = getQueryMethods(queryElement);
  +      
  +      // read-ahead
  +      Element readAheadElement =
  +            MetaData.getOptionalChild(queryElement, "read-ahead");
  +      if(readAheadElement != null) {
  +         readAhead = new JDBCReadAheadMetaData(readAheadElement, readAhead);
  +      }
   
  -   public JDBCQueryMetaData createJDBCQueryMetaData(
  +      Map queries = new HashMap(methods.length);
  +      for(int i=0; i<methods.length; i++) {
  +         JDBCQueryMetaData defaultValue = 
  +               (JDBCQueryMetaData)defaultValues.get(methods[i]);
  +
  +         if(defaultValue == null) {
  +            throw new DeploymentException("Unknown query method : "+methods[i]);
  +         }
  +
  +         JDBCQueryMetaData jdbcQueryData = createJDBCQueryMetaData(
  +               defaultValue, 
  +               queryElement, 
  +               methods[i], 
  +               readAhead);
  +
  +         queries.put(methods[i], jdbcQueryData);
  +      }
  +      return queries;
  +   }
  +         
  +   private JDBCQueryMetaData createJDBCQueryMetaData(
            JDBCQueryMetaData jdbcQueryMetaData,
            Element queryElement,
            Method method,
  @@ -75,7 +117,7 @@
               "Error in query spedification for method " + method.getName());
      }
   
  -   public Method[] getQueryMethods(Element queryElement)
  +   private Method[] getQueryMethods(Element queryElement)
            throws DeploymentException {
   
         // query-method sub-element
  @@ -100,14 +142,14 @@
         return getQueryMethods(methodName, parameters);
      }
   
  -   public Method[] getQueryMethods(QueryMetaData queryData)
  +   private Method[] getQueryMethods(QueryMetaData queryData)
            throws DeploymentException {
         String methodName = queryData.getMethodName();
         Class[] parameters = convertToJavaClasses(queryData.getMethodParams());
         return getQueryMethods(methodName, parameters);
      }
   
  -   public Method[] getQueryMethods(
  +   private Method[] getQueryMethods(
            String methodName,
            Class parameters[]) throws DeploymentException {
   
  @@ -115,20 +157,28 @@
         ArrayList methods = new ArrayList(2);
         if(methodName.startsWith("ejbSelect")) {
            // bean method
  -         methods.add(getQueryMethod(
  -                  methodName,
  -                  parameters,
  -                  entity.getEntityClass()));
  +         Method method = getQueryMethod(
  +                  methodName, parameters, entity.getEntityClass());
  +         if(method != null) {
  +            methods.add(method);
  +         }
         } else {
            // remote home
            Class homeClass = entity.getHomeClass();
            if(homeClass != null) {
  -            methods.add(getQueryMethod(methodName, parameters, homeClass));
  +            Method method = getQueryMethod(methodName, parameters, homeClass);
  +            if(method != null) {
  +               methods.add(method);
  +            }
            }
            // local home
            Class localHomeClass = entity.getLocalHomeClass();
            if(localHomeClass != null) {
  -            methods.add(getQueryMethod(methodName, parameters, localHomeClass));
  +            Method method = getQueryMethod(
  +                  methodName, parameters, localHomeClass);
  +            if(method != null) {
  +               methods.add(method);
  +            }
            }
         }          
   
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to