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 2009/09/01 17:17:37 UTC

svn commit: r810092 - in /labs/jaxmas/trunk/JaxMas/src: main/java/org/apache/labs/jaxmas/registry/infomodel/ main/java/org/apache/labs/jaxmas/registry/schema/ main/java/org/apache/labs/jaxmas/registry/sql/ test/java/org/apache/labs/jaxmas/registry/

Author: jochen
Date: Tue Sep  1 15:17:37 2009
New Revision: 810092

URL: http://svn.apache.org/viewvc?rev=810092&view=rev
Log:
The order of classifications and associations is now preserved.

Added:
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationNumOrderPredicate.java
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/ClassificationNumOrderPredicate.java
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OrderPredicate.java
Modified:
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/AssociationImpl.java
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ClassificationImpl.java
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryObjectImpl.java
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AbstractDbDriver.java
    labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/RegistryObjectLoader.java
    labs/jaxmas/trunk/JaxMas/src/test/java/org/apache/labs/jaxmas/registry/TaxonomiesTestCase.java

Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/AssociationImpl.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/AssociationImpl.java?rev=810092&r1=810091&r2=810092&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/AssociationImpl.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/AssociationImpl.java Tue Sep  1 15:17:37 2009
@@ -37,6 +37,7 @@
     private Key targetObjectKey;
     private RegistryObject targetObject;
 	private boolean confirmed, confirmedBySourceOwner, confirmedByTargetOwner, extramural;
+	private int num;
 
 	/**
 	 * Creates a new instance.
@@ -45,6 +46,20 @@
 		super(pRegistryService, pKey);
 	}
 
+	/**
+	 * Returns the associations number within its parents list of associations.
+	 */
+	public int getNum() {
+		return num;
+	}
+
+	/**
+	 * Sets the associations number within its parents list of associations.
+	 */
+	public void setNum(int pNum) {
+		num = pNum;
+	}
+
 	@Override
 	public Concept getAssociationType() throws JAXRException {
 	    ensureLoaded();

Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ClassificationImpl.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ClassificationImpl.java?rev=810092&r1=810091&r2=810092&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ClassificationImpl.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/ClassificationImpl.java Tue Sep  1 15:17:37 2009
@@ -35,6 +35,7 @@
 public class ClassificationImpl extends OwnedRegistryObject<Classification> implements Classification {
 	private Key conceptKey;
 	private Concept concept;
+	private int num;
 
 	/**
 	 * Creates a new instance.
@@ -43,6 +44,20 @@
 		super(pRegistryService, pKey);
 	}
 
+	/**
+	 * Returns the classifications number within its parents list of classifications.
+	 */
+	public int getNum() {
+		return num;
+	}
+
+	/**
+	 * Sets the classifications number within its parents list of classifications.
+	 */
+	public void setNum(int pNum) {
+		num = pNum;
+	}
+
 	@Override
 	public ClassificationScheme getClassificationScheme() throws JAXRException {
 		return getConcept().getClassificationScheme();

Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryObjectImpl.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryObjectImpl.java?rev=810092&r1=810091&r2=810092&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryObjectImpl.java (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/infomodel/RegistryObjectImpl.java Tue Sep  1 15:17:37 2009
@@ -20,9 +20,11 @@
 
 import java.lang.reflect.UndeclaredThrowableException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
@@ -45,6 +47,8 @@
 import org.apache.labs.jaxmas.registry.accessor.ConceptAccessor;
 import org.apache.labs.jaxmas.registry.accessor.ROAccessor;
 import org.apache.labs.jaxmas.registry.accessor.ROAccessors;
+import org.apache.labs.jaxmas.registry.sql.AssociationNumOrderPredicate;
+import org.apache.labs.jaxmas.registry.sql.ClassificationNumOrderPredicate;
 import org.apache.labs.jaxmas.registry.sql.OwnerPredicate;
 import org.apache.labs.jaxmas.registry.sql.Predicate;
 import org.apache.labs.jaxmas.registry.sql.RegistryObjectLoader;
@@ -59,9 +63,9 @@
 	private final InternationalStringController name;
 	private final InternationalStringController description;
 	private Key key;
-	private Collection<Association> associations;
+	private List<Association> associations;
 	private Collection<Key> loadedClassificationKeys, loadedAssociationKeys;
-	private Collection<Classification> classifications;
+	private List<Classification> classifications;
 	private Collection<ExternalIdentifier> externalIdentifiers = new ArrayList<ExternalIdentifier>();
 	private Collection<ExternalLink> externalLinks = new ArrayList<ExternalLink>();
 
@@ -160,6 +164,7 @@
 	public void addAssociation(Association pAssociation) throws JAXRException {
 	    ensureAssociationsLoaded();
 	    pAssociation.setSourceObject(this);
+	    ((AssociationImpl) pAssociation).setNum(associations.size());
 	    associations.add(pAssociation);
 	}
 
@@ -180,8 +185,9 @@
                     break;
                 case referenced:
                 case loaded:
-                    final Predicate predicate = new OwnerPredicate(getKey(), false);
-                    final Collection<Predicate> predicates = Collections.singleton(predicate);
+                	final List<Predicate> predicates = new ArrayList<Predicate>(2);
+                	predicates.add(new OwnerPredicate(getKey(), false));
+                	predicates.add(ClassificationNumOrderPredicate.getInstance());
                     final RegistryObjectLoader rol = ClassificationAccessor.getInstance().getRegistryObjectLoader();
                     loadedClassificationKeys = new HashSet<Key>();
                     final Collection<RegistryObject> storedClassifications = rol.getResultList(getRegistryService(), predicates);
@@ -194,6 +200,9 @@
                     // Nothing to do
                     break;
             }
+            if (loadedClassificationKeys == null) {
+            	loadedClassificationKeys = new HashSet<Key>();
+            }
         }
 	}
 
@@ -206,11 +215,12 @@
                     break;
                 case referenced:
                 case loaded:
-                    final Predicate predicate = new OwnerPredicate(getKey(), false);
-                    final Collection<Predicate> predicates = Collections.singleton(predicate);
+                    final List<Predicate> list = new ArrayList<Predicate>(2);
+                    list.add(new OwnerPredicate(getKey(), false));
+                    list.add(AssociationNumOrderPredicate.getInstance());
                     final RegistryObjectLoader rol = AssociationAccessor.getInstance().getRegistryObjectLoader();
                     loadedAssociationKeys = new HashSet<Key>();
-                    final Collection<RegistryObject> storedAssociations = rol.getResultList(getRegistryService(), predicates);
+                    final Collection<RegistryObject> storedAssociations = rol.getResultList(getRegistryService(), list);
                     for (RegistryObject ro : storedAssociations) {
                         loadedAssociationKeys.add(ro.getKey());
                     }
@@ -220,6 +230,9 @@
                     // Nothing to do
                     break;
             }
