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

Reply via email to