Added saveAll() to CdmEntityDaoBase.
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
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
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;
*/
public UUID save(T newOrManagedObject) throws DataAccessException;
+ public Map<UUID, T> saveAll(Collection<T> cdmObjCollection) throws DataAccessException;
+
/**
* @param transientObject
* @return
--- /dev/null
+/**\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
\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
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
*/\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
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
--- /dev/null
+/**\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