Fixed marshalling/unmarshalling of ReferenceBase, TypeDesignationBase, etc.
authora.babadshanjan <a.babadshanjan@localhost>
Fri, 5 Sep 2008 11:02:19 +0000 (11:02 +0000)
committera.babadshanjan <a.babadshanjan@localhost>
Fri, 5 Sep 2008 11:02:19 +0000 (11:02 +0000)
Added saveAll() to CdmEntityDaoBase.

.gitattributes
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ICdmEntityDao.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java [new file with mode: 0644]
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/CdmEntityDaoBase.java
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/ReferencedEntityDaoImpl.java [new file with mode: 0644]

index ad35575671f6de0de7c32eb99764f56b757448cd..87790121ffd667d5ab33eef1f4572ee0b9871b1d 100644 (file)
@@ -416,6 +416,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IDefine
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IIdentifiableDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IOrderedTermVocabularyDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IOriginalSourceDao.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITermVocabularyDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/ITitledDao.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/description/IDescriptionDao.java -text
@@ -429,6 +430,7 @@ cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/comm
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/IdentifiableDaoBase.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/OrderedTermVocabularyDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/OriginalSourceDaoImpl.java -text
+cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/ReferencedEntityDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/TermVocabularyDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/DescriptionDaoImpl.java -text
 cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/description/FeatureDaoImpl.java -text
index 4435a9d28dfd2ecbc62499c6c3f6239e989e6593..0346cc93c3c2b8dd05775fcf271fee36b13fe1c5 100644 (file)
@@ -9,7 +9,9 @@
 
 package eu.etaxonomy.cdm.persistence.dao.common;
 
+import java.util.Collection;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 import org.springframework.dao.DataAccessException;
 import eu.etaxonomy.cdm.model.common.CdmBase;
