\r
package eu.etaxonomy.cdm.api.service;\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.Set;\r
\r
import org.apache.log4j.Logger;\r
+import org.hibernate.collection.spi.PersistentCollection;\r
import org.springframework.beans.factory.annotation.Autowired;\r
import org.springframework.stereotype.Service;\r
+//import org.springframework.transaction.annotation.Propagation;\r
import org.springframework.transaction.annotation.Transactional;\r
\r
-import eu.etaxonomy.cdm.api.service.pager.Pager;\r
import eu.etaxonomy.cdm.model.common.CdmBase;\r
import eu.etaxonomy.cdm.model.common.ISourceable;\r
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;\r
-import eu.etaxonomy.cdm.model.common.OriginalSource;\r
+import eu.etaxonomy.cdm.model.common.OriginalSourceBase;\r
+import eu.etaxonomy.cdm.model.metadata.CdmMetaData;\r
+import eu.etaxonomy.cdm.model.metadata.CdmMetaData.MetaDataPropertyName;\r
import eu.etaxonomy.cdm.persistence.dao.common.ICdmGenericDao;\r
import eu.etaxonomy.cdm.persistence.dao.common.IOriginalSourceDao;\r
-import eu.etaxonomy.cdm.persistence.query.OrderHint;\r
+import eu.etaxonomy.cdm.strategy.match.DefaultMatchStrategy;\r
+import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;\r
+import eu.etaxonomy.cdm.strategy.match.IMatchable;\r
+import eu.etaxonomy.cdm.strategy.match.MatchException;\r
import eu.etaxonomy.cdm.strategy.merge.DefaultMergeStrategy;\r
import eu.etaxonomy.cdm.strategy.merge.IMergable;\r
import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;\r
\r
@Service\r
@Transactional(readOnly = true)\r
-public class CommonServiceImpl extends ServiceBase<OriginalSource,IOriginalSourceDao> implements ICommonService {\r
+public class CommonServiceImpl extends ServiceBase<OriginalSourceBase,IOriginalSourceDao> implements ICommonService {\r
@SuppressWarnings("unused")\r
private static final Logger logger = Logger.getLogger(CommonServiceImpl.class);\r
\r
this.dao = dao;\r
}\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.ICommonService#getSourcedObjectById(java.lang.String, java.lang.String)\r
- */\r
+ @Override\r
+ public CdmBase find(Class<? extends CdmBase> clazz, int id){\r
+ return genericDao.find(clazz, id);\r
+ }\r
+ \r
+\r
+ @Override\r
+ public Map<String, ? extends ISourceable> getSourcedObjectsByIdInSource(Class clazz, Set<String> idInSourceSet, String idNamespace) {\r
+ Map<String, ? extends ISourceable> list = originalSourceDao.findOriginalSourcesByIdInSource(clazz, idInSourceSet, idNamespace);\r
+ return list;\r
+ }\r
+ \r
+ @Override\r
public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace) {\r
ISourceable result = null;\r
-// List<OriginalSource> originalSource = originalSourceDao.findOriginalSourceByIdInSource(idInSource, idNamespace);\r
-// if (! originalSource.isEmpty()){\r
-// result = originalSource.get(0).getSourcedObj();\r
-// }\r
List<IdentifiableEntity> list = originalSourceDao.findOriginalSourceByIdInSource(clazz, idInSource, idNamespace);\r
if (! list.isEmpty()){\r
result = list.get(0);\r
}\r
\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.ICommonService#getReferencingObjects(eu.etaxonomy.cdm.model.common.CdmBase)\r
- */\r
+ @Override\r
public Set<CdmBase> getReferencingObjects(CdmBase referencedCdmBase){\r
return this.genericDao.getReferencingObjects(referencedCdmBase);\r
} \r
// referencedCdmBase = (CdmBase)HibernateProxyHelper.deproxy(referencedCdmBase);\r
// Class referencedClass = referencedCdmBase.getClass();\r
// Set<CdmBase> result = new HashSet<CdmBase>();\r
-// System.out.println("Referenced Class: " + referencedClass.getName());\r
+// logger.debug("Referenced Class: " + referencedClass.getName());\r
// \r
// for (Class<? extends CdmBase> cdmClass : allCdmClasses){\r
// Set<Field> fields = getFields(cdmClass);\r
// ParameterizedTypeImpl paraType = (ParameterizedTypeImpl)genericType;\r
// paraType.getRawType();\r
// Type[] arguments = paraType.getActualTypeArguments();\r
-// //System.out.println(arguments.length);\r
+// //logger.debug(arguments.length);\r
// if (arguments.length == 1){\r
// Class collectionClass;\r
// try {\r
// String className = StringUtils.rightPad(cdmClass.getSimpleName(), 30);\r
// String returnTypeName = StringUtils.rightPad(type.getSimpleName(), 30);\r
// \r
-// System.out.println(methodName + "\t\t" + className + "\t\t" + returnTypeName);\r
+// logger.debug(methodName + "\t\t" + className + "\t\t" + returnTypeName);\r
//// result_old.add(method);\r
// result.addAll(getCdmBasesByFieldAndClass(field, itemClass, cdmClass, value, isCollection));\r
// }\r
// return result;\r
// }\r
\r
+ @Override\r
public List getHqlResult(String hqlQuery){\r
return genericDao.getHqlResult(hqlQuery);\r
}\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.ICommonService#merge(eu.etaxonomy.cdm.strategy.merge.IMergable, eu.etaxonomy.cdm.strategy.merge.IMergable, eu.etaxonomy.cdm.strategy.merge.IMergeStragegy)\r
- */\r
+ @Override\r
public <T extends IMergable> void merge(T mergeFirst, T mergeSecond, IMergeStrategy mergeStrategy) throws MergeException {\r
if (mergeStrategy == null){\r
mergeStrategy = DefaultMergeStrategy.NewInstance(((CdmBase)mergeFirst).getClass());\r
genericDao.merge((CdmBase)mergeFirst, (CdmBase)mergeSecond, mergeStrategy);\r
}\r
\r
- /* (non-Javadoc)\r
- * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)\r
- */\r
- public <TYPE extends OriginalSource> Pager<TYPE> list(Class<TYPE> type,\r
- Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,\r
- List<String> propertyPaths) {\r
- // TODO Auto-generated method stub\r
- return null;\r
- }\r
\r
+ @Override\r
+ public <T extends IMatchable> List<T> findMatching(T objectToMatch, IMatchStrategy matchStrategy) throws MatchException {\r
+ if (matchStrategy == null){\r
+ matchStrategy = DefaultMatchStrategy.NewInstance(((objectToMatch).getClass()));\r
+ }\r
+ return genericDao.findMatching(objectToMatch, matchStrategy);\r
+ }\r
+ \r
+ \r
\r
+// /* (non-Javadoc)\r
+// * @see eu.etaxonomy.cdm.api.service.IService#list(java.lang.Class, java.lang.Integer, java.lang.Integer, java.util.List, java.util.List)\r
+// */\r
+// @Override\r
+// public <TYPE extends OriginalSourceBase> Pager<TYPE> list(Class<TYPE> type,\r
+// Integer pageSize, Integer pageNumber, List<OrderHint> orderHints,\r
+// List<String> propertyPaths) {\r
+// logger.warn("Not yet implemented");\r
+// return null;\r
+// }\r
+\r
+ @Transactional(readOnly = false)\r
+ @Override\r
+ public void saveAllMetaData(Collection<CdmMetaData> metaData) {\r
+ Iterator<CdmMetaData> iterator = metaData.iterator();\r
+ while(iterator.hasNext()){\r
+ CdmMetaData cdmMetaData = iterator.next();\r
+ genericDao.saveMetaData(cdmMetaData);\r
+ }\r
+ }\r
+\r
+ @Override\r
+ public Map<MetaDataPropertyName, CdmMetaData> getCdmMetaData() {\r
+ Map<MetaDataPropertyName, CdmMetaData> result = new HashMap<MetaDataPropertyName, CdmMetaData>();\r
+ List<CdmMetaData> metaDataList = genericDao.getMetaData();\r
+ for (CdmMetaData metaData : metaDataList){\r
+ MetaDataPropertyName propertyName = metaData.getPropertyName();\r
+ result.put(propertyName, metaData);\r
+ }\r
+ return result;\r
+ }\r
+\r
+ @Override\r
+ public PersistentCollection initializeCollection(PersistentCollection col) {\r
+ return genericDao.initializeCollection(col);\r
+\r
+ }\r
+ \r
+ @Override\r
+ public boolean isEmpty(PersistentCollection col) {\r
+ return genericDao.isEmpty(col);\r
+\r
+ }\r
+ \r
+ @Override\r
+ public int size(PersistentCollection col) {\r
+ return genericDao.size(col);\r
+ }\r
+ \r
+ @Override\r
+ public Object get(PersistentCollection col, int index) {\r
+ return genericDao.get(col, index);\r
+ }\r
+ \r
+ @Override\r
+ public boolean contains(PersistentCollection col, Object element) {\r
+ return genericDao.contains(col, element);\r
+ }\r
+ \r
+ @Override \r
+ public boolean containsKey(PersistentCollection col, Object key) {\r
+ return genericDao.containsKey(col, key);\r
+ }\r
+ \r
+ @Override\r
+ public boolean containsValue(PersistentCollection col, Object element) {\r
+ return genericDao.containsValue(col, element);\r
+ }\r
+\r
}\r