You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by jo...@apache.org on 2010/08/09 10:10:50 UTC
svn commit: r983550 [2/2] - in /labs/jaxmas/trunk/JaxMas: ./ .settings/
src/main/java/org/apache/labs/jaxmas/registry/
src/main/java/org/apache/labs/jaxmas/registry/accessor/
src/main/java/org/apache/labs/jaxmas/registry/infomodel/
src/main/java/org/ap...
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java Mon Aug 9 08:10:48 2010
@@ -223,16 +223,19 @@ public abstract class AbstractDbDriver i
return result;
}
- public void deleteInternationalString(Key pKey, InternationalStringImpl.Type pType) throws JAXRException {
+ @Override
+ public void deleteInternationalString(Key pKey, InternationalStringImpl.Type pType) throws JAXRException {
run("DELETE FROM LocalizedStrings WHERE roKey=? AND lsType=?", pKey, pType); //$NON-NLS-1$
}
- public void updateInternationalString(Key pKey, InternationalStringImpl.Type pType, final InternationalString pValue) throws JAXRException {
+ @Override
+ public void updateInternationalString(Key pKey, InternationalStringImpl.Type pType, final InternationalString pValue) throws JAXRException {
deleteInternationalString(pKey, pType);
insertInternationalString(pKey, pType, pValue);
}
- public void insertInternationalString(final Key pKey, final InternationalStringImpl.Type pType,
+ @Override
+ public void insertInternationalString(final Key pKey, final InternationalStringImpl.Type pType,
final InternationalString pValue) throws JAXRException {
if (pValue != null) {
new ObjStmtUser("INSERT INTO LocalizedStrings (roKey, lsType, locale, charset, val) VALUES (?, ?, ?, ?, ?)"){ //$NON-NLS-1$
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTargetPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTargetPredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTargetPredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTargetPredicate.java Mon Aug 9 08:10:48 2010
@@ -28,7 +28,7 @@ import javax.xml.registry.infomodel.Key;
/**
* A predicate for searching associations by target.
*/
-public class AssociationTargetPredicate implements Predicate {
+public class AssociationTargetPredicate implements FilterPredicate {
private final Object key;
/**
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTypePredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTypePredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTypePredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationTypePredicate.java Mon Aug 9 08:10:48 2010
@@ -28,7 +28,7 @@ import javax.xml.registry.JAXRException;
/**
* A predicate for searching associations by target.
*/
-public class AssociationTypePredicate implements Predicate {
+public class AssociationTypePredicate implements FilterPredicate {
private final Collection<?> keys;
/**
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/CustomObjectTypePredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/CustomObjectTypePredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/CustomObjectTypePredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/CustomObjectTypePredicate.java Mon Aug 9 08:10:48 2010
@@ -31,7 +31,7 @@ import org.apache.labs.jaxmas.registry.a
/**
* Predicate for restricting a search to a particular registry object type.
*/
-public class CustomObjectTypePredicate implements Predicate {
+public class CustomObjectTypePredicate extends RegistryObjectTypePredicate {
private final Collection<String> types;
/**
@@ -39,6 +39,7 @@ public class CustomObjectTypePredicate i
* type.
*/
public CustomObjectTypePredicate(Collection<String> pTypes) {
+ super(ObjectTypes.REGISTRY_ENTRY);
if (pTypes == null || pTypes.isEmpty()) {
throw new IllegalArgumentException("The list of custom object types must not be null."); //$NON-NLS-1$
}
@@ -54,6 +55,8 @@ public class CustomObjectTypePredicate i
@Override
public void add(StringBuilder pBuffer, List<Object> pParameters) throws SQLException, JAXRException {
+ super.add(pBuffer, pParameters);
+ pBuffer.append(" AND ");
final Collection<String> customTypes = getTypes();
pBuffer.append("re.customType IN (SELECT ctro.roKey FROM RegistryObjects ctro JOIN Concepts ctco ON ctro.roType=? AND ctro.roKey=ctco.roKey WHERE ctro.roOwnerRestricting=? AND "); //$NON-NLS-1$
pParameters.add(new Integer(ObjectTypes.CONCEPT.ordinal()));
Added: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/FilterPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/FilterPredicate.java?rev=983550&view=auto
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/FilterPredicate.java (added)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/FilterPredicate.java Mon Aug 9 08:10:48 2010
@@ -0,0 +1,10 @@
+package org.apache.labs.jaxmas.registry.sql;
+
+
+/**
+ * Marker interface, which indicates that this predicate is used
+ * to filter the result set.
+ */
+public interface FilterPredicate extends Predicate {
+ // No additional methods, or fields.
+}
Propchange: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/FilterPredicate.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/HsqlDbDriver.java Mon Aug 9 08:10:48 2010
@@ -43,12 +43,15 @@ public class HsqlDbDriver extends Abstra
@Override
public boolean isUnknownTableError(SQLException pException) {
- if ("S0002".equals(pException.getSQLState()) && pException.getErrorCode() == -22) { //$NON-NLS-1$
+ if ("S0002".equals(pException.getSQLState()) && pException.getErrorCode() == -22) { // HsqlDb 1
return true;
}
- if ("S1000".equals(pException.getSQLState()) && pException.getErrorCode() == -35) { //$NON-NLS-1$
+ if ("S1000".equals(pException.getSQLState()) && pException.getErrorCode() == -35) { // HsqlDb 1
return true;
}
+ if ("42501".equals(pException.getSQLState()) && pException.getErrorCode() == -5501) { // HsqlDb 2
+ return true;
+ }
return false;
}
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/KeyPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/KeyPredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/KeyPredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/KeyPredicate.java Mon Aug 9 08:10:48 2010
@@ -28,7 +28,7 @@ import javax.xml.registry.JAXRException;
/**
* A predicate for the registry objects key.
*/
-public class KeyPredicate implements Predicate {
+public class KeyPredicate implements FilterPredicate {
private final Collection<?> keys;
/**
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/NamePredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/NamePredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/NamePredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/NamePredicate.java Mon Aug 9 08:10:48 2010
@@ -30,7 +30,7 @@ import org.apache.labs.jaxmas.registry.i
/**
* A predicate for the registry objects name.
*/
-public class NamePredicate implements Predicate {
+public class NamePredicate implements FilterPredicate {
private final Collection<String> namePatterns;
/**
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OwnerPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OwnerPredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OwnerPredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OwnerPredicate.java Mon Aug 9 08:10:48 2010
@@ -28,7 +28,7 @@ import javax.xml.registry.infomodel.Key;
/**
* A predicate for the objects owner.
*/
-public class OwnerPredicate implements Predicate {
+public class OwnerPredicate implements FilterPredicate {
private final Object key;
private final boolean restricting;
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java Mon Aug 9 08:10:48 2010
@@ -36,6 +36,7 @@ import javax.xml.registry.infomodel.Regi
import org.apache.labs.jaxmas.registry.accessor.ROAccessor;
import org.apache.labs.jaxmas.registry.accessor.ROAccessors;
+import org.apache.labs.jaxmas.registry.accessor.ROAccessors.ObjectTypes;
import org.apache.labs.jaxmas.registry.infomodel.AssociationImpl;
import org.apache.labs.jaxmas.registry.infomodel.ClassificationImpl;
import org.apache.labs.jaxmas.registry.infomodel.KeyImpl;
@@ -50,144 +51,166 @@ import org.apache.labs.jaxmas.registry.i
* objects.
*/
public class RegistryObjectLoader {
- private static final ExtensionHandler[] EXTENSION_HANDLERS_ASSOCIATION = new ExtensionHandler[]{
- new AssociationExtensionHandler(ROAccessors.ObjectTypes.ASSOCIATION)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_CLASSIFICATION = new ExtensionHandler[]{
- new ClassificationExtensionHandler(ROAccessors.ObjectTypes.CLASSIFICATION)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_EXTRINSIC_OBJECT = new ExtensionHandler[]{
- new RegistryEntryExtensionHandler(ROAccessors.ObjectTypes.EXTRINSIC_OBJECT)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_SERVICE = new ExtensionHandler[]{
- new RegistryEntryExtensionHandler(ROAccessors.ObjectTypes.SERVICE)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_REGISTRY_PACKAGE = new ExtensionHandler[]{
- new RegistryEntryExtensionHandler(ROAccessors.ObjectTypes.REGISTRY_PACKAGE)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_REGISTRY_ENTRY = new ExtensionHandler[]{
- new RegistryEntryExtensionHandler(ROAccessors.ObjectTypes.REGISTRY_ENTRY)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_CLASSIFICATION_SCHEME = new ExtensionHandler[]{
- new RegistryEntryExtensionHandler(ROAccessors.ObjectTypes.CLASSIFICATION_SCHEME)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_CONCEPT = new ExtensionHandler[]{
- new ConceptExtensionHandler(ROAccessors.ObjectTypes.CONCEPT)
- };
- private static final ExtensionHandler[] EXTENSION_HANDLERS_NULL_TYPE = new ExtensionHandler[]{
- new ConceptExtensionHandler(null),
- new RegistryEntryExtensionHandler(null),
- new AssociationExtensionHandler(null),
- new ClassificationExtensionHandler(null)
+ private static final TableHandler[] EXTENSION_HANDLERS_REGISTRY_OBJECT = new TableHandler[]{
+ new DefaultTableHandler()
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_ASSOCIATION = new TableHandler[]{
+ new DefaultTableHandler(),
+ new AssociationTableHandler(ROAccessors.ObjectTypes.ASSOCIATION)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_CLASSIFICATION = new TableHandler[]{
+ new DefaultTableHandler(),
+ new ClassificationTableHandler(ROAccessors.ObjectTypes.CLASSIFICATION)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_EXTRINSIC_OBJECT = new TableHandler[]{
+ new DefaultTableHandler(),
+ new RegistryEntryTableHandler(ROAccessors.ObjectTypes.EXTRINSIC_OBJECT)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_SERVICE = new TableHandler[]{
+ new DefaultTableHandler(),
+ new RegistryEntryTableHandler(ROAccessors.ObjectTypes.SERVICE)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_REGISTRY_PACKAGE = new TableHandler[]{
+ new DefaultTableHandler(),
+ new RegistryEntryTableHandler(ROAccessors.ObjectTypes.REGISTRY_PACKAGE)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_REGISTRY_ENTRY = new TableHandler[]{
+ new DefaultTableHandler(),
+ new RegistryEntryTableHandler(ROAccessors.ObjectTypes.REGISTRY_ENTRY)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_CLASSIFICATION_SCHEME = new TableHandler[]{
+ new DefaultTableHandler(),
+ new RegistryEntryTableHandler(ROAccessors.ObjectTypes.CLASSIFICATION_SCHEME)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_CONCEPT = new TableHandler[]{
+ new DefaultTableHandler(),
+ new ConceptTableHandler(ROAccessors.ObjectTypes.CONCEPT)
+ };
+ private static final TableHandler[] EXTENSION_HANDLERS_NULL_TYPE = new TableHandler[]{
+ new DefaultTableHandler(),
+ new ConceptTableHandler(null),
+ new RegistryEntryTableHandler(null),
+ new AssociationTableHandler(null),
+ new ClassificationTableHandler(null)
};
-
- /**
- * Extension handlers are used for type specific extension tables.
- */
- public static abstract class ExtensionHandler {
- private final ROAccessors.ObjectTypes objectType;
-
- /**
- * Creates a new instance with the given object type.
- */
- public ExtensionHandler(ROAccessors.ObjectTypes pObjectType) {
- objectType = pObjectType;
- }
-
- /**
- * Returns the extension handlers object type. May be null, if the
- * object type is not specified.
- */
- protected ROAccessors.ObjectTypes getObjectType() {
- return objectType;
- }
-
- /**
- * Called to extend the column list of the SQL query for reading registry objects.
- */
- protected abstract int addColumns(StringBuilder pBuilder, int pIndex);
- /**
- * Called to extend the FROM clause of the SQL query for reading registry objects.
- */
- protected abstract void addJoin(StringBuilder pBuilder, List<?> pParameters);
- /**
- * Called to pull data from the resul set when reading registry objects.
- */
- protected abstract void load(ResultSet pResultSet, RegistryObject pRegistryObject, int pIndex)
- throws SQLException, JAXRException;
- }
/**
* Extension handler for concepts.
*/
- public static class ConceptExtensionHandler extends ExtensionHandler {
+ public static class ConceptTableHandler extends TableHandler {
/**
* Creates a new instance with the given object type.
*/
- public ConceptExtensionHandler(ROAccessors.ObjectTypes pObjectType) {
+ public ConceptTableHandler(ROAccessors.ObjectTypes pObjectType) {
super(pObjectType);
}
@Override
- protected int addColumns(StringBuilder pBuilder, int pIndex) {
- pBuilder.append(", c.value"); //$NON-NLS-1$
+ protected int addColumns(StringBuilder pBuilder, String pPrefix, int pIndex) {
+ final String table = getTable(pPrefix, "c");
+ pBuilder.append(", ");
+ pBuilder.append(table);
+ pBuilder.append(".value");
return pIndex + 1;
}
@Override
- protected void addJoin(StringBuilder pBuilder, List<?> pParameters) {
+ protected void addJoin(StringBuilder pBuilder, String pPrefix, List<?> pParameters) {
+ final String table = getTable(pPrefix, "c");
+ final String roTable = getRoTable(pPrefix);
if (getObjectType() == null) {
- pBuilder.append(" LEFT OUTER"); //$NON-NLS-1$
+ pBuilder.append(" LEFT OUTER");
}
- pBuilder.append(" JOIN Concepts c ON ro.roType="); //$NON-NLS-1$
+ pBuilder.append(" JOIN Concepts ");
+ pBuilder.append(table);
+ pBuilder.append(" ON ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roType="); //$NON-NLS-1$
pBuilder.append(String.valueOf(ROAccessors.ObjectTypes.CONCEPT.ordinal()));
- pBuilder.append(" AND ro.roKey=c.roKey"); //$NON-NLS-1$
+ pBuilder.append(" AND "); //$NON-NLS-1$
+ pBuilder.append(roTable);
+ pBuilder.append(".roKey="); //$NON-NLS-1$
+ pBuilder.append(table);
+ pBuilder.append(".roKey"); //$NON-NLS-1$
}
@Override
- protected void load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
+ protected int load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
throws SQLException, JAXRException {
if (pRegistryObject instanceof Concept) {
final Concept concept = (Concept) pRegistryObject;
concept.setValue(pResultSet.getString(pIndex));
}
+ return pIndex+1;
}
}
/**
* Extension handler for registry entries.
*/
- public static class RegistryEntryExtensionHandler extends ExtensionHandler {
+ public static class RegistryEntryTableHandler extends TableHandler {
/**
* Creates a new instance with the given object type.
*/
- public RegistryEntryExtensionHandler(ROAccessors.ObjectTypes pObjectType) {
+ public RegistryEntryTableHandler(ROAccessors.ObjectTypes pObjectType) {
super(pObjectType);
}
@Override
- protected int addColumns(StringBuilder pBuilder, int pIndex) {
- pBuilder.append(", re.customType, re.expiration, re.status, re.stability, re.majorVersion, re.minorVersion, re.userVersion"); //$NON-NLS-1$
+ protected int addColumns(StringBuilder pBuilder, String pPrefix, int pIndex) {
+ final String table = getTable(pPrefix, "re");
+ pBuilder.append(", ");
+ pBuilder.append(table);
+ pBuilder.append(".customType, ");
+ pBuilder.append(table);
+ pBuilder.append(".expiration, ");
+ pBuilder.append(table);
+ pBuilder.append(".status, ");
+ pBuilder.append(table);
+ pBuilder.append(".stability, ");
+ pBuilder.append(table);
+ pBuilder.append(".majorVersion, ");
+ pBuilder.append(table);
+ pBuilder.append(".minorVersion, ");
+ pBuilder.append(table);
+ pBuilder.append(".userVersion");
return pIndex + 7;
}
@Override
- protected void addJoin(StringBuilder pBuilder, List<?> pParameters) {
+ protected void addJoin(StringBuilder pBuilder, String pPrefix, List<?> pParameters) {
+ final String table = getTable(pPrefix, "re");
+ final String roTable = getRoTable(pPrefix);
final ROAccessors.ObjectTypes objectType = getObjectType();
if (objectType == null) {
- pBuilder.append(" LEFT OUTER JOIN RegistryEntries re ON ro.roType="); //$NON-NLS-1$
- pBuilder.append(String.valueOf(ROAccessors.ObjectTypes.CLASSIFICATION_SCHEME.ordinal()));
- pBuilder.append(" OR ro.roType="); //$NON-NLS-1$
- pBuilder.append(String.valueOf(ROAccessors.ObjectTypes.REGISTRY_ENTRY.ordinal()));
+ pBuilder.append(" LEFT OUTER JOIN RegistryEntries ");
+ pBuilder.append(table);
+ pBuilder.append(" ON (");
+ pBuilder.append(roTable);
+ pBuilder.append(".roType=");
+ pBuilder.append(ROAccessors.ObjectTypes.CLASSIFICATION_SCHEME.ordinal());
+ pBuilder.append(" OR ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roType=");
+ pBuilder.append(ROAccessors.ObjectTypes.REGISTRY_ENTRY.ordinal());
+ pBuilder.append(")");
} else {
- pBuilder.append(" JOIN RegistryEntries re ON ro.roType="); //$NON-NLS-1$
+ pBuilder.append(" JOIN RegistryEntries ");
+ pBuilder.append(table);
+ pBuilder.append(" ON ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roType=");
pBuilder.append(String.valueOf(objectType.ordinal()));
}
- pBuilder.append(" AND ro.roKey=re.roKey"); //$NON-NLS-1$
+ pBuilder.append(" AND ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roKey=");
+ pBuilder.append(table);
+ pBuilder.append(".roKey");
}
@Override
- protected void load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
+ protected int load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
throws SQLException, JAXRException {
if (pRegistryObject instanceof RegistryEntry) {
final RegistryEntryImpl<?> re = (RegistryEntryImpl<?>) pRegistryObject;
@@ -198,38 +221,108 @@ public class RegistryObjectLoader {
re.setMinorVersion(pResultSet.getInt(pIndex+5));
re.setUserVersion(pResultSet.getString(pIndex+6));
}
+ return pIndex+7;
+ }
+ }
+
+ /**
+ * Table handlers for standard registry objects.
+ */
+ public static class DefaultTableHandler extends TableHandler {
+ public DefaultTableHandler() {
+ super(null);
+ }
+
+ @Override
+ protected int addColumns(StringBuilder pBuilder, String pPrefix, int pIndex) {
+ final String table = getRoTable(pPrefix);
+ pBuilder.append(table);
+ pBuilder.append(".roKey, ");
+ pBuilder.append(table);
+ pBuilder.append(".roType, ");
+ pBuilder.append(table);
+ pBuilder.append(".roOwnerRestricting, ");
+ pBuilder.append(table);
+ pBuilder.append(".roOwnerCascading, ");
+ pBuilder.append(table);
+ pBuilder.append(".pos");
+ return pIndex + 5;
+ }
+
+ @Override
+ protected void addJoin(StringBuilder pBuilder, String pPrefix, List<?> pParameters) {
+ throw new IllegalStateException("Join not supported"); //$NON-NLS-1$
+ }
+
+ @Override
+ protected int load(ResultSet pResultSet, RegistryObject pRegistryObject, int pIndex)
+ throws SQLException, JAXRException {
+ final RegistryObjectImpl<?> ro = (RegistryObjectImpl<?>) pRegistryObject;
+ ro.setState(ROState.loaded);
+
+ if (pRegistryObject instanceof OwnedRegistryObject<?>) {
+ final OwnedRegistryObject<?> oro = (OwnedRegistryObject<?>) ro;
+ final String ownerKeyRestricting = pResultSet.getString(pIndex+2);
+ final String ownerKeyCascading = pResultSet.getString(pIndex+3);
+ assert(ownerKeyRestricting == null || ownerKeyCascading == null);
+ final String ownerKey = ownerKeyCascading == null ? ownerKeyRestricting : ownerKeyCascading;
+ assert(ownerKey != null);
+ oro.setOwner(new KeyImpl(ownerKey));
+ int pos = pResultSet.getInt(pIndex+4);
+ assert(!pResultSet.wasNull());
+ oro.setPosition(pos);
+ }
+
+ return pIndex+5;
}
}
/**
* Extension handler for associations.
*/
- public static class AssociationExtensionHandler extends ExtensionHandler {
+ public static class AssociationTableHandler extends TableHandler {
/**
* Creates a new instance with the given object type.
*/
- public AssociationExtensionHandler(ROAccessors.ObjectTypes pObjectType) {
+ public AssociationTableHandler(ROAccessors.ObjectTypes pObjectType) {
super(pObjectType);
}
@Override
- protected int addColumns(StringBuilder pBuilder, int pIndex) {
- pBuilder.append(", assoc.roKeyTarget, assoc.roKeyType, assoc.num"); //$NON-NLS-1$
+ protected int addColumns(StringBuilder pBuilder, String pPrefix, int pIndex) {
+ final String table = getTable(pPrefix, "assoc");
+ pBuilder.append(", ");
+ pBuilder.append(table);
+ pBuilder.append(".roKeyTarget, ");
+ pBuilder.append(table);
+ pBuilder.append(".roKeyType, ");
+ pBuilder.append(table);
+ pBuilder.append(".num");
return pIndex + 3;
}
@Override
- protected void addJoin(StringBuilder pBuilder, List<?> pParameters) {
+ protected void addJoin(StringBuilder pBuilder, String pPrefix, List<?> pParameters) {
+ final String table = getTable(pPrefix, "assoc");
+ final String roTable = getRoTable(pPrefix);
if (getObjectType() == null) {
pBuilder.append(" LEFT OUTER"); //$NON-NLS-1$
}
- pBuilder.append(" JOIN Associations assoc ON ro.roType="); //$NON-NLS-1$
- pBuilder.append(String.valueOf(ROAccessors.ObjectTypes.ASSOCIATION.ordinal()));
- pBuilder.append(" AND ro.roKey=assoc.roKey"); //$NON-NLS-1$
+ pBuilder.append(" JOIN Associations ");
+ pBuilder.append(table);
+ pBuilder.append(" ON ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roType=");
+ pBuilder.append(ROAccessors.ObjectTypes.ASSOCIATION.ordinal());
+ pBuilder.append(" AND ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roKey=");
+ pBuilder.append(table);
+ pBuilder.append(".roKey");
}
@Override
- protected void load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
+ protected int load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
throws SQLException, JAXRException {
if (pRegistryObject instanceof Association) {
final AssociationImpl assoc = (AssociationImpl) pRegistryObject;
@@ -242,38 +335,54 @@ public class RegistryObjectLoader {
assoc.setNum(pResultSet.getInt(pIndex+2));
assert(!pResultSet.wasNull());
}
+ return pIndex+3;
}
}
/**
* Extension handler for classifications.
*/
- public static class ClassificationExtensionHandler extends ExtensionHandler {
+ public static class ClassificationTableHandler extends TableHandler {
/**
* Creates a new instance with the given object type.
*/
- public ClassificationExtensionHandler(ROAccessors.ObjectTypes pObjectType) {
+ public ClassificationTableHandler(ROAccessors.ObjectTypes pObjectType) {
super(pObjectType);
}
@Override
- protected int addColumns(StringBuilder pBuilder, int pIndex) {
- pBuilder.append(", cl.roKeyConcept, cl.num"); //$NON-NLS-1$
+ protected int addColumns(StringBuilder pBuilder, String pPrefix, int pIndex) {
+ final String table = getTable(pPrefix, "cl");
+ pBuilder.append(", ");
+ pBuilder.append(table);
+ pBuilder.append(".roKeyConcept, ");
+ pBuilder.append(table);
+ pBuilder.append(".num");
return pIndex + 2;
}
@Override
- protected void addJoin(StringBuilder pBuilder, List<?> pParameters) {
+ protected void addJoin(StringBuilder pBuilder, String pPrefix, List<?> pParameters) {
+ final String table = getTable(pPrefix, "cl");
+ final String roTable = getRoTable(pPrefix);
if (getObjectType() == null) {
pBuilder.append(" LEFT OUTER"); //$NON-NLS-1$
}
- pBuilder.append(" JOIN Classifications cl ON ro.roType="); //$NON-NLS-1$
- pBuilder.append(String.valueOf(ROAccessors.ObjectTypes.CLASSIFICATION.ordinal()));
- pBuilder.append(" AND ro.roKey=cl.roKey"); //$NON-NLS-1$
+ pBuilder.append(" JOIN Classifications ");
+ pBuilder.append(table);
+ pBuilder.append(" ON ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roType=");
+ pBuilder.append(ROAccessors.ObjectTypes.CLASSIFICATION.ordinal());
+ pBuilder.append(" AND ");
+ pBuilder.append(roTable);
+ pBuilder.append(".roKey=");
+ pBuilder.append(table);
+ pBuilder.append(".roKey");
}
@Override
- protected void load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
+ protected int load(final ResultSet pResultSet, final RegistryObject pRegistryObject, int pIndex)
throws SQLException, JAXRException {
if (pRegistryObject instanceof Classification) {
final ClassificationImpl cl = (ClassificationImpl) pRegistryObject;
@@ -283,42 +392,46 @@ public class RegistryObjectLoader {
cl.setNum(pResultSet.getInt(pIndex+1));
assert(!pResultSet.wasNull());
}
+ return pIndex+2;
}
}
-
- private final String query;
- private int numPredicates;
- private final Object[] parameters;
- private final ROAccessors.ObjectTypes objectType;
- private final ExtensionHandler[] extensionHandlers;
- private final int[] indexes;
-
- private static ROAccessors.ObjectTypes getObjectType(ROAccessors.ObjectTypes pObjectType,
- Collection<Predicate> pPredicates) {
- ROAccessors.ObjectTypes type = pObjectType;
- if (pPredicates != null) {
- for (Predicate predicate : pPredicates) {
- if (predicate instanceof RegistryObjectTypePredicate) {
- ROAccessors.ObjectTypes predicateType = ((RegistryObjectTypePredicate) predicate).getType();
- if (type == null) {
- type = predicateType;
- } else if (type != predicateType) {
- throw new IllegalStateException("Different object types specified."); //$NON-NLS-1$
- }
- }
- }
+
+ public static class RegistryObjectQuery {
+ private final ROAccessors.ObjectTypes objectType;
+ private final String prefix;
+ private final Collection<FilterPredicate> predicates;
+ private final TableHandler[] tableHandlers;
+
+ public RegistryObjectQuery(ROAccessors.ObjectTypes pObjectType, String pPrefix, Collection<FilterPredicate> pPredicates) {
+ objectType = pObjectType;
+ prefix = pPrefix;
+ predicates = pPredicates;
+ tableHandlers = getExtensionHandlers(pObjectType);
}
- return type;
- }
- /**
- * Returns the set of extension handlers.
- */
- protected ExtensionHandler[] getExtensionHandlers() {
- return extensionHandlers;
+ public TableHandler[] getTableHandlers() {
+ return tableHandlers;
+ }
+
+ public String getPrefix() {
+ return prefix;
+ }
+
+ public ROAccessors.ObjectTypes getObjectType() {
+ return objectType;
+ }
+
+ public Collection<FilterPredicate> getPredicates() {
+ return predicates;
+ }
}
+
+ private final String query;
+ private final Object[] parameters;
+ private final RegistryObjectQuery[] queries;
+ private String sep = " WHERE ";
- private static ExtensionHandler[] getExtensionHandlers(ROAccessors.ObjectTypes pObjectType) {
+ private static TableHandler[] getExtensionHandlers(ROAccessors.ObjectTypes pObjectType) {
if (pObjectType == null) {
return EXTENSION_HANDLERS_NULL_TYPE;
}
@@ -339,127 +452,152 @@ public class RegistryObjectLoader {
return EXTENSION_HANDLERS_CLASSIFICATION;
case ASSOCIATION:
return EXTENSION_HANDLERS_ASSOCIATION;
+ case AUDITABLE_EVENT:
+ case EXTERNAL_IDENTIFIER:
+ case EXTERNAL_LINK:
+ case ORGANIZATION:
+ case SERVICE_BINDING:
+ case SPECIFICATION_LINK:
+ case USER:
+ return EXTENSION_HANDLERS_REGISTRY_OBJECT;
default:
return null;
}
}
-
+
+ static String getTable(String pPrefix, String pSuffix) {
+ if (pPrefix == null || pPrefix.length() == 0) {
+ return pSuffix;
+ }
+ return pPrefix + pSuffix;
+ }
+
+ static String getRoTable(String pPrefix) {
+ return getTable(pPrefix, "ro");
+ }
+
/**
- * Creates a new instance, which is searching for the given object type.
+ * Creates a new instance, which is searching for the given object types.
*/
- public RegistryObjectLoader(ROAccessors.ObjectTypes pObjectType, Collection<Predicate> pPredicates)
+ public RegistryObjectLoader(RegistryObjectQuery[] pQueries, Collection<OrderPredicate> pOrderPredicates)
throws JAXRException, SQLException {
- objectType = getObjectType(pObjectType, pPredicates);
- extensionHandlers = getExtensionHandlers(objectType);
+ queries = pQueries;
final StringBuilder sb = new StringBuilder();
- sb.append("SELECT ro.roKey, ro.roOwnerRestricting, ro.roOwnerCascading, ro.pos, ro.roType"); //$NON-NLS-1$
- if (extensionHandlers == null) {
- indexes = null;
- } else {
- indexes = new int[extensionHandlers.length];
- int index = 6;
- for (int i = 0; i < extensionHandlers.length; i++) {
- indexes[i] = index;
- index = extensionHandlers[i].addColumns(sb, index);
+ sb.append("SELECT ");
+ int index = 1;
+ for (RegistryObjectQuery q : queries) {
+ final TableHandler[] tableHandlers = q.getTableHandlers();
+ index = tableHandlers[0].addColumns(sb, q.getPrefix(), index);
+ }
+ for (RegistryObjectQuery q : queries) {
+ final TableHandler[] tableHandlers = q.getTableHandlers();
+ final String prefix = q.getPrefix();
+ for (int j = 1; j < tableHandlers.length; j++) {
+ index = tableHandlers[j].addColumns(sb, prefix, index);
}
}
- sb.append(" FROM RegistryObjects ro"); //$NON-NLS-1$
final List<Object> parameterList = new ArrayList<Object>();
- if (extensionHandlers != null) {
- for (int i = 0; i < extensionHandlers.length; i++) {
- extensionHandlers[i].addJoin(sb, parameterList);
- }
- }
- if (objectType != null) {
- numPredicates++;
- sb.append(" WHERE ro.roType=?"); //$NON-NLS-1$
- parameterList.add(objectType);
- }
- if (pPredicates != null) {
- for (Predicate predicate : pPredicates) {
- if (predicate instanceof RegistryObjectTypePredicate) {
- continue;
- }
- if (predicate instanceof OrderPredicate) {
- continue;
- }
- if (numPredicates++ == 0) {
- sb.append(" WHERE "); //$NON-NLS-1$
- } else {
- sb.append(" AND "); //$NON-NLS-1$
+ for (int i = 0; i < queries.length; i++) {
+ final RegistryObjectQuery q = queries[i];
+ final String table = getRoTable(q.getPrefix());
+ if (i > 0) {
+ sb.append(" JOIN RegistryObjects ");
+ sb.append(table);
+ final ObjectTypes objectType = q.getObjectType();
+ String objectTypeSep = " ON ";
+ if (objectType != null) {
+ sb.append(objectTypeSep);
+ objectTypeSep = " AND ";
+ sb.append(table);
+ sb.append(".roType=");
+ sb.append(objectType.ordinal());
}
- predicate.add(sb, parameterList);
+ final Collection<FilterPredicate> predicates = q.getPredicates();
+ appendToQuery(predicates, parameterList, objectTypeSep, sb, false);
+ } else {
+ sb.append(" FROM RegistryObjects ");
+ sb.append(table);
}
- int i = 0;
- for (Predicate predicate : pPredicates) {
- if (predicate instanceof OrderPredicate) {
- if (i++ == 0) {
- sb.append(" ORDER BY "); //$NON-NLS-1$
- } else {
- sb.append(", "); //$NON-NLS-1$
- }
- predicate.add(sb, parameterList);
- }
+ }
+ for (RegistryObjectQuery q : queries) {
+ final TableHandler[] otTableHandlers = q.getTableHandlers();
+ for (int j = 1; j < otTableHandlers.length; j++) {
+ otTableHandlers[j].addJoin(sb, null, parameterList);
}
}
+ final RegistryObjectQuery q = queries[0];
+ final ObjectTypes objectType = q.getObjectType();
+ if (objectType != null) {
+ final String table = getRoTable(q.getPrefix());
+ sb.append(sep);
+ sep = " AND ";
+ sb.append(table);
+ sb.append(".roType=");
+ sb.append(objectType.ordinal());
+ }
+ final Collection<FilterPredicate> predicates = q.getPredicates();
+ appendToQuery(predicates, parameterList, sep, sb, true);
+ appendToQuery(pOrderPredicates, parameterList, sb);
parameters = parameterList.toArray();
query = sb.toString();
}
/**
- * Creates a new instance with the given predicate list.
+ * Creates a new instance, which is searching for the given object type.
*/
- public RegistryObjectLoader(Collection<Predicate> pPredicates)
- throws SQLException, JAXRException {
- this(null, pPredicates);
+ public RegistryObjectLoader(ROAccessors.ObjectTypes pObjectType, Collection<FilterPredicate> pFilterPredicates, Collection<OrderPredicate> pOrderPredicates)
+ throws JAXRException, SQLException {
+ this(new RegistryObjectQuery[]{new RegistryObjectQuery(pObjectType, null, pFilterPredicates)}, pOrderPredicates);
}
/**
* Called to read multiple result objects by specifying additional predicates.
*/
public <RO extends RegistryObject> List<RegistryObject> getResultList(RegistryService pRegistryService,
- Collection<Predicate> pPredicates) throws JAXRException {
- if (pPredicates == null || pPredicates.size() == 0) {
+ Collection<FilterPredicate> pFilterPredicates, Collection<OrderPredicate> pOrderPredicates) throws JAXRException {
+ if ((pFilterPredicates == null || pFilterPredicates.size() == 0) &&
+ (pOrderPredicates == null || pOrderPredicates.size() == 0)) {
return getResultList(pRegistryService, query, parameters);
}
final StringBuilder sb = new StringBuilder(query);
- final List<Object> params = appendToQuery(pPredicates, sb);
- return getResultList(pRegistryService, sb.toString(), params.toArray());
- }
-
- private List<Object> appendToQuery(Collection<Predicate> pPredicates,
- final StringBuilder sb) throws JAXRException {
- final List<Object> params = new ArrayList<Object>(Arrays.asList(parameters));
- int numPreds = numPredicates;
+ final List<Object> params = new ArrayList<Object>();
+ params.addAll(Arrays.asList(parameters));
try {
- for (Predicate predicate : pPredicates) {
- if (predicate instanceof RegistryObjectTypePredicate) {
- if (((RegistryObjectTypePredicate) predicate).getType() == objectType) {
- continue;
- }
- throw new IllegalStateException("A different object type must not be specified."); //$NON-NLS-1$
- }
- if (predicate instanceof OrderPredicate) {
- continue;
- }
- sb.append((numPreds++ == 0) ? " WHERE " : " AND "); //$NON-NLS-1$ //$NON-NLS-2$
- predicate.add(sb, params);
- }
- int i = 0;
- for (Predicate predicate : pPredicates) {
- if (predicate instanceof OrderPredicate) {
- if (i++ == 0) {
- sb.append(" ORDER BY "); //$NON-NLS-1$
- } else {
- sb.append(", "); //$NON-NLS-1$
- }
- predicate.add(sb, params);
- }
- }
+ appendToQuery(pFilterPredicates, params, sep, sb, false);
+ appendToQuery(pOrderPredicates, params, sb);
+ return getResultList(pRegistryService, sb.toString(), params.toArray());
} catch (SQLException e) {
throw new JAXRException(e);
}
- return params;
+ }
+
+ private void appendToQuery(Collection<OrderPredicate> pPredicates,
+ final List<Object> pParams, final StringBuilder sb) throws JAXRException, SQLException {
+ if (pPredicates != null) {
+ String mySep = " ORDER BY ";
+ for (OrderPredicate predicate : pPredicates) {
+ sb.append(mySep);
+ mySep = ", ";
+ predicate.add(sb, pParams);
+ }
+ }
+ }
+
+ private void appendToQuery(Collection<FilterPredicate> pPredicates,
+ final List<Object> pParams, String pSep, final StringBuilder sb,
+ boolean pModifySep)
+ throws JAXRException, SQLException {
+ if (pPredicates != null) {
+ String mySep = pSep;
+ for (FilterPredicate predicate : pPredicates) {
+ sb.append(mySep);
+ mySep = " AND ";
+ if (pModifySep) {
+ sep = mySep;
+ }
+ predicate.add(sb, pParams);
+ }
+ }
}
/**
@@ -478,7 +616,7 @@ public class RegistryObjectLoader {
protected void action(ResultSet pResultSet) throws JAXRException,
SQLException {
while (pResultSet.next()) {
- int type = pResultSet.getInt(5);
+ int type = pResultSet.getInt(2);
assert(!pResultSet.wasNull());
final ROAccessor<?> roAcc = ROAccessors.getROAccessor(type);
final String key = pResultSet.getString(1);
@@ -498,14 +636,19 @@ public class RegistryObjectLoader {
*/
@SuppressWarnings("unchecked")
public <RO extends RegistryObject> RO getResultObject(RegistryService pRegistryService,
- Collection<Predicate> pPredicates) throws JAXRException {
+ Collection<FilterPredicate> pPredicates) throws JAXRException {
final RegistryObject ro;
if (pPredicates == null || pPredicates.isEmpty()) {
ro = getResultObject(pRegistryService, query, parameters);
} else {
final StringBuilder sb = new StringBuilder(query);
- final List<Object> params = appendToQuery(pPredicates, sb);
- ro = getResultObject(pRegistryService, sb.toString(), params.toArray());
+ final List<Object> params = new ArrayList<Object>();
+ try {
+ appendToQuery(pPredicates, params, sep, sb, false);
+ ro = getResultObject(pRegistryService, sb.toString(), params.toArray());
+ } catch (SQLException e) {
+ throw new JAXRException(e);
+ }
}
return (RO) ro;
}
@@ -532,7 +675,7 @@ public class RegistryObjectLoader {
protected void action(ResultSet pResultSet) throws JAXRException,
SQLException {
if (pResultSet.next()) {
- final int type = pResultSet.getInt(5);
+ final int type = pResultSet.getInt(2);
assert(!pResultSet.wasNull());
final ROAccessor<?> roAcc = asROAccessor(ROAccessors.getROAccessor(type));
final String key = pResultSet.getString(1);
@@ -551,23 +694,10 @@ public class RegistryObjectLoader {
final RegistryObjectImpl<?> ro = (RegistryObjectImpl<?>) pRegistryObject;
ro.setState(ROState.loaded);
- if (pRegistryObject instanceof OwnedRegistryObject<?>) {
- final OwnedRegistryObject<?> oro = (OwnedRegistryObject<?>) ro;
- final String ownerKeyRestricting = pResultSet.getString(2);
- final String ownerKeyCascading = pResultSet.getString(3);
- assert(ownerKeyRestricting == null || ownerKeyCascading == null);
- final String ownerKey = ownerKeyCascading == null ? ownerKeyRestricting : ownerKeyCascading;
- assert(ownerKey != null);
- oro.setOwner(new KeyImpl(ownerKey));
- int pos = pResultSet.getInt(4);
- assert(!pResultSet.wasNull());
- oro.setPosition(pos);
- }
-
- if (extensionHandlers != null) {
- for (int i = 0; i < extensionHandlers.length; i++) {
- extensionHandlers[i].load(pResultSet, pRegistryObject, indexes[i]);
- }
+ final TableHandler[] tableHandlers = queries[0].tableHandlers;
+ int index = 1;
+ for (int i = 0; i < tableHandlers.length; i++) {
+ index = tableHandlers[i].load(pResultSet, pRegistryObject, index);
}
}
@@ -576,9 +706,15 @@ public class RegistryObjectLoader {
*/
public void load(RegistryService pRegistryService, final RegistryObject pRegistryObject)
throws JAXRException {
- final Predicate predicate = new KeyPredicate(Collections.singleton(pRegistryObject.getKey()));
+ final FilterPredicate predicate = new KeyPredicate(Collections.singleton(pRegistryObject.getKey()));
final StringBuilder sb = new StringBuilder(query);
- final List<Object> params = appendToQuery(Collections.singleton(predicate), sb);
+ final List<Object> params = new ArrayList<Object>();
+ params.addAll(Arrays.asList(parameters));
+ try {
+ appendToQuery(Collections.singleton(predicate), params, sep, sb, false);
+ } catch (SQLException e) {
+ throw new JAXRException(e);
+ }
new ObjQueryUser(sb.toString(), params.toArray()){
@Override
protected void action(ResultSet pResultSet) throws JAXRException,
@@ -586,8 +722,8 @@ public class RegistryObjectLoader {
if (!pResultSet.next()) {
throw new IllegalStateException("Object not found: " + pRegistryObject.getKey()); //$NON-NLS-1$
}
- final int type = pResultSet.getInt(5);
- assert(!pResultSet.wasNull() && type == objectType.ordinal());
+ final int type = pResultSet.getInt(2);
+ assert(!pResultSet.wasNull() && type == queries[0].objectType.ordinal());
load(pRegistryObject, pResultSet);
if (pResultSet.next()) {
throw new IllegalStateException("Multiple objects found: " + pRegistryObject.getKey()); //$NON-NLS-1$
Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectTypePredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectTypePredicate.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectTypePredicate.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectTypePredicate.java Mon Aug 9 08:10:48 2010
@@ -29,7 +29,7 @@ import org.apache.labs.jaxmas.registry.a
/**
* Predicate for restricting a search to a particular registry object type.
*/
-public class RegistryObjectTypePredicate implements Predicate {
+public class RegistryObjectTypePredicate implements FilterPredicate {
private final ROAccessors.ObjectTypes type;
/**
Added: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/TableHandler.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/TableHandler.java?rev=983550&view=auto
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/TableHandler.java (added)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/TableHandler.java Mon Aug 9 08:10:48 2010
@@ -0,0 +1,46 @@
+package org.apache.labs.jaxmas.registry.sql;
+
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.List;
+
+import javax.xml.registry.JAXRException;
+import javax.xml.registry.infomodel.RegistryObject;
+
+import org.apache.labs.jaxmas.registry.accessor.ROAccessors;
+
+/**
+ * Extension handlers are used for type specific extension tables.
+ */
+public abstract class TableHandler {
+ private final ROAccessors.ObjectTypes objectType;
+
+ /**
+ * Creates a new instance with the given object type.
+ */
+ public TableHandler(ROAccessors.ObjectTypes pObjectType) {
+ objectType = pObjectType;
+ }
+
+ /**
+ * Returns the extension handlers object type. May be null, if the
+ * object type is not specified.
+ */
+ protected ROAccessors.ObjectTypes getObjectType() {
+ return objectType;
+ }
+
+ /**
+ * Called to extend the column list of the SQL query for reading registry objects.
+ */
+ protected abstract int addColumns(StringBuilder pBuilder, String pPrefix, int pIndex);
+ /**
+ * Called to extend the FROM clause of the SQL query for reading registry objects.
+ */
+ protected abstract void addJoin(StringBuilder pBuilder, String pPrefix, List<?> pParameters);
+ /**
+ * Called to pull data from the result set when reading registry objects.
+ */
+ protected abstract int load(ResultSet pResultSet, RegistryObject pRegistryObject, int pIndex)
+ throws SQLException, JAXRException;
+}
\ No newline at end of file
Propchange: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/TableHandler.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractInitializedJaxMasTestCase.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractInitializedJaxMasTestCase.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractInitializedJaxMasTestCase.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractInitializedJaxMasTestCase.java Mon Aug 9 08:10:48 2010
@@ -22,6 +22,7 @@ import java.util.StringTokenizer;
import javax.xml.registry.BusinessLifeCycleManager;
import javax.xml.registry.BusinessQueryManager;
+import javax.xml.registry.Connection;
import javax.xml.registry.JAXRException;
import javax.xml.registry.infomodel.ClassificationScheme;
import javax.xml.registry.infomodel.Concept;
@@ -31,7 +32,7 @@ import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
-
+import static org.junit.Assert.*;
/**
* Abstract base class for test cases, where an initialized database
@@ -49,7 +50,7 @@ public abstract class AbstractInitialize
/**
* Called to open a database connection.
*/
- @Before @Override
+ @Before
public void setUp() throws Exception {
initConnection();
}
@@ -58,7 +59,7 @@ public abstract class AbstractInitialize
* Called to close the database connection, which has been
* opened by {@link #setUp()}.
*/
- @After @Override
+ @After
public void tearDown() throws Exception {
closeConnection();
}
@@ -67,9 +68,9 @@ public abstract class AbstractInitialize
* Called after the test is finished in order to shutdown the database.
*/
@AfterClass
- public void tearDownAfterClass() throws Exception {
- initConnection();
- RegistryServiceImpl.getDbDriver(getConnection().getRegistryService()).shutdown();
+ public static void tearDownAfterClass() throws Exception {
+ final Connection connection = newConnection();
+ RegistryServiceImpl.getDbDriver(connection.getRegistryService()).shutdown();
}
/**
Modified: labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractJaxMasTestCase.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractJaxMasTestCase.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractJaxMasTestCase.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/AbstractJaxMasTestCase.java Mon Aug 9 08:10:48 2010
@@ -41,7 +41,7 @@ import org.apache.labs.jaxmas.registry.u
/**
* Abstract base class for deriving JaxMas test cases.
*/
-public abstract class AbstractJaxMasTestCase extends TestCase {
+public abstract class AbstractJaxMasTestCase {
private static final Logger log = DefaultLoggerFactory.getInstance().newLogger(AbstractJaxMasTestCase.class);
private static Properties properties;
private static ConnectionFactory connFactory;
@@ -136,8 +136,9 @@ public abstract class AbstractJaxMasTest
/**
* This method is used to open a database connection.
*/
- public void initConnection() throws Exception {
+ public Connection initConnection() throws Exception {
connection = newConnection();
+ return connection;
}
/**
Modified: labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/CustomTypeTest.java Mon Aug 9 08:10:48 2010
@@ -17,6 +17,7 @@ import javax.xml.registry.infomodel.Regi
import javax.xml.registry.infomodel.RegistryObject;
import org.apache.labs.jaxmas.registry.infomodel.JaxMasQueryManager;
+import static org.junit.Assert.*;
import org.junit.Test;
Modified: labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/DbInitializationTest.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/DbInitializationTest.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/DbInitializationTest.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/DbInitializationTest.java Mon Aug 9 08:10:48 2010
@@ -23,6 +23,7 @@ import javax.xml.registry.Connection;
import javax.xml.registry.infomodel.ClassificationScheme;
import org.junit.Test;
+import static org.junit.Assert.*;
/**
@@ -32,16 +33,14 @@ public class DbInitializationTest extend
/**
* Initializes the database.
*/
- @Test
- public void testInitDatabase() throws Exception {
+ @Test public void testInitDatabase() throws Exception {
super.initDatabase();
}
/**
* Test loading the classification schemes.
*/
- @Test
- public void testLoadClassificationSchemes() throws Exception {
+ @Test public void testLoadClassificationSchemes() throws Exception {
Connection connection = newConnection();
final BulkResponse br = connection.getRegistryService().getBusinessQueryManager().findClassificationSchemes(null, null, null, null);
boolean objectTypesFound = false;
Modified: labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/TaxonomiesTestCase.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/TaxonomiesTestCase.java?rev=983550&r1=983549&r2=983550&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/TaxonomiesTestCase.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/TaxonomiesTestCase.java Mon Aug 9 08:10:48 2010
@@ -41,6 +41,7 @@ import javax.xml.registry.infomodel.Regi
import javax.xml.registry.infomodel.Slot;
import org.apache.labs.jaxmas.registry.accessor.ROAccessors;
+import static org.junit.Assert.*;
import org.junit.Test;
@@ -58,8 +59,7 @@ public class TaxonomiesTestCase extends
/**
* Tests creating a classification scheme.
*/
- @Test
- public void testCreateClasssificationScheme() throws Exception {
+ @Test public void testCreateClasssificationScheme() throws Exception {
removeExistingClassificationScheme();
final ClassificationScheme cs = createClassificationScheme();
deleteClassificationScheme(cs);
@@ -137,8 +137,7 @@ public class TaxonomiesTestCase extends
/**
* Tests creating a concept.
*/
- @Test
- public void testCreateConcepts() throws Exception {
+ @Test public void testCreateConcepts() throws Exception {
removeExistingClassificationScheme();
final Concept concept = createConcept();
final Concept otherConcept = loadConcept();
@@ -184,7 +183,7 @@ public class TaxonomiesTestCase extends
/**
* Tests adding slots to a concept.
*/
- public void testConceptSlots() throws Exception {
+ @Test public void testConceptSlots() throws Exception {
removeExistingClassificationScheme();
final Concept concept = createConcept();
final Slot slot1 = getBusinessLifecycleManager().createSlot(TEST_SLOT1_NAME, "v1", null); //$NON-NLS-1$
@@ -214,7 +213,7 @@ public class TaxonomiesTestCase extends
/**
* Tests the presence of object types.
*/
- public void testObjectTypesPresent() throws Exception {
+ @Test public void testObjectTypesPresent() throws Exception {
removeExistingClassificationScheme();
final Concept concept = createConcept();
final Concept conceptType = concept.getObjectType();
@@ -232,7 +231,7 @@ public class TaxonomiesTestCase extends
/**
* Tests the creation of classifications.
*/
- public void testClassifications() throws Exception {
+ @Test public void testClassifications() throws Exception {
removeExistingClassificationScheme();
final Concept concept = createConcept();
final BusinessLifeCycleManager blcm = getBusinessLifecycleManager();
@@ -267,7 +266,7 @@ public class TaxonomiesTestCase extends
/**
* Tests the creation of associations.
*/
- public void testAssociations() throws Exception {
+ @Test public void testAssociations() throws Exception {
removeExistingClassificationScheme();
final Concept concept = createConcept();
getBusinessLifecycleManager().saveObjects(Collections.singleton(concept));
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org