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.kcb.deliverer.impl; 017 018import java.util.HashMap; 019import java.util.LinkedHashMap; 020 021import org.apache.commons.lang.StringUtils; 022import org.apache.log4j.Logger; 023import org.kuali.rice.kcb.bo.MessageDelivery; 024import org.kuali.rice.kcb.deliverer.MessageDeliverer; 025import org.kuali.rice.kcb.exception.ErrorList; 026import org.kuali.rice.kcb.api.exception.MessageDeliveryException; 027import org.kuali.rice.kcb.api.exception.MessageDismissalException; 028 029/** 030 * This class is responsible for describing the AOL Instant Messenger delivery mechanism for 031 * the system; however, it is not yet integrated into the system and is just a stub. 032 * @author Kuali Rice Team (rice.collab@kuali.org) 033 */ 034public class AOLInstantMessageDeliverer implements MessageDeliverer { 035 private static Logger LOG = Logger.getLogger(AOLInstantMessageDeliverer.class); 036 037 private static final String SCREEN_NAME = "aim_screen_name"; 038 039 /** 040 * Constructs a AOLInstantMessageDeliverer.java. 041 */ 042 public AOLInstantMessageDeliverer() { 043 } 044 045 /** 046 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#deliver(org.kuali.rice.kcb.bo.MessageDelivery) 047 */ 048 public void deliver(MessageDelivery messageDelivery) throws MessageDeliveryException { 049 } 050 051 /** 052 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#dismiss(org.kuali.rice.kcb.bo.MessageDelivery, java.lang.String, java.lang.String) 053 */ 054 public void dismiss(MessageDelivery messageDelivery, String user, String cause) throws MessageDismissalException { 055 } 056 057 /** 058 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#getDescription() 059 */ 060 public String getDescription() { 061 return "This is the default AOL Instant Messenger delivery type."; 062 } 063 064 /** 065 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#getName() 066 */ 067 public String getName() { 068 return "AIM"; 069 } 070 071 /** 072 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#getTitle() 073 */ 074 public String getTitle() { 075 return "AOL Instant Messenger Delivery"; 076 } 077 078 /** 079 * This implementation returns a screen name field. 080 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#getPreferenceKeys() 081 */ 082 public LinkedHashMap getPreferenceKeys() { 083 LinkedHashMap<String, String> prefKeys = new LinkedHashMap<String, String>(); 084 prefKeys.put(SCREEN_NAME, "AIM Screen Name"); 085 return prefKeys; 086 } 087 088 /** 089 * @see org.kuali.rice.kcb.deliverer.MessageDeliverer#validatePreferenceValues(java.util.HashMap) 090 */ 091 public void validatePreferenceValues(HashMap prefs) throws ErrorList { 092 boolean error = false; 093 ErrorList errorList = new ErrorList(); 094 095 if (!prefs.containsKey(getName()+"."+SCREEN_NAME)) { 096 errorList.addError("AIM Screen Name is a required field."); 097 error = true; 098 } else { 099 String screenName = (String) prefs.get(getName()+"."+SCREEN_NAME); 100 if(StringUtils.isBlank(screenName)) { 101 errorList.addError("AIM Screen Name is a required."); 102 error = true; 103 } 104 } 105 if (error) throw errorList; 106 } 107}