001/** 002 * Copyright 2005-2016 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 */ 016package org.kuali.rice.kew.useroptions; 017 018import java.util.ArrayList; 019import java.util.Collection; 020import java.util.List; 021import java.util.Map; 022import java.util.Properties; 023import java.util.Map.Entry; 024 025import org.kuali.rice.kew.useroptions.dao.UserOptionsDAO; 026import org.kuali.rice.kew.api.KewApiConstants; 027import org.springframework.transaction.annotation.Transactional; 028 029@Transactional 030public class UserOptionsServiceImpl implements UserOptionsService { 031 032 private UserOptionsDAO userOptionsDAO; 033 034 private static final Properties defaultProperties = new Properties(); 035 036 static { 037 defaultProperties.setProperty(KewApiConstants.EMAIL_RMNDR_KEY, KewApiConstants.EMAIL_RMNDR_WEEK_VAL); 038 } 039 040 private Long getNewOptionIdForActionList() { 041 return getUserOptionsDAO().getNewOptionIdForActionList(); 042 } 043 044 public List<UserOptions> findByUserQualified(String principalId, String likeString) { 045 if ((principalId == null)) { 046 return new ArrayList<UserOptions>(0); 047 } 048 return this.getUserOptionsDAO().findByUserQualified(principalId, likeString); 049 } 050 051 public UserOptions findByOptionId(String optionId, String principalId) { 052 if (optionId == null || "".equals(optionId) || principalId == null || "".equals(principalId)) { 053 return null; 054 } 055 return this.getUserOptionsDAO().findByOptionId(optionId, principalId); 056 } 057 058 public Collection<UserOptions> findByOptionValue(String optionId, String optionValue){ 059 return this.getUserOptionsDAO().findByOptionValue(optionId, optionValue); 060 } 061 062 public Collection<UserOptions> findByWorkflowUser(String principalId) { 063 return this.getUserOptionsDAO().findByWorkflowUser(principalId); 064 } 065 066 public void save(UserOptions userOptions) { 067 this.getUserOptionsDAO().save(userOptions); 068 } 069 070 /** 071 * This overridden method saves an option for each optionsMap entry, all for the given principalId 072 * 073 * @see org.kuali.rice.kew.useroptions.UserOptionsService#save(java.lang.String, java.util.Map) 074 */ 075 public void save(String principalId, Map<String,String> optionsMap) { 076 // create a collection of UserOptions and save it 077 if (optionsMap != null && optionsMap.size() > 0) { 078 List<UserOptions> toSave = new ArrayList<UserOptions>(); 079 for (Entry<String, String> entry : optionsMap.entrySet()) { 080 UserOptions option = findByOptionId(entry.getKey(), principalId); 081 if (option == null) { 082 option = new UserOptions(); 083 option.setWorkflowId(principalId); 084 } 085 option.setOptionId(entry.getKey()); 086 option.setOptionVal(entry.getValue()); 087 toSave.add(option); 088 } 089 getUserOptionsDAO().save(toSave); 090 } 091 } 092 093 public void deleteUserOptions(UserOptions userOptions) { 094 this.getUserOptionsDAO().deleteUserOptions(userOptions); 095 } 096 097 public void save(String principalId, String optionId, String optionValue) { 098 //KULRICE-7796 Don't save where val is greater than field length 099 if(optionValue.length() <= 2000) 100 { 101 UserOptions option = findByOptionId(optionId, principalId); 102 if (option == null) { 103 option = new UserOptions(); 104 option.setWorkflowId(principalId); 105 } 106 option.setOptionId(optionId); 107 option.setOptionVal(optionValue); 108 getUserOptionsDAO().save(option); 109 } 110 } 111 112 public UserOptionsDAO getUserOptionsDAO() { 113 return userOptionsDAO; 114 } 115 116 public void setUserOptionsDAO(UserOptionsDAO optionsDAO) { 117 userOptionsDAO = optionsDAO; 118 } 119 120 @Override 121 public List<UserOptions> retrieveEmailPreferenceUserOptions(String emailSetting) { 122 return this.getUserOptionsDAO().findEmailUserOptionsByType(emailSetting); 123 } 124}