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