@@ -38,6 +40,8 @@ public interface ICdmEntityDao<T extends CdmBase> {
         */
        public UUID save(T newOrManagedObject) throws DataAccessException;
        
+       public Map<UUID, T> saveAll(Collection<T> cdmObjCollection) throws DataAccessException;
+
        /**
         * @param transientObject
         * @return
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/common/IReferencedEntityDao.java
new file mode 100644 (file)
index 0000000..ef10c4e
--- /dev/null
@@ -0,0 +1,20 @@
+/**\r
+* Copyright (C) 2008 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+*/\r
+\r
+package eu.etaxonomy.cdm.persistence.dao.common;\r
+\r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
+import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 04.09.2008\r
+ */\r
+public interface IReferencedEntityDao extends ICdmEntityDao<ReferencedEntityBase> {\r
+\r
+}\r
index 1b0af7ad410790c3f21813ac3b5b48f99f2ed142..5d213c7fdde0c45d98f6e228da8fb3777ed33cc4 100644 (file)
@@ -9,7 +9,11 @@
 \r
 package eu.etaxonomy.cdm.persistence.dao.hibernate.common;\r
 \r
+import java.util.Collection;\r
+import java.util.HashMap;\r
+import java.util.Iterator;\r
 import java.util.List;\r
+import java.util.Map;\r
 import java.util.UUID;\r
 \r
 import org.apache.log4j.Logger;\r
@@ -21,8 +25,10 @@ import org.hibernate.criterion.Order;
 import org.hibernate.criterion.Projection;\r
 import org.hibernate.criterion.Projections;\r
 import org.hibernate.criterion.Restrictions;\r
+import org.springframework.context.ApplicationContextAware;\r
 import org.springframework.dao.DataAccessException;\r
 import org.springframework.stereotype.Repository;\r
+import org.springframework.transaction.annotation.Transactional;\r
 \r
 import eu.etaxonomy.cdm.model.common.CdmBase;\r
 import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao;\r
@@ -34,9 +40,11 @@ import eu.etaxonomy.cdm.persistence.dao.common.ICdmEntityDao;
  */\r
 @Repository\r
 public abstract class CdmEntityDaoBase<T extends CdmBase> extends DaoBase implements ICdmEntityDao<T> {\r
+//public abstract class ServiceBase<T extends CdmBase> implements IService<T>, ApplicationContextAware {\r
 \r
        static Logger logger = Logger.getLogger(CdmEntityDaoBase.class);\r
 \r
+       int flushAfterNo = 2000;\r
        protected Class<T> type;\r
        \r
        public CdmEntityDaoBase(Class<T> type){\r
@@ -48,7 +56,46 @@ public abstract class CdmEntityDaoBase<T extends CdmBase> extends DaoBase implem
                getSession().saveOrUpdate(cdmObj);\r
                return cdmObj.getUuid();\r
        }\r
+       \r
+    //TODO: Replace saveCdmObj() by saveCdmObject_\r
+       private UUID saveCdmObject_(T cdmObj){\r
+               getSession().saveOrUpdate(cdmObj);\r
+               return cdmObj.getUuid();\r
+       }\r
+       \r
+    //TODO: Use everywhere CdmEntityDaoBase.saveAll() instead of ServiceBase.saveCdmObjectAll()?\r
+       public Map<UUID, T> saveAll(Collection<T> cdmObjCollection){\r
+               int types = cdmObjCollection.getClass().getTypeParameters().length;\r
+               if (types > 0){\r
+                       if (logger.isDebugEnabled()){logger.debug("ClassType: + " + cdmObjCollection.getClass().getTypeParameters()[0]);}\r
+               }\r
 \r
+               Map<UUID, T> resultMap = new HashMap<UUID, T>();\r
+               Iterator<T> iterator = cdmObjCollection.iterator();\r
+               int i = 0;\r
+               while(iterator.hasNext()){\r
+                       if ( ( (i % 5000) == 0) && (i > 0)   ){logger.debug("Saved " + i + " objects" );}\r
+                       T cdmObj = iterator.next();\r
+                       UUID uuid = saveCdmObject_(cdmObj);\r
+                       if (logger.isDebugEnabled()){logger.debug("Save cdmObj: " + (cdmObj == null? null: cdmObj.toString()));}\r
+                       resultMap.put(uuid, cdmObj);\r
+                       i++;\r
+                       if ( (i % flushAfterNo) == 0){\r
+                               try{\r
+                                       logger.debug("flush");\r
+                                       flush();\r
+                               }catch(Exception e){\r
+                                       logger.error("UUUIIIII");\r
+                                       e.printStackTrace();\r
+                               }\r
+                       }\r
+               }\r
+\r
+               if ( logger.isInfoEnabled() ){logger.info("Saved " + i + " objects" );}\r
+               return resultMap;\r
+       }\r
+\r
+       \r
        public UUID saveOrUpdate(T transientObject) throws DataAccessException  {\r
                try {\r
                        if (logger.isDebugEnabled()){logger.debug("dao saveOrUpdate start...");}\r
diff --git a/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/ReferencedEntityDaoImpl.java b/cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/common/ReferencedEntityDaoImpl.java
new file mode 100644 (file)
index 0000000..d8a903b
--- /dev/null
@@ -0,0 +1,31 @@
+/**\r
+* Copyright (C) 2008 EDIT\r
+* European Distributed Institute of Taxonomy \r
+* http://www.e-taxonomy.eu\r
+*/\r
+\r
+package eu.etaxonomy.cdm.persistence.dao.hibernate.common;\r
+\r
+import org.springframework.stereotype.Repository;\r
+\r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
+import eu.etaxonomy.cdm.model.common.ReferencedEntityBase;\r
+import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
+import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
+import eu.etaxonomy.cdm.persistence.dao.common.IReferencedEntityDao;\r
+import eu.etaxonomy.cdm.persistence.dao.common.ITermVocabularyDao;\r
+\r
+/**\r
+ * @author a.babadshanjan\r
+ * @created 05.09.2008\r
+ */\r
+@Repository\r
+public class ReferencedEntityDaoImpl extends CdmEntityDaoBase<ReferencedEntityBase> \r
+implements IReferencedEntityDao\r
+\r
+{\r
+       public ReferencedEntityDaoImpl() {\r
+               super(ReferencedEntityBase.class);\r
+       }\r
+\r
+}\r