+            if (loadedAssociationKeys == null) {
+            	loadedAssociationKeys = new HashSet<Key>();
+            }
         }
     }
 
@@ -227,6 +240,7 @@
 	public void addClassification(Classification pClassification) throws JAXRException {
 	    ensureClassificationsLoaded();
 	    pClassification.setClassifiedObject(this);
+	    ((ClassificationImpl) pClassification).setNum(classifications.size());
 		classifications.add(pClassification);
 	}
 
@@ -389,20 +403,26 @@
 	@SuppressWarnings("unchecked")
 	@Override
 	public void setAssociations(Collection pAssociations) throws JAXRException {
-		if (pAssociations == null) {
-			associations.clear();
-		} else {
-			associations = pAssociations;
+		ensureAssociationsLoaded();
+		associations.clear();
+		int i = 0;
+		for (Object o : pAssociations) {
+			final AssociationImpl assoc = (AssociationImpl) o;
+			assoc.setNum(i++);
+			associations.add(assoc);
 		}
 	}
 
-	@SuppressWarnings({"unchecked", "cast"})
+	@SuppressWarnings("unchecked")
 	@Override
 	public void setClassifications(Collection pClassifications) throws JAXRException {
-		if (pClassifications == null) {
-			classifications.clear();
-		} else {
-			classifications = (Collection<Classification>) pClassifications;
+		ensureClassificationsLoaded();
+		classifications.clear();
+		int i = 0;
+		for (Object o : pClassifications) {
+			final ClassificationImpl cl = (ClassificationImpl) o;
+			cl.setNum(i++);
+			classifications.add(cl);
 		}
 	}
 

Modified: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql?rev=810092&r1=810091&r2=810092&view=diff
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql (original)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/schema/schema-update.1.sql Tue Sep  1 15:17:37 2009
@@ -84,6 +84,7 @@
     roKey VARCHAR(32) NOT NULL PRIMARY KEY,
     roKeyTarget VARCHAR(32) NOT NULL,
     roKeyType VARCHAR(32) NOT NULL,
+    num BIGINT NOT NULL,
     CONSTRAINT FK_Associations_RO FOREIGN KEY (roKey) REFERENCES RegistryObjects ON DELETE CASCADE,
     CONSTRAINT FK_Associations_Target FOREIGN KEY (roKeyTarget) REFERENCES RegistryObjects ON DELETE RESTRICT
 );
@@ -91,6 +92,7 @@
 CREATE TABLE Classifications (
     roKey VARCHAR(32) NOT NULL PRIMARY KEY,
     roKeyConcept VARCHAR(32) NOT NULL,
+    num BIGINT NOT NULL,
     CONSTRAINT FK_Classifications_RO FOREIGN KEY (roKey) REFERENCES RegistryObjects ON DELETE CASCADE,
     CONSTRAINT FK_Classifications_Concept FOREIGN KEY (roKeyConcept) REFERENCES RegistryObjects ON DELETE RESTRICT
 );

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=810092&r1=810091&r2=810092&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 Tue Sep  1 15:17:37 2009
@@ -312,8 +312,8 @@
 		    final ClassificationImpl cl = (ClassificationImpl) pObject;
             final Concept concept = cl.getConcept();
             assert(concept != null);
-            run("INSERT INTO Classifications (roKey, roKeyConcept) VALUES (?, ?)", //$NON-NLS-1$
-                    cl.getKey(), concept.getKey());
+            run("INSERT INTO Classifications (roKey, roKeyConcept, num) VALUES (?, ?, ?)", //$NON-NLS-1$
+                    cl.getKey(), concept.getKey(), Integer.valueOf(cl.getNum()));
 		}
 
 		if (pObject instanceof Association) {
@@ -322,16 +322,22 @@
 		    assert(assocType != null);
 		    final RegistryObject target = assoc.getTargetObject();
 		    assert(target != null);
-		    run("INSERT INTO Associations (roKey, roKeyType, roKeyTarget) VALUES (?, ?, ?)", //$NON-NLS-1$
-		            assoc.getKey(), assocType.getKey(), target.getKey());
+		    run("INSERT INTO Associations (roKey, roKeyType, roKeyTarget, num) VALUES (?, ?, ?, ?)", //$NON-NLS-1$
+		            assoc.getKey(), assocType.getKey(), target.getKey(), Integer.valueOf(assoc.getNum()));
 		}
 		
