Project

General

Profile

« Previous | Next » 

Revision c781c97b

Added by Katja Luther over 6 years ago

implement possibility to get cdmEntities by identifiers in dialogs

View differences:

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