changed flush mode to COMMIT. Solves lots of issues regarding hibernate conversations.
[cdmlib.git] / cdmlib-services / src / main / java / eu / etaxonomy / cdm / api / service / ICommonService.java
1 // $Id$
2 /**
3 * Copyright (C) 2007 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
9 */
10
11 package eu.etaxonomy.cdm.api.service;
12
13 import java.util.Collection;
14 import java.util.List;
15 import java.util.Map;
16 import java.util.Set;
17
18 import eu.etaxonomy.cdm.model.common.CdmBase;
19 import eu.etaxonomy.cdm.model.common.CdmMetaData;
20 import eu.etaxonomy.cdm.model.common.ISourceable;
21 import eu.etaxonomy.cdm.model.common.OriginalSourceBase;
22 import eu.etaxonomy.cdm.model.common.CdmMetaData.MetaDataPropertyName;
23 import eu.etaxonomy.cdm.strategy.match.IMatchStrategy;
24 import eu.etaxonomy.cdm.strategy.match.IMatchable;
25 import eu.etaxonomy.cdm.strategy.match.MatchException;
26 import eu.etaxonomy.cdm.strategy.merge.IMergable;
27 import eu.etaxonomy.cdm.strategy.merge.IMergeStrategy;
28 import eu.etaxonomy.cdm.strategy.merge.MergeException;
29
30
31 public interface ICommonService extends IService<OriginalSourceBase>{
32 //
33 // /** find cdmBase by UUID**/
34 // public abstract CdmBase getCdmBaseByUuid(UUID uuid);
35 //
36 // /** save a reference and return its UUID**/
37 // public abstract UUID saveCdmBase(CdmBase cdmBase);
38
39 /**
40 * Saves all meta data
41 * @param metaData
42 */
43 public void saveAllMetaData(Collection<CdmMetaData> metaData);
44
45 /**
46 * Returns all meta data.
47 * @return
48 */
49 public Map<MetaDataPropertyName, CdmMetaData> getCdmMetaData();
50
51
52 /** find cdmBase by UUID**/
53 public ISourceable getSourcedObjectByIdInSource(Class clazz, String idInSource, String idNamespace);
54
55
56 /**
57 * Returns all CdmBase objects that reference the referencedCdmBase.
58 * For example, if referencedCdmBase is an agent it may return all taxon names
59 * that have this person as an author but also all books, articles, etc. that have
60 * this person as an author
61 * @param referencedCdmBase
62 * @return
63 */
64 public Set<CdmBase> getReferencingObjects(CdmBase referencedCdmBase);
65
66 /**
67 * Merges mergeSecond into mergeFirst. All references to mergeSecond will be replaced by references
68 * to merge first. If no merge strategy is defined (null), the DefaultMergeStrategy will be taken as default.
69 * @param <T>
70 * @param mergeFirst
71 * @param mergeSecond
72 * @param mergeStrategy
73 * @throws MergeException
74 */
75 public <T extends IMergable> void merge(T mergeFirst, T mergeSecond, IMergeStrategy mergeStrategy) throws MergeException;
76
77 /**
78 * Returns all objects that match the object to match according to the given match strategy.
79 * If no match strategy is defined the default match strategy is taken.
80 * @param <T>
81 * @param objectToMatch
82 * @param matchStrategy
83 * @return
84 * @throws MatchException
85 */
86 public <T extends IMatchable> List<T> findMatching(T objectToMatch, IMatchStrategy matchStrategy) throws MatchException;
87
88
89 public List getHqlResult(String hqlQuery);
90
91
92
93
94 }