Clover Coverage Report - KS Admin 1.2-M2-SNAPSHOT
Coverage timestamp: Wed Dec 31 1969 19:00:00 EST
../../../../../../../img/srcFileCovDistChart0.png 0% of files have more coverage
86   211   20   7.17
16   155   0.23   12
12     1.67  
1    
 
  MessageServiceImpl       Line # 29 86 0% 20 114 0% 0.0
 
No Tests
 
1    package org.kuali.student.admin.messages.service.impl;
2   
3    import java.util.ArrayList;
4    import java.util.Collection;
5    import java.util.Collections;
6    import java.util.HashMap;
7    import java.util.Iterator;
8    import java.util.List;
9    import java.util.Map;
10   
11    import javax.jws.WebService;
12    import javax.jws.soap.SOAPBinding;
13   
14    import org.kuali.rice.core.util.MaxAgeSoftReference;
15    import org.kuali.rice.core.util.MaxSizeMap;
16    import org.kuali.rice.kns.service.BusinessObjectService;
17    import org.kuali.rice.kns.service.KNSServiceLocator;
18    import org.kuali.student.common.messages.dto.LocaleKeyList;
19    import org.kuali.student.common.messages.dto.Message;
20    import org.kuali.student.common.messages.dto.MessageGroupKeyList;
21    import org.kuali.student.common.messages.dto.MessageList;
22    import org.kuali.student.common.messages.service.MessageService;
23    import org.kuali.student.core.enumerationmanagement.bo.EnumeratedValue;
24    import org.kuali.student.core.messages.bo.MessageEntity;
25    import org.springframework.beans.factory.InitializingBean;
26   
27    @WebService(endpointInterface = "org.kuali.student.common.messages.service.MessageService", serviceName = "MessageService", portName = "MessageService", targetNamespace = "http://student.kuali.org/wsdl/messages")
28    @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED)
 
