Project

General

Profile

Download (4.21 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2017 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.persistence.dao.hibernate.common;
10

    
11
import java.util.ArrayList;
12
import java.util.List;
13
import java.util.UUID;
14

    
15
import org.apache.commons.lang3.StringUtils;
16
import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;
17
import org.hibernate.Session;
18
import org.hibernate.query.Query;
19
import org.springframework.stereotype.Repository;
20

    
21
import eu.etaxonomy.cdm.common.URI;
22
import eu.etaxonomy.cdm.model.media.Rights;
23
import eu.etaxonomy.cdm.persistence.dao.common.IRightsDao;
24
import eu.etaxonomy.cdm.persistence.dto.UuidAndTitleCache;
25

    
26
/**
27
 * @author k.luther
28
 * @since 15.02.2017
29
 */
30
@Repository
31
public class RightsDaoImpl extends  LanguageStringBaseDaoImpl<Rights> implements IRightsDao  {
32

    
33
    @SuppressWarnings("unused")
34
    private static final Logger logger = LogManager.getLogger(RightsDaoImpl.class);
35

    
36
    public RightsDaoImpl(Class rightsClass) {
37
        super(rightsClass);
38
    }
39

    
40
    public RightsDaoImpl(){
41
        super(Rights.class);
42
    }
43

    
44
    @Override
45
    public List<UuidAndTitleCache<Rights>> getUuidAndTitleCache(Integer limit, String pattern) {
46
        List<UuidAndTitleCache<Rights>> list = new ArrayList<UuidAndTitleCache<Rights>>();
47
        Session session = getSession();
48

    
49
        String queryString = "SELECT " +"r.uuid, r.id, r.text, r.abbreviatedText, r.uri,  agent.titleCache, type.titleCache FROM " + type.getSimpleName() + " AS r LEFT OUTER JOIN r.agent AS agent LEFT OUTER JOIN r.type as type";
50

    
51
        if (pattern != null){
52
            queryString += " WHERE ";
53
            queryString += " r.text LIKE :pattern";
54
            queryString += " OR agent.titleCache LIKE :pattern";
55
            queryString += " OR r.abbreviatedText LIKE :pattern";
56
//            queryString += " OR r.uri LIKE :pattern";
57
//            queryString += " OR type.titleCache LIKE :pattern";
58
        }
59

    
60
        Query<Object[]> query;
61
        //if (pattern != null){
62
            query = session.createQuery(queryString, Object[].class);
63
//      }else{
64
//          query = session.createQuery("SELECT " +"r.uuid, r.id, r.titleCache, ab.titleCache FROM " + type.getSimpleName() + " AS r LEFT OUTER JOIN r.authorship AS ab ");//"select uuid, titleCache from " + type.getSimpleName());
65
//      }
66

    
67
        if (limit != null){
68
            query.setMaxResults(limit);
69
        }
70
        if (pattern != null){
71
              pattern = pattern.replace("*", "%");
72
              pattern = pattern.replace("?", "_");
73
              pattern = pattern + "%";
74
              query.setParameter("pattern", pattern);
75
        }
76

    
77
        List<Object[]> result = query.list();
78
        for(Object[] object : result){
79
            if (object[2] == null && object[3] == null && object[4] == null &&  object[5] == null &&  object[6] == null){
80
                continue;
81
            }
82
            String rightsText = "";
83
            String text = (String) object[2];
84
            String abbrev = (String) object[3];
85
            String uri = object[4]!= null?((URI)object[4]).toString(): null;
86
            String agentTitle = (String) object[5];
87
            String typeLabel = (String) object[6];
88

    
89
            boolean isFirst = true;
90

    
91
            if (StringUtils.isNotBlank(text)){
92
                rightsText = text;
93
            }
94
            if (StringUtils.isNotBlank(agentTitle)){
95
                rightsText = rightsText + (StringUtils.isBlank(rightsText)? "":" - ") + agentTitle ;
96
            }
97
            if (StringUtils.isNotBlank(typeLabel)){
98

    
99
                rightsText = rightsText+ (StringUtils.isBlank(rightsText) ?"":" - ") + typeLabel;
100
            }
101

    
102
            if (StringUtils.isNotBlank(abbrev)){
103
                rightsText = rightsText + (StringUtils.isBlank(rightsText) ?"":" - ") + abbrev;
104
            }
105
            if (StringUtils.isNotBlank(uri)){
106
                rightsText = rightsText + (StringUtils.isBlank(rightsText) ?"":" - ") + uri;
107
            }
108

    
109
            list.add(new UuidAndTitleCache<Rights>(Rights.class, (UUID) object[0],(Integer)object[1], rightsText));
110
        }
111

    
112
        return list;
113
    }
114
}
(15-15/18)