Author: bpapez
Date: Mon Nov 26 12:08:57 2007
New Revision: 19290

URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19290&repname=
=3Djahia
Log:
http://www.jahia.net/jira/browse/VOD-54  Publishing is blocked by workflow =
=3D
operation due to integrity between database and viewing
* Fix retrieving the parent of an object if it is in a transient state

Modified:
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java
    trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java
    trunk/core/src/java/org/jahia/hibernate/manager/JahiaPagesManager.java
    trunk/core/src/java/org/jahia/services/workflow/WorkflowService.java

Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaContainerDAO.java&rev=3D19290&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/hibernate/dao/JahiaContainerDAO.java (ori=
ginal)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaContainerDAO.java Mon =
Nov 26 12:08:57 2007
@@ -1065,6 +1065,18 @@
         }
         return null;
     }
+    =

+    public Integer getDeletedParentContainerListId(Integer ctnId) {
+        String hql =3D "select distinct c.listid from JahiaContainer c whe=
re c.comp_id.id=3D? and c.comp_id.workflowState=3D-1";
+        final HibernateTemplate template =3D getHibernateTemplate();
+        template.setCacheQueries(true);
+        template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+        List list =3D template.find(hql, new Object[]{ctnId});
+        if (!list.isEmpty()) {
+            return (Integer) list.iterator().next();
+        }
+        return null;
+    }    =

 =

     public List findContainerIdByPropertyNameAndValue(String name, String =
value) {
         final HibernateTemplate template =3D getHibernateTemplate();

Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.ja=
va
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaFieldsDataDAO.java&rev=3D19290&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/hibernate/dao/JahiaFieldsDataDAO.java (or=
iginal)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataDAO.java Mon=
 Nov 26 12:08:57 2007
@@ -663,6 +663,28 @@
         }
         return retInteger;
     }
+    =

+    public Integer getDeletedPageFieldID(Integer pageID) {
+        Integer retInteger =3D null;
+        StringBuffer hql =3D new StringBuffer("select distinct f.comp_id.i=
d from JahiaFieldsData f ")
+                .append("where f.type=3D")
+                .append(FieldTypes.PAGE)
+                .append(" and f.value=3D? and ((f.comp_id.workflowState>")
+                .append(EntryLoadRequest.ACTIVE_WORKFLOW_STATE)
+                .append(" and f.comp_id.versionId=3D-1) or f.comp_id.workf=
lowState=3D-1)");
+        if (pageID !=3D null) {
+            final HibernateTemplate template =3D getHibernateTemplate();
+            template.setCacheQueries(true);
+            template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+            List list =3D template.find(hql.toString(), new Object[]{pageI=
D.toString()});
+            if (list.size() > 0) {
+                retInteger =3D (Integer) list.get(0);
+            } else {
+                throw new ObjectRetrievalFailureException("Cannot retrieve=
 jahia fields for this page", pageID);
+            }
+        }
+        return retInteger;
+    }    =

 =

     public List getStagingAndActivePageFieldIDs(Integer pageID) {
         List retVal =3D null;
@@ -1074,6 +1096,20 @@
         }
         return null;
     }
+    =

+    public Object[] getDeletedParentIds(Integer fieldId) {
+        String hql =3D "select distinct f.pageId,f.containerId,f.comp_id.w=
orkflowState from JahiaFieldsData f where f.comp_id.id=3D? and " +
+                "((f.comp_id.workflowState>0 and f.comp_id.versionId=3D-1)=
 or f.comp_id.workflowState=3D-1)" +
+                "order by f.comp_id.workflowState desc";
+        final HibernateTemplate template =3D getHibernateTemplate();
+        template.setCacheQueries(true);
+        template.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+        List list =3D template.find(hql, new Object[]{fieldId});
+        if (!list.isEmpty()) {
+            return (Object[]) list.iterator().next();
+        }
+        return null;
+    }      =

 =

     private static boolean implicitDataConversion =3D true;
     private static Boolean isMySQLDB =3D null;

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerMan=
ager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaContainerManager.java&rev=3D19290&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/hibernate/manager/JahiaContainerManager.j=
ava (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaContainerManager.j=
ava Mon Nov 26 12:08:57 2007
@@ -1191,6 +1191,9 @@
 =

     public int getParentContainerListId(int id, EntryLoadRequest req) {
         Integer i =3D dao.getParentContainerListId(new Integer (id));
+        if (i =3D=3D null && (req.isWithDeleted() || req.isWithMarkedForDe=
letion())) {
+            i =3D dao.getDeletedParentContainerListId(new Integer (id));  =
        =

+        }        =

         if (i !=3D null) {
             return i.intValue();
         }

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataMa=
nager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaFieldsDataManager.java&rev=3D19290&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/hibernate/manager/JahiaFieldsDataManager.=
java (original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaFieldsDataManager.=
java Mon Nov 26 12:08:57 2007
@@ -1099,6 +1099,9 @@
 =

     public int[] getParentIds(int id, EntryLoadRequest req) {
         Object[] i =3D dao.getParentIds(new Integer (id));
+        if (i =3D=3D null && (req.isWithDeleted() || req.isWithMarkedForDe=
letion())) {
+            i =3D dao.getDeletedParentIds(new Integer (id));              =

+        }        =

         if (i !=3D null) {
             if (i[1] =3D=3D null) {
                 return new int[] {((Integer) i[0]).intValue(), -1};

Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaPagesManager=
.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaPagesManager.java&rev=3D19290&repname=3Djah=
ia
=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/hibernate/manager/JahiaPagesManager.java =
(original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaPagesManager.java =
Mon Nov 26 12:08:57 2007
@@ -270,10 +270,22 @@
                 // because we only retrieve the parent field for the new p=
osition,
                 // not all the old positions
                 try {
-                    pageFieldID =3D fieldDAO.getStagedPageFieldID(new Inte=
ger(pageID)).intValue();
+                    pageFieldID =3D fieldDAO.getStagedPageFieldID(
+                            new Integer(pageID)).intValue();
                 } catch (ObjectRetrievalFailureException e) {
-                    // return the active if the staging not found
-                    pageFieldID =3D fieldDAO.getActivePageFieldID(new Inte=
ger(pageID)).intValue();
+                    try {
+                        // return the active if the staging not found
+                        pageFieldID =3D fieldDAO.getActivePageFieldID(
+                                new Integer(pageID)).intValue();
+                    } catch (ObjectRetrievalFailureException ex) {
+                        // this is for the case, where staging is deleted =
(not
+                        // moved) and the active version has already been =
archived
+                        if (loadRequest.isWithDeleted()
+                                || loadRequest.isWithMarkedForDeletion()) {
+                            pageFieldID =3D fieldDAO.getDeletedPageFieldID(
+                                    new Integer(pageID)).intValue();
+                        }
+                    }
                 }
             } else if (loadRequest.isVersioned()) {
                 try {

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=3D19290&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 Mo=
n Nov 26 12:08:57 2007
@@ -709,7 +709,7 @@
         if (mode =3D=3D LINKED) {
             ContentObjectKey parent =3D getParent(object);
             if (parent =3D=3D null) {
-                return null;
+                return getHardLinkedMainObject(object);
             }
             if (getHardLinkedMainObject(parent).equals(getHardLinkedMainOb=
ject(object))) {
                 main =3D getMainLinkObject(parent, mode);

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

Reply via email to