f3f055a7b807a58224673a5a987236bc9ac51f70
[taxeditor.git] / eu.etaxonomy.taxeditor.store / src / main / java / eu / etaxonomy / taxeditor / store / SearchManager.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.taxeditor.store;
12
13 import java.util.ArrayList;
14 import java.util.List;
15
16 import eu.etaxonomy.cdm.api.service.IAgentService;
17 import eu.etaxonomy.cdm.api.service.IGroupService;
18 import eu.etaxonomy.cdm.api.service.INameService;
19 import eu.etaxonomy.cdm.api.service.IOccurrenceService;
20 import eu.etaxonomy.cdm.api.service.IReferenceService;
21 import eu.etaxonomy.cdm.api.service.ITaxonService;
22 import eu.etaxonomy.cdm.api.service.IUserService;
23 import eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator;
24 import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;
25 import eu.etaxonomy.cdm.model.agent.AgentBase;
26 import eu.etaxonomy.cdm.model.common.Group;
27 import eu.etaxonomy.cdm.model.common.User;
28 import eu.etaxonomy.cdm.model.common.UuidAndTitleCache;
29 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
30 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
31 import eu.etaxonomy.cdm.model.reference.Reference;
32 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
33
34 /**
35 * @author n.hoffmann
36 * @created Dec 8, 2010
37 * @version 1.0
38 */
39 public class SearchManager {
40 /**
41 * <p>findNames</p>
42 *
43 * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object.
44 * @return a {@link java.util.List} object.
45 */
46 public List<TaxonNameBase> findNames(IIdentifiableEntityServiceConfigurator configurator){
47 // TODO we want to use IIdentifiableEntityServiceConfigurator for all find methods
48 // unfortunately this is not consistently implemented in the library.
49 // FIXME use proper method once it is implemented in the library
50 String titleSearchString = configurator.getTitleSearchString().replace("*", "%");
51
52 return CdmStore.getService(INameService.class).getNamesByName(titleSearchString);
53 }
54
55 /**
56 * <p>findTaxaAndNames</p>
57 *
58 * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator} object.
59 * @return a {@link java.util.List} object.
60 */
61 public List<UuidAndTitleCache<TaxonBase>> findTaxaAndNames(ITaxonServiceConfigurator configurator){
62
63 return CdmStore.getService(ITaxonService.class).findTaxaAndNamesForEditor(configurator);
64 }
65
66 /**
67 * <p>findReferences</p>
68 *
69 * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object.
70 * @return a {@link java.util.List} object.
71 */
72 public List<Reference> findReferences(IIdentifiableEntityServiceConfigurator configurator){
73 // TODO we want to use IIdentifiableEntityServiceConfigurator for all find methods
74 // unfortunately this is not consistently implemented in the library.
75 // FIXME use proper method once it is implemented in the library
76 String titleSearchString = configurator.getTitleSearchString().replace("*", "%");
77
78 return CdmStore.getService(IReferenceService.class).findByTitle(null, titleSearchString, null, null, null, null, null, null).getRecords();
79 }
80
81 /**
82 * <p>findAgents</p>
83 *
84 * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object.
85 * @return a {@link java.util.List} object.
86 */
87 public List<AgentBase> findAgents(IIdentifiableEntityServiceConfigurator configurator){
88 // TODO we want to use IIdentifiableEntityServiceConfigurator for all find methods
89 // unfortunately this is not consistently implemented in the library.
90 // FIXME use proper method once it is implemented in the library
91 String titleSearchString = configurator.getTitleSearchString().replace("*", "%");
92
93 return CdmStore.getService(IAgentService.class).findByTitle(null, titleSearchString, null, null, null, null, null, null).getRecords();
94 }
95
96 /**
97 * <p>findTeamOrPersons</p>
98 *
99 * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object.
100 * @return a {@link java.util.List} object.
101 */
102 public List<AgentBase> findTeamOrPersons(IIdentifiableEntityServiceConfigurator configurator){
103 // TODO move this to cdmlib
104 List<AgentBase> result = new ArrayList<AgentBase>();
105 for (AgentBase agent : findAgents(configurator)) {
106 result.add((AgentBase) agent);
107 }
108 return result;
109 }
110
111 /**
112 * <p>findOccurrences</p>
113 *
114 * @param configurator a {@link eu.etaxonomy.cdm.api.service.config.IIdentifiableEntityServiceConfigurator} object.
115 * @return a {@link java.util.List} object.
116 */
117 public List<SpecimenOrObservationBase> findOccurrences(IIdentifiableEntityServiceConfigurator configurator){
118 // TODO we want to use IIdentifiableEntityServiceConfigurator for all find methods
119 // unfortunately this is not consistently implemented in the library.
120 // FIXME use proper method once it is implemented in the library
121 String titleSearchString = configurator.getTitleSearchString().replace("*", "%");
122
123 return CdmStore.getService(IOccurrenceService.class).findByTitle(SpecimenOrObservationBase.class, titleSearchString, null, null, null, null, null, null).getRecords();
124 }
125
126 public List<User> findUsers(IIdentifiableEntityServiceConfigurator configurator){
127 String userNameSearchString = configurator.getTitleSearchString().replace("*", "%");
128
129 // FIXME there is no search at the moment, we will return all users for starters
130 return CdmStore.getService(IUserService.class).list(User.class, null, null, null, null);
131 }
132
133 public List<Group> findGroups(IIdentifiableEntityServiceConfigurator configurator){
134 String groupNameSearchString = configurator.getTitleSearchString().replace("*", "%");
135
136 // FIXME there is no search at the moment, we will return all users for starters
137 return CdmStore.getService(IGroupService.class).list(Group.class, null, null, null, null);
138 }
139 }