+		int num = 0;
 		for (Classification cl : asClassificationCollection(ro.getClassifications())) {
-		    ((ClassificationImpl) cl).getROLoader().save(getRegistryService(), cl);
+			final ClassificationImpl clImpl =  (ClassificationImpl) cl;
+			clImpl.setNum(num++);
+			clImpl.getROLoader().save(getRegistryService(), cl);
 		}
 
+		num = 0;
 		for (Association assoc : asAssociationCollection(ro.getAssociations())) {
-            ((AssociationImpl) assoc).getROLoader().save(getRegistryService(), assoc);
+			final AssociationImpl assocImpl = (AssociationImpl) assoc;
+			assocImpl.setNum(num++);
+			assocImpl.getROLoader().save(getRegistryService(), assoc);
         }
 	}
 
@@ -380,8 +386,8 @@
 		    final ClassificationImpl cl = (ClassificationImpl) pObject;
             final Concept concept = cl.getConcept();
             assert(concept != null);
-            run("UPDATE Classifications SET roKeyConcept=? WHERE roKey=?", //$NON-NLS-1$
-                    concept.getKey(), cl.getKey());
+            run("UPDATE Classifications SET roKeyConcept=?, num=? WHERE roKey=?", //$NON-NLS-1$
+                    concept.getKey(), Integer.valueOf(cl.getNum()), cl.getKey());
         }
 
 		if (pObject instanceof Association) {
@@ -390,8 +396,8 @@
 		    assert(assocType != null);
 		    final RegistryObject target = assoc.getTargetObject();
 		    assert(target != null);
-		    run("UPDATE Associations SET roKeyType=?, roKeyTarget=? WHERE roKey=?", //$NON-NLS-1$
-                    assocType.getKey(), target.getKey(), assoc.getKey());
+		    run("UPDATE Associations SET roKeyType=?, roKeyTarget=?, num=? WHERE roKey=?", //$NON-NLS-1$
+                    assocType.getKey(), target.getKey(), Integer.valueOf(assoc.getNum()), assoc.getKey());
         }
 
 		final Collection<Key> loadedClassificationKeys = ro.getLoadedClassificationKeys();

