Revision c781c97b
Added by Katja Luther over 6 years ago
cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/reference/ReferenceDaoHibernateImpl.java | ||
---|---|---|
23 | 23 |
import org.springframework.beans.factory.annotation.Qualifier; |
24 | 24 |
import org.springframework.stereotype.Repository; |
25 | 25 |
|
26 |
import eu.etaxonomy.cdm.model.common.DefinedTermBase; |
|
26 | 27 |
import eu.etaxonomy.cdm.model.reference.IArticle; |
27 | 28 |
import eu.etaxonomy.cdm.model.reference.IBookSection; |
28 | 29 |
import eu.etaxonomy.cdm.model.reference.IInProceedings; |
... | ... | |
36 | 37 |
import eu.etaxonomy.cdm.persistence.dao.hibernate.common.IdentifiableDaoBase; |
37 | 38 |
import eu.etaxonomy.cdm.persistence.dao.reference.IReferenceDao; |
38 | 39 |
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache; |
40 |
import eu.etaxonomy.cdm.persistence.query.MatchMode; |
|
39 | 41 |
import eu.etaxonomy.cdm.persistence.query.OrderHint; |
40 | 42 |
import eu.etaxonomy.cdm.strategy.cache.reference.DefaultReferenceCacheStrategy; |
41 | 43 |
|
... | ... | |
151 | 153 |
return list; |
152 | 154 |
} |
153 | 155 |
|
156 |
@Override |
|
157 |
public List<Object[]> findByIdentifierAbbrev(String identifier, DefinedTermBase identifierType, |
|
158 |
MatchMode matchmode,Integer limit){ |
|
159 |
checkNotInPriorView("IdentifiableDaoBase.findByIdentifier(T clazz, String identifier, DefinedTerm identifierType, MatchMode matchmode, Integer pageSize, Integer pageNumber, List<OrderHint> orderHints, List<String> propertyPaths)"); |
|
160 |
|
|
161 |
|
|
162 |
String queryString = "SELECT ids.type, ids.identifier, %s FROM %s as c " + |
|
163 |
" INNER JOIN c.identifiers as ids " + |
|
164 |
" WHERE (1=1) "; |
|
165 |
queryString = String.format(queryString, "c.uuid, c.titleCache, c.abbrevTitleCache" , "Reference"); |
|
166 |
|
|
167 |
//Matchmode and identifier |
|
168 |
if (identifier != null){ |
|
169 |
if (matchmode == null || matchmode == MatchMode.EXACT){ |
|
170 |
queryString += " AND ids.identifier = '" + identifier + "'"; |
|
171 |
}else { |
|
172 |
queryString += " AND ids.identifier LIKE '" + matchmode.queryStringFrom(identifier) + "'"; |
|
173 |
} |
|
174 |
} |
|
175 |
if (identifierType != null){ |
|
176 |
queryString += " AND ids.type = :type"; |
|
177 |
} |
|
178 |
//order |
|
179 |
queryString +=" ORDER BY ids.type.uuid, ids.identifier, c.uuid "; |
|
180 |
|
|
181 |
Query query = getSession().createQuery(queryString); |
|
182 |
|
|
183 |
//parameters |
|
184 |
if (identifierType != null){ |
|
185 |
query.setEntity("type", identifierType); |
|
186 |
} |
|
187 |
|
|
188 |
|
|
189 |
|
|
190 |
List<Object[]> results = query.list(); |
|
191 |
//initialize |
|
192 |
|
|
193 |
return results; |
|
194 |
} |
|
195 |
|
|
154 | 196 |
@Override |
155 | 197 |
public List<Reference> getAllReferencesForPublishing(){ |
156 | 198 |
@SuppressWarnings("unchecked") |
Also available in: Unified diff
implement possibility to get cdmEntities by identifiers in dialogs