001    /**
002     * Copyright 2005-2013 The Kuali Foundation
003     *
004     * Licensed under the Educational Community License, Version 2.0 (the "License");
005     * you may not use this file except in compliance with the License.
006     * You may obtain a copy of the License at
007     *
008     * http://www.opensource.org/licenses/ecl2.php
009     *
010     * Unless required by applicable law or agreed to in writing, software
011     * distributed under the License is distributed on an "AS IS" BASIS,
012     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013     * See the License for the specific language governing permissions and
014     * limitations under the License.
015     */
016    package org.kuali.rice.kew.docsearch.dao.impl;
017    
018    import java.math.BigDecimal;
019    import java.sql.Timestamp;
020    import java.util.ArrayList;
021    import java.util.List;
022    
023    import javax.persistence.EntityManager;
024    import javax.persistence.PersistenceContext;
025    import javax.persistence.Query;
026    
027    import org.kuali.rice.kew.docsearch.SearchableAttributeDateTimeValue;
028    import org.kuali.rice.kew.docsearch.SearchableAttributeFloatValue;
029    import org.kuali.rice.kew.docsearch.SearchableAttributeLongValue;
030    import org.kuali.rice.kew.docsearch.SearchableAttributeStringValue;
031    import org.kuali.rice.kew.docsearch.dao.SearchableAttributeDAO;
032    
033    /**
034     * JPA implementation of SearchableAttributeDAO
035     *
036     * @author Kuali Rice Team (rice.collab@kuali.org)
037     *
038     */
039    public class SearchableAttributeDAOJpaImpl implements SearchableAttributeDAO {
040    
041            @PersistenceContext(unitName = "kew-unit")
042            private EntityManager entityManager;
043    
044            /**
045             * This overridden method queries the SearchableAttributeDateTimeValue persistence class
046             *
047             * @see org.kuali.rice.kew.docsearch.dao.SearchableAttributeDAO#getSearchableAttributeDateTimeValuesByKey(java.lang.Long,
048             *      java.lang.String)
049             */
050            public List<Timestamp> getSearchableAttributeDateTimeValuesByKey(
051                            String documentId, String key) {
052    
053                    List<Timestamp> lRet = null;
054                    Query query = entityManager.createNamedQuery("SearchableAttributeDateTimeValue.FindByKey");
055            query.setParameter("documentId", documentId);
056            query.setParameter("searchableAttributeKey", key);
057            List<SearchableAttributeDateTimeValue> results = query.getResultList();
058            if (!results.isEmpty()) {
059                    lRet = new ArrayList<Timestamp>();
060                for (SearchableAttributeDateTimeValue attribute: results) {
061                    lRet.add(attribute.getSearchableAttributeValue());
062                }
063            }
064                    return lRet;
065            }
066    
067            /**
068             * This overridden method queries the SearchableAttributeFloatValue persistence class
069             *
070             * @see org.kuali.rice.kew.docsearch.dao.SearchableAttributeDAO#getSearchableAttributeFloatValuesByKey(java.lang.Long,
071             *      java.lang.String)
072             */
073            public List<BigDecimal> getSearchableAttributeFloatValuesByKey(
074                            String documentId, String key) {
075                    List<BigDecimal> lRet = null;
076                    Query query = entityManager.createNamedQuery("SearchableAttributeFloatValue.FindByKey");
077            query.setParameter("documentId", documentId);
078            query.setParameter("searchableAttributeKey", key);
079            List<SearchableAttributeFloatValue> results = query.getResultList();
080            if (!results.isEmpty()) {
081                    lRet = new ArrayList<BigDecimal>();
082                for (SearchableAttributeFloatValue attribute: results) {
083                    lRet.add(attribute.getSearchableAttributeValue());
084                }
085            }
086                    return lRet;
087            }
088    
089            /**
090             * This overridden method queries the searchableAttributeKey persistence class
091             *
092             * @see org.kuali.rice.kew.docsearch.dao.SearchableAttributeDAO#getSearchableAttributeLongValuesByKey(java.lang.Long,
093             *      java.lang.String)
094             */
095            public List<Long> getSearchableAttributeLongValuesByKey(String documentId,
096                            String key) {
097                    List<Long> lRet = null;
098                    Query query = entityManager.createNamedQuery("SearchableAttributeLongValue.FindByKey");
099            query.setParameter("documentId", documentId);
100            query.setParameter("searchableAttributeKey", key);
101            List<SearchableAttributeLongValue> results = query.getResultList();
102            if (!results.isEmpty()) {
103                    lRet = new ArrayList<Long>();
104                for (SearchableAttributeLongValue attribute: results) {
105                    lRet.add(attribute.getSearchableAttributeValue());
106                }
107            }
108                    return lRet;
109            }
110    
111            /**
112             * This overridden method queries the SearchableAttributeStringValue persistence class
113             *
114             * @see org.kuali.rice.kew.docsearch.dao.SearchableAttributeDAO#getSearchableAttributeStringValuesByKey(java.lang.Long,
115             *      java.lang.String)
116             */
117            public List<String> getSearchableAttributeStringValuesByKey(
118                            String documentId, String key) {
119                    List<String> lRet = null;
120                    Query query = entityManager.createNamedQuery("SearchableAttributeStringValue.FindByKey");
121            query.setParameter("documentId", documentId);
122            query.setParameter("searchableAttributeKey", key);
123            List<SearchableAttributeStringValue> results = query.getResultList();
124            if (!results.isEmpty()) {
125                    lRet = new ArrayList<String>();
126                for (SearchableAttributeStringValue attribute: results) {
127                    lRet.add(attribute.getSearchableAttributeValue());
128                }
129            }
130                    return lRet;
131            }
132    
133        public EntityManager getEntityManager() {
134            return this.entityManager;
135        }
136    
137        public void setEntityManager(EntityManager entityManager) {
138            this.entityManager = entityManager;
139        }
140    
141    }