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.useroptions.dao.impl; 017 018 import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader; 019 import org.kuali.rice.core.api.util.RiceConstants; 020 import org.kuali.rice.core.framework.persistence.platform.DatabasePlatform; 021 import org.kuali.rice.kew.api.KewApiConstants; 022 import org.kuali.rice.kew.useroptions.UserOptions; 023 import org.kuali.rice.kew.useroptions.dao.UserOptionsDAO; 024 025 import com.google.common.collect.Iterables; 026 import com.google.common.collect.Lists; 027 028 import javax.persistence.EntityManager; 029 import javax.persistence.PersistenceContext; 030 import java.util.ArrayList; 031 import java.util.Collection; 032 import java.util.List; 033 034 035 public class UserOptionsDaoJpaImpl implements UserOptionsDAO { 036 037 @PersistenceContext 038 private EntityManager entityManager; 039 040 public Long getNewOptionIdForActionList() { 041 return getPlatform().getNextValSQL("KREW_ACTN_LIST_OPTN_S", entityManager); 042 } 043 044 protected DatabasePlatform getPlatform() { 045 return (DatabasePlatform) GlobalResourceLoader.getService(RiceConstants.DB_PLATFORM); 046 } 047 048 public List findByUserQualified(String principalId, String likeString) { 049 return new ArrayList(entityManager.createNamedQuery("UserOptions.FindByUserQualified").setParameter("workflowId", principalId).setParameter("optionId", likeString).getResultList()); 050 } 051 052 public void deleteByUserQualified(String principalId, String likeString) { 053 List<UserOptions> userOptions = (List<UserOptions>) entityManager.createNamedQuery("UserOptions.FindByUserQualified").setParameter("workflowId", principalId).setParameter("optionId", likeString).getResultList(); 054 for (UserOptions uo : userOptions) { 055 entityManager.remove(uo); 056 } 057 } 058 059 public Collection findByWorkflowUser(String principalId) { 060 return entityManager.createNamedQuery("UserOptions.FindByWorkflowId").setParameter("workflowId", principalId).getResultList(); 061 } 062 063 public void save(UserOptions userOptions) { 064 if (userOptions.getOptionId() == null) { 065 entityManager.persist(userOptions); 066 } else { 067 entityManager.merge(userOptions); 068 } 069 } 070 071 public void save(Collection<UserOptions> userOptions) { 072 if (userOptions != null) for (UserOptions option : userOptions) { 073 save(option); 074 } 075 } 076 077 public void deleteUserOptions(UserOptions userOptions) { 078 UserOptions reattatched = entityManager.merge(userOptions); 079 entityManager.remove(reattatched); 080 } 081 082 public UserOptions findByOptionId(String optionId, String principalId) { 083 return (UserOptions) entityManager.createNamedQuery("UserOptions.FindByOptionId").setParameter("optionId", optionId).setParameter("workflowId", principalId).getSingleResult(); 084 } 085 086 public Collection findByOptionValue(String optionId, String optionValue) { 087 return entityManager.createNamedQuery("UserOptions.FindByOptionValue").setParameter("optionId", optionId).setParameter("optionValue", optionValue).getResultList(); 088 } 089 090 @Override 091 public List<UserOptions> findEmailUserOptionsByType(String emailSetting) { 092 return Lists.newArrayList(Iterables.filter(entityManager.createNamedQuery("UserOptions.FindByOptionValue") 093 .setParameter("optionId", KewApiConstants.EMAIL_RMNDR_KEY) 094 .setParameter("optionIdLike", "%" + KewApiConstants.DOCUMENT_TYPE_NOTIFICATION_PREFERENCE_SUFFIX) 095 .setParameter("optionValue", emailSetting) 096 .getResultList(), 097 UserOptions.class)); 098 } 099 100 public EntityManager getEntityManager() { 101 return this.entityManager; 102 } 103 104 public void setEntityManager(EntityManager entityManager) { 105 this.entityManager = entityManager; 106 } 107 }