Added: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationNumOrderPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationNumOrderPredicate.java?rev=810092&view=auto
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationNumOrderPredicate.java (added)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/AssociationNumOrderPredicate.java Tue Sep  1 15:17:37 2009
@@ -0,0 +1,34 @@
+package org.apache.labs.jaxmas.registry.sql;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import javax.xml.registry.JAXRException;
+
+
+/**
+ * An "ORDER BY" predicate, which requests ordering by the
+ * associations number.
+ */
+public class AssociationNumOrderPredicate implements OrderPredicate {
+	private static final AssociationNumOrderPredicate theInstance = new AssociationNumOrderPredicate();
+
+	/**
+	 * Returns the singleton instance.
+	 */
+	public static AssociationNumOrderPredicate getInstance() {
+		return theInstance;
+	}
+	/**
+	 * Private constructor, to ensure singleton pattern.
+	 */
+	private AssociationNumOrderPredicate() {
+		// Does nothing
+	}
+
+	@Override
+	public void add(StringBuilder pBuffer, List<Object> pParameters)
+			throws SQLException, JAXRException {
+		pBuffer.append("assoc.num"); //$NON-NLS-1$
+	}
+}

Added: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/ClassificationNumOrderPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/ClassificationNumOrderPredicate.java?rev=810092&view=auto
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/ClassificationNumOrderPredicate.java (added)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/ClassificationNumOrderPredicate.java Tue Sep  1 15:17:37 2009
@@ -0,0 +1,34 @@
+package org.apache.labs.jaxmas.registry.sql;
+
+import java.sql.SQLException;
+import java.util.List;
+
+import javax.xml.registry.JAXRException;
+
+
+/**
+ * An "ORDER BY" predicate, which requests ordering by the
+ * classifications number.
+ */
+public class ClassificationNumOrderPredicate implements OrderPredicate {
+	private static final ClassificationNumOrderPredicate theInstance = new ClassificationNumOrderPredicate();
+
+	/**
+	 * Returns the singleton instance.
+	 */
+	public static ClassificationNumOrderPredicate getInstance() {
+		return theInstance;
+	}
+	/**
+	 * Private constructor, to ensure singleton pattern.
+	 */
+	private ClassificationNumOrderPredicate() {
+		// Does nothing
+	}
+
+	@Override
+	public void add(StringBuilder pBuffer, List<Object> pParameters)
+			throws SQLException, JAXRException {
+		pBuffer.append("cl.num"); //$NON-NLS-1$
+	}
+}

Added: labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OrderPredicate.java
URL: http://svn.apache.org/viewvc/labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OrderPredicate.java?rev=810092&view=auto
==============================================================================
--- labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OrderPredicate.java (added)
+++ labs/jaxmas/trunk/JaxMas/src/main/java/org/apache/labs/jaxmas/registry/sql/OrderPredicate.java Tue Sep  1 15:17:37 2009
@@ -0,0 +1,10 @@
+package org.apache.labs.jaxmas.registry.sql;
+
+
+/**
+ * Marker interface, which indicates that this predicate is used
+ * in an order by clause.
+ */
+public interface OrderPredicate extends Predicate {
+	// No additional methods, or fields.
+}

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=810092&r1=810091&r2=810092&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 Tue Sep  1 15:17:37 2009
@@ -214,8 +214,8 @@
 
         @Override
         protected int addColumns(StringBuilder pBuilder, int pIndex) {
-            pBuilder.append(", assoc.roKeyTarget, assoc.roKeyType"); //$NON-NLS-1$
-            return pIndex + 2;
+            pBuilder.append(", assoc.roKeyTarget, assoc.roKeyType, assoc.num"); //$NON-NLS-1$
+            return pIndex + 3;
         }
 
         @Override