29    public class MessageServiceImpl implements MessageService, InitializingBean {
30   
31    protected boolean cachingEnabled = false;
32    protected int msgsCacheMaxSize = 20;
33    protected int msgsCacheMaxAgeSeconds = 90;
34    protected Map<String,MaxAgeSoftReference<MessageList>> msgsCache;
35   
36    private BusinessObjectService businessObjectService;
37   
 
38  0 toggle public Message addMessage(Message messageInfo) {
39  0 MessageEntity entity = toMessageEntity(messageInfo);
40  0 getBusinessObjectService().save(entity);
41   
42  0 return toMessage(entity);
43    }
44   
 
45  0 toggle @SuppressWarnings("unchecked")
46    public LocaleKeyList getLocales() {
47  0 List<String> keyList = new ArrayList<String>();
48  0 Map<String, Object> criteria = new HashMap<String,Object>();
49   
50  0 criteria.put(EnumeratedValue.ENUMERATION_KEY, MessageEntity.LOCALE_ENUMERATION);
51  0 BusinessObjectService boService = KNSServiceLocator.getBusinessObjectService();
52  0 Collection<EnumeratedValue> values = boService.findMatching(EnumeratedValue.class, criteria);
53   
54  0 Iterator<EnumeratedValue> iterator = values.iterator();
55  0 while(iterator.hasNext()) {
56  0 EnumeratedValue value = iterator.next();
57  0 keyList.add(value.getCode());
58    }
59   
60  0 LocaleKeyList localeKeyList = new LocaleKeyList();
61  0 localeKeyList.setLocales(keyList);
62   
63  0 return localeKeyList;
64    }
65   
 
66  0 toggle public Message getMessage(String localeKey, String messageGroupKey, String messageKey) {
67  0 Map<String, Object> queryMap = new HashMap<String, Object>();
68  0 queryMap.put("locale", localeKey);
69  0 queryMap.put("groupName", messageGroupKey);
70  0 queryMap.put("messageId", messageKey);
71   
72  0 MessageEntity entity = (MessageEntity) getBusinessObjectService().findByPrimaryKey(MessageEntity.class, queryMap);
73   
74  0 return toMessage(entity);
75    }
76   
 
77  0 toggle @SuppressWarnings("unchecked")
78    public MessageGroupKeyList getMessageGroups() {
79  0 List<String> keyList = new ArrayList<String>();
80  0 Map<String, Object> criteria = new HashMap<String,Object>();
81   
82  0 criteria.put(EnumeratedValue.ENUMERATION_KEY, MessageEntity.GROUP_NAME_ENUMERATION);
83  0 BusinessObjectService boService = KNSServiceLocator.getBusinessObjectService();
84  0 Collection<EnumeratedValue> values = boService.findMatching(EnumeratedValue.class, criteria);
85   
86  0 Iterator<EnumeratedValue> iterator = values.iterator();
87  0 while(iterator.hasNext()) {
88  0 EnumeratedValue value = iterator.next();
89  0 keyList.add(value.getCode());
90    }
91   
92  0 MessageGroupKeyList messageGroupKeyList = new MessageGroupKeyList();
93  0 messageGroupKeyList.setMessageGroupKeys(keyList);
94   
95  0 return messageGroupKeyList;
96    }
97   
 
98  0 toggle @SuppressWarnings("unchecked")
99    public MessageList getMessages(String localeKey, String messageGroupKey) {
100   
101  0 if(cachingEnabled){
102    //Get From Cache
103  0 MaxAgeSoftReference<MessageList> ref = msgsCache.get("localeKey="+localeKey+", messageGroupKey="+messageGroupKey);
104  0 if ( ref != null ) {
105  0 MessageList messageList = ref.get();
106  0 if(messageList!=null){
107  0 return messageList;
108    }
109    }
110    }
111   
112  0 Map<String,String> fieldValues = new HashMap<String,String>();
113  0 fieldValues.put("locale", localeKey);
114  0 fieldValues.put("groupName", messageGroupKey);
115   
116  0 List<MessageEntity> messageEntityList = (List<MessageEntity>) getBusinessObjectService().findMatching(MessageEntity.class, fieldValues);
117   
118  0 List<Message> messages = new ArrayList<Message>();
119   
120  0 for(MessageEntity messageEntity: messageEntityList){
121  0 messages.add(toMessage(messageEntity));
122    }
123   
124  0 MessageList messageList = new MessageList();
125  0 messageList.setMessages(messages);
126   
127  0 if(cachingEnabled){
128    //Store to cache
129  0 msgsCache.put("localeKey="+localeKey+", messageGroupKey="+messageGroupKey, new MaxAgeSoftReference<MessageList>( msgsCacheMaxAgeSeconds, messageList) );
130    }
131   
132  0 return messageList;
133   
134    }
135   
 
136  0 toggle public MessageList getMessagesByGroups(String localeKey, MessageGroupKeyList messageGroupKeyList) {
137   
138  0 List<Message> messages = new ArrayList<Message>();
139   
140  0 for(String messageGroupKey: messageGroupKeyList.getMessageGroupKeys()){
141  0 messages.addAll(getMessages(localeKey, messageGroupKey).getMessages());
142    }
143   
144  0 MessageList messageList = new MessageList();
145  0 messageList.setMessages(messages);
146   
147  0 return messageList;
148   
149    }
150   
 
151  0 toggle public Message updateMessage(String localeKey, String messageGroupKey, String messageKey, Message messageInfo) {
152   
153  0 Map<String,String> primaryKeys = new HashMap<String,String>();
154  0 primaryKeys.put("locale", localeKey);
155  0 primaryKeys.put("groupName", messageGroupKey);
156  0 primaryKeys.put("messageId", messageKey);
157   
158  0 MessageEntity entity = (MessageEntity) getBusinessObjectService().findByPrimaryKey(MessageEntity.class, primaryKeys);
159   
160  0 entity.setMessageId(messageInfo.getId());
161  0 entity.setLocale(messageInfo.getLocale());
162  0 entity.setGroupName(messageInfo.getGroupName());
163  0 entity.setValue(messageInfo.getValue());
164   
165  0 getBusinessObjectService().save(entity);
166   
167  0 return toMessage(entity);
168   
169    }
170   
 
171  0 toggle protected MessageEntity toMessageEntity(Message message) {
172  0 MessageEntity result = new MessageEntity();
173   
174  0 result.setMessageId(message.getId());
175  0 result.setLocale(message.getLocale());
176  0 result.setGroupName(message.getGroupName());
177  0 result.setValue(message.getValue());
178   
179  0 return result;
180    }
181   
 
182  0 toggle protected Message toMessage(MessageEntity entity) {
183  0 Message result = new Message();
184   
185  0 result.setGroupName(entity.getGroupName());
186  0 result.setId(entity.getMessageId());
187  0 result.setLocale(entity.getLocale());
188  0 result.setValue(entity.getValue());
189   
190  0 return result;
191    }
192   
 
193  0 toggle protected BusinessObjectService getBusinessObjectService() {
194  0 if (businessObjectService == null) {
195  0 businessObjectService = KNSServiceLocator.getBusinessObjectService();
196    }
197  0 return businessObjectService;
198    }
199   
 
200  0 toggle @Override
201    public void afterPropertiesSet() throws Exception {
202  0 if(cachingEnabled){
203  0 msgsCache = Collections.synchronizedMap( new MaxSizeMap<String,MaxAgeSoftReference<MessageList>>( msgsCacheMaxSize ) );
204    }
205    }
206   
 
207  0 toggle public void setCachingEnabled(boolean cachingEnabled) {
208  0 this.cachingEnabled = cachingEnabled;
209    }
210   
211    }