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 }