Author: tdraier
Date: Thu Aug 2 16:20:44 2007
New Revision: 18109
URL: https://svndev.jahia.net/websvn/listing.php?sc=3D1&rev=3D18109&repname=
=3Djahia
Log:
moved jahia-link references to a separate table (port 18053)
Added:
trunk/core/src/java/org/jahia/hibernate/model/JahiaXRef.java
- copied unchanged from r18053, branches/JAHIA-5-0-SP-BRANCH/core/src=
/java/org/jahia/hibernate/model/JahiaXRef.java
trunk/core/src/java/org/jahia/hibernate/model/JahiaXRefPK.java
- copied unchanged from r18053, branches/JAHIA-5-0-SP-BRANCH/core/src=
/java/org/jahia/hibernate/model/JahiaXRefPK.java
Modified:
trunk/core/src/java/org/jahia/hibernate/dao/JahiaLinkDAO.java
trunk/core/src/java/org/jahia/hibernate/manager/JahiaLinkManager.java
trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hibernate.x=
ml
Modified: trunk/core/src/java/org/jahia/hibernate/dao/JahiaLinkDAO.java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/dao/JahiaLinkDAO.java&rev=3D18109&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/JahiaLinkDAO.java (original)
+++ trunk/core/src/java/org/jahia/hibernate/dao/JahiaLinkDAO.java Thu Aug =
2 16:20:44 2007
@@ -23,10 +23,13 @@
import org.apache.commons.logging.LogFactory;
import org.hibernate.HibernateException;
import org.jahia.hibernate.model.JahiaLink;
+import org.jahia.hibernate.model.JahiaXRef;
+import org.jahia.hibernate.model.JahiaXRefPK;
import org.springframework.orm.hibernate3.HibernateTemplate;
=
import java.sql.SQLException;
import java.util.List;
+import java.util.Collection;
=
/**
* Created by IntelliJ IDEA.
@@ -187,5 +190,48 @@
template.update(jahiaLink);
}
=
+
+ public JahiaXRef getJahiaXRef(Integer pageId, Integer refId, Integer r=
efType) {
+ HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
+ hibernateTemplate.setCacheQueries(true);
+ hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+ return (JahiaXRef) hibernateTemplate.get(JahiaXRef.class, new Jahi=
aXRefPK(pageId, refId, refType));
+ }
+
+ public List findJahiaXRefForPage(Integer pageId) {
+ HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
+ hibernateTemplate.setCacheQueries(true);
+ hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+ return hibernateTemplate.find("from JahiaXRef r " +
+ "where r.comp_id.pageId=3D?", pageId);
+ }
+
+ public List findJahiaXRefForPageAndType(Integer pageId, Integer type) {
+ HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
+ hibernateTemplate.setCacheQueries(true);
+ hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+ return hibernateTemplate.find("from JahiaXRef r " +
+ "where r.comp_id.pageId=3D? and r.comp_id.refType=3D=
?", new Object[] {pageId, type});
+ }
+
+ public List findJahiaXRefForObject(Integer refId, Integer type) {
+ HibernateTemplate hibernateTemplate =3D getHibernateTemplate();
+ hibernateTemplate.setCacheQueries(true);
+ hibernateTemplate.setFlushMode(HibernateTemplate.FLUSH_NEVER);
+ return hibernateTemplate.find("from JahiaXRef r " +
+ "where r.comp_id.refId=3D? and r.comp_id.refType=3D?=
", new Object[] {refId, type});
+ }
+
+ public void save(JahiaXRef jahiaLink) {
+ HibernateTemplate template =3D getHibernateTemplate();
+ template.setFlushMode(HibernateTemplate.FLUSH_AUTO);
+ synchronized(this) {
+ if (template.get(JahiaXRef.class, jahiaLink.getComp_id()) =3D=
=3D null) {
+ template.save(jahiaLink);
+ template.flush();
+ }
+ }
+ }
+
}
=
Modified: trunk/core/src/java/org/jahia/hibernate/manager/JahiaLinkManager.=
java
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/java/o=
rg/jahia/hibernate/manager/JahiaLinkManager.java&rev=3D18109&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/JahiaLinkManager.java (=
original)
+++ trunk/core/src/java/org/jahia/hibernate/manager/JahiaLinkManager.java T=
hu Aug 2 16:20:44 2007
@@ -1,18 +1,18 @@
/*
* Copyright 2002-2006 Jahia Ltd
*
- * Licensed under the JAHIA COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (J=
CDDL), =
- * Version 1.0 (the "License"), or (at your option) any later version; you=
may =
- * not use this file except in compliance with the License. You should hav=
e =
- * received a copy of the License along with this program; if not, you may=
obtain =
- * a copy of the License at =
+ * Licensed under the JAHIA COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (J=
CDDL),
+ * Version 1.0 (the "License"), or (at your option) any later version; you=
may
+ * not use this file except in compliance with the License. You should have
+ * received a copy of the License along with this program; if not, you may=
obtain
+ * a copy of the License at
*
* http://www.jahia.org/license/
*
- * Unless required by applicable law or agreed to in writing, software =
- * distributed under the License is distributed on an "AS IS" BASIS, =
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied=
. =
- * See the License for the specific language governing permissions and =
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
* limitations under the License.
*//*
* Copyright (c) 2005 Your Corporation. All Rights Reserved.
@@ -22,12 +22,12 @@
import org.apache.commons.collections.FastArrayList;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.jahia.content.ObjectKey;
-import org.jahia.content.ObjectLink;
-import org.jahia.content.StructuralRelationship;
+import org.jahia.content.*;
import org.jahia.exceptions.JahiaInitializationException;
import org.jahia.hibernate.dao.JahiaLinkDAO;
import org.jahia.hibernate.model.JahiaLink;
+import org.jahia.hibernate.model.JahiaXRef;
+import org.jahia.hibernate.model.JahiaXRefPK;
import org.jahia.services.cache.Cache;
import org.jahia.services.cache.CacheService;
import org.jahia.services.cache.GroupCacheKey;
@@ -71,14 +71,21 @@
=
public void createObjectLink(ObjectLink link) {
if (link.getLeftObjectKey().getIdInType() > 0 && link.getRightObje=
ctKey().getIdInType() > 0) {
- JahiaLink jahiaLink =3D fillJahiaLink(link);
- dao.save(jahiaLink);
- link.setID(jahiaLink.getId().intValue());
+ if (CrossReferenceManager.REFERENCE_TYPE.equals(link.getType()=
)) {
+ JahiaXRef jahiaLink =3D new JahiaXRef(new JahiaXRefPK(new =
Integer(link.getLeftObjectKey().getIdInType()),
+ new Integer(link.getRightObjectKey().getIdInType()=
),
+ new Integer(getType(link.getRightObjectKey().getTy=
pe()))));
+ dao.save(jahiaLink);
+ } else {
+ JahiaLink jahiaLink =3D fillJahiaLink(link);
+ dao.save(jahiaLink);
+ link.setID(jahiaLink.getId().intValue());
+ }
flushCache(link.getLeftObjectKey().toString(), link.getRightOb=
jectKey().toString());
createType(link.getType());
}
}
-
+ // none
public List findByLeftAndRightObjectKeys(ObjectKey leftObjectKey, Obje=
ctKey rightObjectKey) {
List objectLinks =3D null;
Cache cache =3D cacheService.getCache(CACHE_NAME+"findByLeftAndRig=
htObjectKeys");
@@ -108,7 +115,7 @@
}
return objectLinks;
}
-
+ // none
public List findByLeftObjectKey(ObjectKey objectXRef) {
List objectLinks =3D null;
Cache cache =3D cacheService.getCache(CACHE_NAME+"findByLeftObject=
Key");
@@ -137,7 +144,7 @@
}
return objectLinks;
}
-
+ // export
public List findByRightObjectKey(ObjectKey objectKey) {
List objectLinks =3D null;
Cache cache =3D cacheService.getCache(CACHE_NAME+"findByRightObjec=
tKey");
@@ -166,7 +173,7 @@
}
return objectLinks;
}
-
+ // none
public List findByRightAndLikeLeftObjectKey(ObjectKey objectKey, Strin=
g likeLeftObjectKey) {
List jahiaLinks =3D dao.findByRightAndLikeLeftObjectKey(objectKey
.toString(), likeLeftObjectKey);
@@ -178,13 +185,14 @@
}
return objectLinks;
}
- =
+ // catgeories
public List findByTypeAndLeftAndLikeRightObjectKeys(String type, Objec=
tKey leftObjectKey, String rightObjectKey) {
if (!typeExists(type)) {
return emptyList;
}
+
List jahiaLinks =3D dao.findByTypeAndLeftAndLikeRightObjectKeys(
- leftObjectKey.toString(), rightObjectKey, type);
+ leftObjectKey.toString(), rightObjectKey, type);
List objectLinks =3D new FastArrayList(jahiaLinks.size());
for (int i =3D 0; i < jahiaLinks.size(); i++) {
JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
@@ -192,8 +200,8 @@
objectLinks.add(objectLink);
}
return objectLinks;
- } =
-
+ }
+ // xref and categories
public List findByTypeAndLeftAndRightObjectKeys(String type, ObjectKey=
leftObjectKey, ObjectKey rightObjectKey) {
if (!typeExists(type)) {
return emptyList;
@@ -213,13 +221,21 @@
objectLinks =3D (List) cache.get(entryKey);
}
if (objectLinks =3D=3D null) {
- List jahiaLinks =3D dao.findByTypeAndLeftAndRightObjectKeys(le=
ftObjectKey.toString(), rightObjectKey.toString(),
- type=
);
- objectLinks =3D new FastArrayList(jahiaLinks.size());
- for (int i =3D 0; i < jahiaLinks.size(); i++) {
- JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
- ObjectLink objectLink =3D fillObjectLink(jahiaLink);
- objectLinks.add(objectLink);
+ if (CrossReferenceManager.REFERENCE_TYPE.equals(type)) {
+ JahiaXRef jahiaLink =3D dao.getJahiaXRef(new Integer(leftO=
bjectKey.getIdInType()), new Integer(rightObjectKey.getIdInType()), new Int=
eger(getType(rightObjectKey.getType())));
+ objectLinks =3D new FastArrayList(1);
+ if (jahiaLink !=3D null) {
+ objectLinks.add(fillObjectLink(jahiaLink));
+ }
+ } else {
+ List jahiaLinks =3D dao.findByTypeAndLeftAndRightObjectKey=
s(leftObjectKey.toString(), rightObjectKey.toString(),
+ type);
+ objectLinks =3D new FastArrayList(jahiaLinks.size());
+ for (int i =3D 0; i < jahiaLinks.size(); i++) {
+ JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
+ ObjectLink objectLink =3D fillObjectLink(jahiaLink);
+ objectLinks.add(objectLink);
+ }
}
if (cache !=3D null) {
cache.put(entryKey, objectLinks);
@@ -227,7 +243,7 @@
}
return objectLinks;
}
-
+ // xref, pickes, metadata, bigtext hardcoded, categories
public List findByTypeAndLeftObjectKey(String type, ObjectKey leftObje=
ctKey) {
if (!typeExists(type)) {
return emptyList;
@@ -247,12 +263,22 @@
objectLinks =3D (List) cache.get(entryKey);
}
if (objectLinks =3D=3D null) {
- List jahiaLinks =3D dao.findByTypeAndLeftObjectKey(leftObjectK=
ey.toString(), type);
- objectLinks =3D new FastArrayList(jahiaLinks.size());
- for (int i =3D 0; i < jahiaLinks.size(); i++) {
- JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
- ObjectLink objectLink =3D fillObjectLink(jahiaLink);
- objectLinks.add(objectLink);
+ if (CrossReferenceManager.REFERENCE_TYPE.equals(type)) {
+ List jahiaLinks =3D dao.findJahiaXRefForPage(new Integer(l=
eftObjectKey.getIdInType()));
+ objectLinks =3D new FastArrayList(jahiaLinks.size());
+ for (int i =3D 0; i < jahiaLinks.size(); i++) {
+ JahiaXRef jahiaLink =3D (JahiaXRef) jahiaLinks.get(i);
+ ObjectLink objectLink =3D fillObjectLink(jahiaLink);
+ objectLinks.add(objectLink);
+ }
+ } else {
+ List jahiaLinks =3D dao.findByTypeAndLeftObjectKey(leftObj=
ectKey.toString(), type);
+ objectLinks =3D new FastArrayList(jahiaLinks.size());
+ for (int i =3D 0; i < jahiaLinks.size(); i++) {
+ JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
+ ObjectLink objectLink =3D fillObjectLink(jahiaLink);
+ objectLinks.add(objectLink);
+ }
}
if (cache !=3D null) {
cache.put(entryKey, objectLinks);
@@ -260,7 +286,22 @@
}
return objectLinks;
}
+ // categories
+ public List findByTypeAndRightAndLikeLeftObjectKey(String type, Object=
Key rightObjectKey, String leftObjectKey) {
+ if (!typeExists(type)) {
+ return emptyList;
+ }
=
+ List jahiaLinks =3D dao.findByTypeAndRightAndLikeLeftObjectKey(rig=
htObjectKey.toString(), leftObjectKey, type);
+ List objectLinks =3D new FastArrayList(jahiaLinks.size());
+ for (int i =3D 0; i < jahiaLinks.size(); i++) {
+ JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
+ ObjectLink objectLink =3D fillObjectLink(jahiaLink);
+ objectLinks.add(objectLink);
+ }
+ return objectLinks;
+ }
+ // metadata, pickers, xref, ..
public List findByTypeAndRightObjectKey(String type, ObjectKey rightOb=
jectKey) {
if (!typeExists(type)) {
return emptyList;
@@ -280,12 +321,22 @@
objectLinks =3D (List) cache.get(entryKey);
}
if (objectLinks =3D=3D null || type.equals(StructuralRelationship.=
ACTIVATION_PICKER_LINK)) {
- List jahiaLinks =3D dao.findByTypeAndRightObjectKey(rightObjec=
tKey.toString(), type);
- objectLinks =3D new FastArrayList(jahiaLinks.size());
- for (int i =3D 0; i < jahiaLinks.size(); i++) {
- JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
- ObjectLink objectLink =3D fillObjectLink(jahiaLink);
- objectLinks.add(objectLink);
+ if (CrossReferenceManager.REFERENCE_TYPE.equals(type)) {
+ List jahiaLinks =3D dao.findJahiaXRefForObject(new Integer=
(getType(rightObjectKey.getType())), new Integer(rightObjectKey.getIdInType=
()));
+ objectLinks =3D new FastArrayList(jahiaLinks.size());
+ for (int i =3D 0; i < jahiaLinks.size(); i++) {
+ JahiaXRef jahiaLink =3D (JahiaXRef) jahiaLinks.get(i);
+ ObjectLink objectLink =3D fillObjectLink(jahiaLink);
+ objectLinks.add(objectLink);
+ }
+ } else {
+ List jahiaLinks =3D dao.findByTypeAndRightObjectKey(rightO=
bjectKey.toString(), type);
+ objectLinks =3D new FastArrayList(jahiaLinks.size());
+ for (int i =3D 0; i < jahiaLinks.size(); i++) {
+ JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
+ ObjectLink objectLink =3D fillObjectLink(jahiaLink);
+ objectLinks.add(objectLink);
+ }
}
if (cache !=3D null) {
cache.put(entryKey, objectLinks);
@@ -293,23 +344,7 @@
}
return objectLinks;
}
- =
- public List findByTypeAndRightAndLikeLeftObjectKey(String type, Object=
Key rightObjectKey, String leftObjectKey) {
- if (!typeExists(type)) {
- return emptyList;
- }
- List objectLinks =3D null;
-
- List jahiaLinks =3D dao.findByTypeAndRightAndLikeLeftObjectKey(rig=
htObjectKey.toString(), leftObjectKey, type);
- objectLinks =3D new FastArrayList(jahiaLinks.size());
- for (int i =3D 0; i < jahiaLinks.size(); i++) {
- JahiaLink jahiaLink =3D (JahiaLink) jahiaLinks.get(i);
- ObjectLink objectLink =3D fillObjectLink(jahiaLink);
- objectLinks.add(objectLink);
- }
- return objectLinks;
- } =
-
+ // none
public List findByTypeAndRightObjectKey(String type, ObjectKey[] right=
ObjectKeys) {
if (!typeExists(type)) {
return emptyList;
@@ -329,12 +364,12 @@
return objectLinks;
}
=
-
+ // none
public ObjectLink getObjectLink(int linkID) {
JahiaLink jahiaLink =3D dao.getJahiaLink(new Integer(linkID));
return fillObjectLink(jahiaLink);
}
-
+ // none
public void preloadObjectXRefsByRefObjectKey(ObjectKey childInstance) {
dao.preloadObjectXRefsByRefObjectKey(childInstance.toString());
}
@@ -405,7 +440,7 @@
cache.flushGroup(rightKey);
}
}
-
+ // mnetadata
public void updateObjectLink(ObjectLink objectLink) {
int fieldId =3D objectLink.getID();
if(objectLink.getLeftObjectKey().getIdInType()>0 && objectLink.get=
RightObjectKey().getIdInType()>0) {
@@ -444,5 +479,44 @@
}
return objectLink;
}
+
+ private ObjectLink fillObjectLink(JahiaXRef jahiaLink) {
+ ObjectLink objectLink =3D null;
+ try {
+ objectLink =3D new ObjectLink(0,
+ new ContentPageKey(jahiaLink.getCo=
mp_id().getPageId().intValue()),
+ ObjectKey.getInstance(getType(jahi=
aLink.getComp_id().getRefType().intValue())+"_"+jahiaLink.getComp_id().getR=
efId()),
+ CrossReferenceManager.REFERENCE_TY=
PE,
+ new HashMap(2));
+ } catch (ClassNotFoundException e) {
+ log.error("Class Not found when converting ObjectLink", e);
+ }
+ return objectLink;
+ }
+
+ private int getType(String type ) {
+ if ("ContentPage".equals(type)) {
+ return 1;
+ } else if ("ContentContainerList".equals(type)) {
+ return 2;
+ } else if ("ContentContainer".equals(type)) {
+ return 3;
+ } else if ("ContentField".equals(type)) {
+ return 4;
+ } else {
+ return 0;
+ }
+ }
+
+ private String getType(int type ) {
+ switch (type) {
+ case 1: return "ContentPage";
+ case 2: return "ContentContainerList";
+ case 3: return "ContentContainer";
+ case 4: return "ContentField";
+ default: return "";
+ }
+ }
+
}
=
Modified: trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hiber=
nate.xml
URL: https://svndev.jahia.net/websvn/diff.php?path=3D/trunk/core/src/webapp=
/WEB-INF/etc/spring/applicationcontext-hibernate.xml&rev=3D18109&repname=3D=
jahia
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=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/webapp/WEB-INF/etc/spring/applicationcontext-hibernate.x=
ml (original)
+++ trunk/core/src/webapp/WEB-INF/etc/spring/applicationcontext-hibernate.x=
ml Thu Aug 2 16:20:44 2007
@@ -100,6 +100,7 @@
<value>org/jahia/hibernate/model/JahiaUserProp.hbm.xml</va=
lue>
<value>org/jahia/hibernate/model/JahiaWorkflow.hbm.xml</va=
lue>
<value>org/jahia/hibernate/model/JahiaLanguagesStates.hbm.=
xml</value>
+ <value>org/jahia/hibernate/model/JahiaXRef.hbm.xml</value>
<value>org/jahia/workflow/nstep/model/User.hbm.xml</value>
<value>org/jahia/workflow/nstep/model/Workflow.hbm.xml</va=
lue>
<value>org/jahia/workflow/nstep/model/WorkflowStep.hbm.xml=
</value>
_______________________________________________
cvs_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/cvs_list