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