Author: bpapez
Date: Fri Nov 23 17:12:21 2007
New Revision: 19276
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D19276&repname=
=3Djahia
Log:
http://www.jahia.net/jira/browse/VOD-54 Publishing is blocked by workflow =
operation due to integrity between database and viewing
* Fix retrieving the parent of an object if it is in a transient state
Modified:
branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/dao/JahiaContainerDAO.java
branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/dao/JahiaFieldsDataDAO.java
branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaContainerManager.java
branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaFieldsDataManager.java
branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaPagesManager.java
branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/service=
s/workflow/WorkflowService.java
Modified: branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/h=
ibernate/dao/JahiaContainerDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-VODAFO=
NE-5-0-2-SP%20BRANCH/core/src/java/org/jahia/hibernate/dao/JahiaContainerDA=
O.java&rev=3D19276&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
--- branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/dao/JahiaContainerDAO.java (original)
+++ branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/dao/JahiaContainerDAO.java Fri Nov 23 17:12:21 2007
@@ -1010,6 +1010,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: branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/h=
ibernate/dao/JahiaFieldsDataDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-VODAFO=
NE-5-0-2-SP%20BRANCH/core/src/java/org/jahia/hibernate/dao/JahiaFieldsDataD=
AO.java&rev=3D19276&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
--- branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/dao/JahiaFieldsDataDAO.java (original)
+++ branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/dao/JahiaFieldsDataDAO.java Fri Nov 23 17:12:21 2007
@@ -668,6 +668,29 @@
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;
StringBuffer hql =3D new StringBuffer("select distinct f.comp_id.i=
d from JahiaFieldsData f where f.type=3D")
@@ -1055,6 +1078,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: branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/h=
ibernate/manager/JahiaContainerManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-VODAFO=
NE-5-0-2-SP%20BRANCH/core/src/java/org/jahia/hibernate/manager/JahiaContain=
erManager.java&rev=3D19276&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
--- branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaContainerManager.java (original)
+++ branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaContainerManager.java Fri Nov 23 17:12:21 2007
@@ -1047,6 +1047,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: branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/h=
ibernate/manager/JahiaFieldsDataManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-VODAFO=
NE-5-0-2-SP%20BRANCH/core/src/java/org/jahia/hibernate/manager/JahiaFieldsD=
ataManager.java&rev=3D19276&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
--- branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaFieldsDataManager.java (original)
+++ branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaFieldsDataManager.java Fri Nov 23 17:12:21 2007
@@ -1045,6 +1045,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};
@@ -1054,7 +1057,7 @@
}
return new int[]{-1,-1};
}
-
+ =
public int[] getSubPageId(int id, EntryLoadRequest req) {
int ws =3D req.getWorkflowState();
if (ws =3D=3D EntryLoadRequest.STAGING_WORKFLOW_STATE) {
Modified: branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/h=
ibernate/manager/JahiaPagesManager.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-VODAFO=
NE-5-0-2-SP%20BRANCH/core/src/java/org/jahia/hibernate/manager/JahiaPagesMa=
nager.java&rev=3D19276&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
--- branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaPagesManager.java (original)
+++ branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/hiberna=
te/manager/JahiaPagesManager.java Fri Nov 23 17:12:21 2007
@@ -294,11 +294,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();
- } catch (ObjectRetrievalFailureException e) {
- // return the active if the staging not found
- pageFieldID =3D fieldDAO.getActivePageFieldID(new Inte=
ger(pageID)).intValue();
- }
+ pageFieldID =3D
fieldDAO.getStagedPageFieldID(
+ new
Integer(pageID)).intValue();
+ } catch (ObjectRetrievalFailureException e) {
+ 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.isWithMarkedForDeleti=
on()) {
+ pageFieldID =3D
fieldDAO.getDeletedPageFieldID(
+ new
Integer(pageID)).intValue();
+ } =
+ }
+ }
} else if (loadRequest.isVersioned()) {
try {
ContentPage contentPage =3D ContentPage.getPage(pageID=
, false);
Modified: branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/s=
ervices/workflow/WorkflowService.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/branches/JAHIA-VODAFO=
NE-5-0-2-SP%20BRANCH/core/src/java/org/jahia/services/workflow/WorkflowServ=
ice.java&rev=3D19276&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
--- branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/service=
s/workflow/WorkflowService.java (original)
+++ branches/JAHIA-VODAFONE-5-0-2-SP BRANCH/core/src/java/org/jahia/service=
s/workflow/WorkflowService.java Fri Nov 23 17:12:21 2007
@@ -724,7 +724,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