Coverage Report - org.kuali.rice.kcb.service.impl.RecipientPreferenceServiceImpl
 
Classes in this File Line Coverage Branch Coverage Complexity
RecipientPreferenceServiceImpl
0%
0/61
0%
0/24
2.444
 
 1  
 /*
 2  
  * Copyright 2007-2008 The Kuali Foundation
 3  
  *
 4  
  * Licensed under the Educational Community License, Version 2.0 (the "License");
 5  
  * you may not use this file except in compliance with the License.
 6  
  * You may obtain a copy of the License at
 7  
  *
 8  
  * http://www.opensource.org/licenses/ecl2.php
 9  
  *
 10  
  * Unless required by applicable law or agreed to in writing, software
 11  
  * distributed under the License is distributed on an "AS IS" BASIS,
 12  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 13  
  * See the License for the specific language governing permissions and
 14  
  * limitations under the License.
 15  
  */
 16  
 package org.kuali.rice.kcb.service.impl;
 17  
 
 18  
 import java.util.Collection;
 19  
 import java.util.HashMap;
 20  
 import java.util.Map;
 21  
 
 22  
 import org.kuali.rice.core.exception.RiceRuntimeException;
 23  
 import org.kuali.rice.kcb.bo.RecipientDelivererConfig;
 24  
 import org.kuali.rice.kcb.bo.RecipientPreference;
 25  
 import org.kuali.rice.kcb.deliverer.MessageDeliverer;
 26  
 import org.kuali.rice.kcb.exception.ErrorList;
 27  
 import org.kuali.rice.kcb.service.RecipientPreferenceService;
 28  
 
 29  
 /**
 30  
  * RecipientPreferenceService implementation 
 31  
  * 
 32  
  * @author Kuali Rice Team (rice.collab@kuali.org)
 33  
  */
 34  0
 public class RecipientPreferenceServiceImpl extends BusinessObjectServiceImpl implements RecipientPreferenceService {
 35  
     /**
 36  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#getRecipientPreference(java.lang.String, java.lang.String)
 37  
      */
 38  
     public RecipientPreference getRecipientPreference(String recipientId, String key) {
 39  0
         Map<String, String> fields = new HashMap<String, String>(2);
 40  0
         fields.put(RecipientPreference.RECIPIENT_FIELD, recipientId);
 41  0
         fields.put(RecipientPreference.PROPERTY_FIELD, key);
 42  
 
 43  0
         Collection<RecipientPreference> prefs = dao.findMatching(RecipientPreference.class, fields);
 44  0
         assert(prefs.size() <= 1);
 45  
         
 46  0
         if (prefs.size() > 0) {
 47  0
             return prefs.iterator().next();
 48  
         } else {
 49  0
             return null;
 50  
         }
 51  
     }
 52  
 
 53  
     /**
 54  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#deleteRecipientPreference(org.kuali.rice.kcb.bo.RecipientPreference)
 55  
      */
 56  
     public void deleteRecipientPreference(RecipientPreference pref) {
 57  0
         dao.delete(pref);
 58  0
     }
 59  
 
 60  
     /**
 61  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#getRecipientPreferences(java.lang.String)
 62  
      */
 63  
     public HashMap<String, String> getRecipientPreferences(String recipientId) {
 64  0
         Map<String, String> fields = new HashMap<String, String>(1);
 65  0
         fields.put(RecipientPreference.RECIPIENT_FIELD, recipientId);
 66  0
         HashMap<String, String> prefs = new HashMap<String,String>();
 67  0
         Collection<RecipientPreference> userPrefs =  dao.findMatching(RecipientPreference.class, fields);
 68  0
         for (RecipientPreference p: userPrefs) {
 69  0
             prefs.put(p.getProperty(), p.getValue());
 70  
         }
 71  
 
 72  0
         return prefs;
 73  
     }
 74  
 
 75  
     /**
 76  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#saveRecipientPreference(org.kuali.rice.kcb.bo.RecipientPreference)
 77  
      */
 78  
     public void saveRecipientPreference(RecipientPreference pref) {
 79  0
         dao.save(pref);
 80  0
     }
 81  
 
 82  
     /**
 83  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#saveRecipientPreferences(java.lang.String, java.util.HashMap, org.kuali.rice.kcb.deliverer.MessageDeliverer)
 84  
      */
 85  
     public void saveRecipientPreferences(String recipientId, HashMap<String, String> prefs, MessageDeliverer deliverer) throws ErrorList {
 86  0
         deliverer.validatePreferenceValues(prefs);         
 87  
         
 88  0
         for (Map.Entry<String, String> entry: prefs.entrySet()) {
 89  0
            String prop = entry.getKey();
 90  0
            String value = entry.getValue();
 91  
                
 92  
            // We need to check if this property is already set
 93  
            // for the user by checking doing a unique key query...if
 94  
            // it already exists, update, otherwise add it 
 95  0
            RecipientPreference currentPreference = getRecipientPreference(recipientId, prop);
 96  0
            if (currentPreference != null) {
 97  0
               currentPreference.setRecipientId(recipientId);
 98  0
               currentPreference.setProperty(prop);
 99  0
               currentPreference.setValue(value);
 100  0
               dao.save(currentPreference);
 101  
            } else {
 102  0
               RecipientPreference recipientPreference = new RecipientPreference();
 103  0
               recipientPreference.setRecipientId(recipientId);
 104  0
               recipientPreference.setProperty(prop);
 105  0
               recipientPreference.setValue(value);
 106  0
               dao.save(recipientPreference);
 107  
            }
 108  0
         }
 109  0
     }
 110  
 
 111  
     // deliverer config
 112  
     
 113  
     /**
 114  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#removeRecipientDelivererConfigs(java.lang.String)
 115  
      */
 116  
     public void removeRecipientDelivererConfigs(String recipientId) {
 117  0
         Map<String, String> fields = new HashMap<String, String>(1);
 118  0
         fields.put(RecipientDelivererConfig.RECIPIENT_ID, recipientId);
 119  0
         dao.deleteMatching(RecipientDelivererConfig.class, fields);
 120  0
     }
 121  
 
 122  
     /**
 123  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#saveRecipientDelivererConfig(java.lang.String, java.lang.String, java.lang.String[])
 124  
      */
 125  
     public void saveRecipientDelivererConfig(String recipientId, String delivererName, String[] channels) {
 126  0
         if (channels == null || channels.length == 0) return;
 127  
     
 128  
         // if selected[0] is 0 we want to remove this deliverer
 129  
         // for all channels.  We already did that above.
 130  0
         for (String channel: channels) {
 131  0
             RecipientDelivererConfig config = new RecipientDelivererConfig();
 132  
 
 133  0
             config.setRecipientId(recipientId);
 134  0
             config.setDelivererName(delivererName);
 135  0
             config.setChannel(channel);
 136  
             
 137  
             // first, verify that we aren't trying to insert a duplicate
 138  0
             Collection<RecipientDelivererConfig> deliverers = getDeliverersForRecipientAndChannel(recipientId, channel);
 139  0
             if (deliverers != null) {
 140  0
                     for (RecipientDelivererConfig deliverer : deliverers) {
 141  0
                             if (deliverer.getDelivererName().equals(delivererName)) {
 142  0
                                     throw new RiceRuntimeException("Attempting to save a duplicate Recipient Deliverer Config.");
 143  
                             }
 144  
                     }
 145  
             }
 146  0
             dao.save(config);
 147  
         }
 148  0
     }
 149  
 
 150  
     /**
 151  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#getDeliverersForRecipient(java.lang.String)
 152  
      */
 153  
     public Collection<RecipientDelivererConfig> getDeliverersForRecipient(String recipientId) {
 154  0
         Map<String, String> fields = new HashMap<String, String>(1);
 155  0
         fields.put(RecipientDelivererConfig.RECIPIENT_ID, recipientId);
 156  0
         return dao.findMatching(RecipientDelivererConfig.class, fields);
 157  
     }
 158  
 
 159  
     /**
 160  
      * @see org.kuali.rice.kcb.service.RecipientPreferenceService#getDeliverersForRecipientAndChannel(java.lang.String, java.lang.String)
 161  
      */
 162  
     public Collection<RecipientDelivererConfig> getDeliverersForRecipientAndChannel(String recipientId, String channel) {
 163  0
         Map<String, String> fields = new HashMap<String, String>(1);
 164  0
         fields.put(RecipientDelivererConfig.RECIPIENT_ID, recipientId);
 165  0
         fields.put(RecipientDelivererConfig.CHANNEL, channel);
 166  
 
 167  0
         return dao.findMatching(RecipientDelivererConfig.class, fields);
 168  
     }
 169  
 }