Author: tdraier
Date: Thu Aug  2 16:09:07 2007
New Revision: 18102

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18102&repname=
=3Djahia
Log:
optimized workflow mainobject lookup
 (port 18027)

Modified:
    trunk/core/src/java/org/jahia/content/ContentContainerKey.java
    trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java

Modified: trunk/core/src/java/org/jahia/content/ContentContainerKey.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/content/ContentContainerKey.java&rev=3D18102&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/content/ContentContainerKey.java (origina=
l)
+++ trunk/core/src/java/org/jahia/content/ContentContainerKey.java Thu Aug =
 2 16:09:07 2007
@@ -116,6 +116,23 @@
         return results;
     }
 =

+    public Collection getChildsFields(EntryLoadRequest request) {
+        List results =3D new ArrayList();
+        try {
+            Vector v =3D ServicesRegistry.getInstance().getJahiaContainers=
Service().getFieldIDsAndTypesInContainer(getIdInType(), request);
+            for (Iterator iterator =3D v.iterator(); iterator.hasNext();) {
+                Object[] o =3D (Object[]) iterator.next();
+                ContentFieldKey key =3D new ContentFieldKey(((Integer) o[0=
]).intValue());
+                key.setFieldType(((Integer) o[1]).intValue());
+                key.setParent(this);
+                results.add(key);
+            }
+        } catch (JahiaException e) {
+            e.printStackTrace();
+        }
+        return results;
+    }
+
     public static String toObjectKeyString(String idInType) {
         return toObjectKeyString(CONTAINER_TYPE, idInType);
     }

Modified: trunk/core/src/java/org/jahia/services/workflow/WorkflowService.j=
ava
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/services/workflow/WorkflowService.java&rev=3D18102&repname=3Djahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java (o=
riginal)
+++ trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java Th=
u Aug  2 16:09:07 2007
@@ -626,25 +626,22 @@
 =

     public ContentObjectKey getHardLinkedMainObject(ContentObjectKey objec=
t) throws JahiaException {
         ContentObjectKey workflowMainObject =3D object;
+        Collection c =3D null;
         if (ContentContainerKey.CONTAINER_TYPE.equals(object.getType())) {
-            Collection l =3D object.getChilds(loadRequest);
+            Collection l =3D ((ContentContainerKey)object).getChildsFields=
(loadRequest);
             for (Iterator iterator =3D l.iterator(); iterator.hasNext();) {
                 ContentObjectKey co =3D (ContentObjectKey) iterator.next();
-                if (!co.getChilds(loadRequest).isEmpty()) {
-                    object =3D co;
-                }
-                // Also check current if page has been moved (container is=
 still independant)
-                if (!co.getChilds(EntryLoadRequest.CURRENT).isEmpty()) {
+                c =3D co.getChilds(loadRequest);
+                if (!c.isEmpty()) {
                     object =3D co;
+                    break;
                 }
             }
         }
         if (ContentFieldKey.FIELD_TYPE.equals(object.getType())) {
-            Collection c =3D object.getChilds(loadRequest);
-            if (c.isEmpty()) {
-                c =3D object.getChilds(EntryLoadRequest.CURRENT);
+            if (c =3D=3D null) {
+                c =3D object.getChilds(loadRequest);
             }
-
             if (!c.isEmpty()) {
                 ContentPageKey page =3D (ContentPageKey) c.iterator().next=
();
 =

@@ -748,6 +745,9 @@
     }
 =

     private ContentObjectKey getTopLinkedObject(ContentObjectKey object) t=
hrows JahiaException{
+        if (ContentFieldKey.FIELD_TYPE.equals(object.getType())) {
+            object =3D object.getParent(null);
+        }
         int mode =3D getWorkflowMode(object, false);
         return getMainLinkObject(object,mode);
     }

_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list

Reply via email to