@@ -239,6 +239,8 @@
                 final String typeKey = pResultSet.getString(pIndex+1);
                 assert(typeKey != null);
                 assoc.setAssociationTypeKey(new KeyImpl(typeKey));
+                assoc.setNum(pResultSet.getInt(pIndex+2));
+                assert(!pResultSet.wasNull());
             }
         }
     }
@@ -256,8 +258,8 @@
 
         @Override
         protected int addColumns(StringBuilder pBuilder, int pIndex) {
-            pBuilder.append(", cl.roKeyConcept"); //$NON-NLS-1$
-            return pIndex + 1;
+            pBuilder.append(", cl.roKeyConcept, cl.num"); //$NON-NLS-1$
+            return pIndex + 2;
         }
 
         @Override
@@ -278,6 +280,8 @@
                 final String conceptKey = pResultSet.getString(pIndex);
                 assert(conceptKey != null);
                 cl.setConceptKey(new KeyImpl(conceptKey));
+                cl.setNum(pResultSet.getInt(pIndex+1));
+                assert(!pResultSet.wasNull());
             }
         }
     }
@@ -376,6 +380,9 @@
                 if (predicate instanceof RegistryObjectTypePredicate) {
                     continue;
                 }
+                if (predicate instanceof OrderPredicate) {
+                	continue;
+                }
                 if (numPredicates++ == 0) {
                     sb.append(" WHERE "); //$NON-NLS-1$
                 } else {
@@ -383,6 +390,17 @@
                 }
                 predicate.add(sb, parameterList);
             }
+            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);
+            	}
+            }
         }
         parameters = parameterList.toArray();
         query = sb.toString();
@@ -413,19 +431,33 @@
             final StringBuilder sb) throws JAXRException {
         final List<Object> params = new ArrayList<Object>(Arrays.asList(parameters));
         int numPreds = numPredicates;
-        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$
-            }
-            sb.append((numPreds++ == 0) ? " WHERE " : " AND "); //$NON-NLS-1$ //$NON-NLS-2$
-            try {
-                predicate.add(sb, params);
-            } catch (SQLException e) {
-                throw new JAXRException(e);
-            }
+        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);
+        		}
+        	}
+        } catch (SQLException e) {
+            throw new JAXRException(e);
         }
         return params;
     }

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=810092&r1=810091&r2=810092&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 Tue Sep  1 15:17:37 2009
@@ -235,16 +235,17 @@
     public void testClassifications() throws Exception {
         removeExistingClassificationScheme();
         final Concept concept = createConcept();
-        getBusinessLifecycleManager().saveObjects(Collections.singleton(concept));
-        final RegistryEntry re = (RegistryEntry) getBusinessLifecycleManager().createObject(LifeCycleManager.REGISTRY_ENTRY);
+        final BusinessLifeCycleManager blcm = getBusinessLifecycleManager();
+		blcm.saveObjects(Collections.singleton(concept));
+        final RegistryEntry re = (RegistryEntry) blcm.createObject(LifeCycleManager.REGISTRY_ENTRY);
         assertNotNull(re);
-        final Classification cl = getBusinessLifecycleManager().createClassification(concept);
+        final Classification cl = blcm.createClassification(concept);
         assertNotNull(cl);
         re.addClassification(cl);
         assertEquals(concept.getValue(), cl.getValue());
         assertEquals(concept.getKey(), cl.getConcept().getKey());
         assertEquals(concept.getClassificationScheme().getKey(), cl.getClassificationScheme().getKey());
-        getBusinessLifecycleManager().saveObjects(Collections.singleton(re));
+        blcm.saveObjects(Collections.singleton(re));
         final RegistryEntry reOther = (RegistryEntry) getBusinessQueryManager().getRegistryObject(re.getKey().getId());
         assertNotNull(reOther);
         boolean found = false;
@@ -259,7 +260,7 @@
             }
         }
         assertTrue(found);
-        getBusinessLifecycleManager().deleteObjects(Collections.singleton(re.getKey()));
+        blcm.deleteObjects(Collections.singleton(re.getKey()));
         deleteClassificationScheme(concept.getClassificationScheme());
     }
 



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org