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: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to