View Javadoc

1   /*
2   Copyright 2010 James Pether Sörling Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. 
3   	$Id
4   */
5   
6   package com.hack23.cia.service.impl.admin;
7   
8   import com.hack23.cia.model.application.impl.common.Agency;
9   import com.hack23.cia.model.application.impl.common.ImageContent;
10  import com.hack23.cia.model.application.impl.common.Language;
11  import com.hack23.cia.model.application.impl.common.LanguageContent;
12  import com.hack23.cia.model.application.impl.common.Portal;
13  import com.hack23.cia.model.application.impl.common.LanguageContent.LanguageContentType;
14  import com.hack23.cia.service.dao.AgencyDAO;
15  import com.hack23.cia.service.dao.ResourceDAO;
16  import com.hack23.cia.service.impl.common.ActivityService;
17  import com.hack23.cia.service.impl.common.ChartService;
18  
19  /***
20   * The Class AdminServiceImpl.
21   */
22  public class AdminServiceImpl implements AdminService {
23  
24      /*** The activity service. */
25      private final ActivityService activityService;
26  
27      /*** The agency dao. */
28      private final AgencyDAO agencyDAO;
29      
30      /*** The agency id. */
31      private final long agencyId = 1;
32      
33      /*** The agency name. */
34      private final String agencyName = "Default Agency name"; //$NON-NLS-1$
35  
36      /*** The chart service. */
37      private final ChartService chartService;
38  
39      /*** The resource dao. */
40      private final ResourceDAO resourceDAO;
41  
42      /*** The task service. */
43      private final TaskService taskService;
44  
45      /***
46       * Instantiates a new admin service impl.
47       *
48       * @param agencyDAO the agency dao
49       * @param resourceDAO the resource dao
50       * @param taskService the task service
51       * @param chartService the chart service
52       * @param activityService the activity service
53       */
54      public AdminServiceImpl(final AgencyDAO agencyDAO,final ResourceDAO resourceDAO,
55              final TaskService taskService, final ChartService chartService,
56              final ActivityService activityService) {
57          super();
58          this.agencyDAO = agencyDAO;
59          this.resourceDAO = resourceDAO;
60          this.taskService = taskService;
61          this.chartService = chartService;
62          this.activityService = activityService;
63      }
64  
65      /* (non-Javadoc)
66       * @see com.hack23.cia.service.impl.admin.AdminService#addAgencyLanguageContent(com.hack23.cia.model.application.impl.common.Agency, com.hack23.cia.model.application.impl.common.Language, java.lang.String, java.lang.String)
67       */
68      @Override
69      public final Agency addAgencyLanguageContent(final Agency agency, final Language language,final String key, final String content) {
70          final LanguageContent languageContent = new LanguageContent();
71          languageContent.setLanguage(language);
72          languageContent.setLanguageContentType(LanguageContentType.Agency);
73          languageContent.setContent(content);
74          languageContent.setContentPropertyName(key);
75          languageContent.setDescription("Default description");
76          resourceDAO.save(languageContent);
77          language.getLanguageContents().add(languageContent);
78          agency.getLanguageContent().add(languageContent);
79          return agencyDAO.save(agency);
80      }
81  
82      /*
83       * (non-Javadoc)
84       * 
85       * @see
86       * com.hack23.cia.service.InformationService#newLanguage(com.hack23.cia.
87       * model.application.Agency)
88       */
89      @Override
90      public final Agency addLanguage(final Agency agency) {
91          final Agency loadAgency = loadAgency();
92          final Language language = new Language();
93          language.setName("Default"); //$NON-NLS-1$
94          language.setShortCode("default"); //$NON-NLS-1$
95          language.setActiveByDefault(false);
96          language.setUsageOrder(100);
97          loadAgency.getLanguages().add(language);
98          return agencyDAO.save(loadAgency);
99      }
100 
101     /* (non-Javadoc)
102      * @see com.hack23.cia.service.impl.admin.AdminService#addLanguageContent(com.hack23.cia.model.application.common.Agency, com.hack23.cia.model.application.common.Language)
103      */
104     @Override
105     public final LanguageContent addLanguageContent(final Agency agency, final Language language) {
106         final LanguageContent languageContent = new LanguageContent();
107         languageContent.setLanguage(language);
108         languageContent.setLanguageContentType(LanguageContentType.Agency);
109         languageContent.setContent("Default value");
110         languageContent.setContentPropertyName("default.property.name");
111         languageContent.setDescription("Default description");
112         agency.getLanguageContent().add(languageContent);
113         agencyDAO.save(agency);
114         return languageContent;
115     }
116 
117     /*
118      * (non-Javadoc)
119      * 
120      * @see
121      * com.hack23.cia.service.InformationService#newPortal(com.hack23.cia.model
122      * .application.Agency)
123      */
124     @Override
125     public final Agency addPortal(final Agency agency) {
126         final Agency loadAgency = loadAgency();
127         final Portal portal = new Portal();
128         portal.setAgency(loadAgency);
129         portal.setName("Default portal"); //$NON-NLS-1$
130         portal.setTitleDescription("Default title description"); //$NON-NLS-1$        
131         portal.setMatchesUrl("Default url"); //$NON-NLS-1$
132         portal.setActiveByDefault(false);
133         portal.setUsageOrder(100);
134         loadAgency.getPortals().add(portal);
135         return agencyDAO.save(loadAgency);
136     }
137 
138     /*
139      * (non-Javadoc)
140      * 
141      * @see com.hack23.cia.service.common.AdminService#createResponseTimeGraph()
142      */
143     @Override
144     public final ImageContent createResponseTimeGraph() {
145     	final ImageContent imageContentByFileName = this.resourceDAO.getImageContentByFileName("responseTimeByHour.jpg");
146     	resourceDAO.delete(imageContentByFileName);
147     	   
148         final ImageContent createResponseTimeGraph = this.chartService.createResponseTimeGraph(
149                 this.activityService.getResponseTimeHistory());
150         return (ImageContent) resourceDAO.save(createResponseTimeGraph);
151     }
152 
153     /*
154      * (non-Javadoc)
155      * 
156      * @see
157      * com.hack23.cia.service.InformationService#deleteLanguage(com.hack23.cia
158      * .model.application.Agency, com.hack23.cia.model.application.Language)
159      */
160     @Override
161     public final Agency deleteLanguage(final Agency agency,
162             final Language language) {
163         final Agency loadAgency = loadAgency();
164         final Language updatedLanguage = loadAgency.findLanguage(language.getId());
165         loadAgency.getLanguages().remove(updatedLanguage);
166         
167         LanguageContent[] contents = new LanguageContent[updatedLanguage.getLanguageContents().size()];
168         contents =updatedLanguage.getLanguageContents().toArray(contents);
169         for (final LanguageContent languageContent : contents) {
170             loadAgency.getLanguageContent().remove(languageContent);
171             updatedLanguage.getLanguageContents().remove(languageContent);
172             resourceDAO.delete(languageContent);
173         }
174         
175         final Agency updatedAgency = agencyDAO.save(loadAgency);        
176         resourceDAO.delete(updatedLanguage);
177         return updatedAgency;
178     }
179 
180     /* (non-Javadoc)
181      * @see com.hack23.cia.service.impl.admin.AdminService#deleteLanguageContent(com.hack23.cia.model.application.common.Agency, com.hack23.cia.model.application.common.LanguageContent)
182      */
183     @Override
184     public final Agency deleteLanguageContent(final Agency agency,
185             final LanguageContent languageContent) {
186         final Agency loadedAgency = loadAgency(agency.getId());
187         final LanguageContent deleteLanguageContent = loadedAgency.findLanguageContent(languageContent.getId());
188         final Language language = deleteLanguageContent.getLanguage();
189         language.getLanguageContents().remove(deleteLanguageContent);
190         deleteLanguageContent.setLanguage(null);
191         
192         loadedAgency.getLanguageContent().remove(deleteLanguageContent);
193         final Agency updatedAgency = agencyDAO.save(loadedAgency);
194         resourceDAO.save(language);
195         resourceDAO.delete(deleteLanguageContent);
196         
197         return updatedAgency;
198     }
199 
200     /*
201      * (non-Javadoc)
202      * 
203      * @see
204      * com.hack23.cia.service.InformationService#deletePortal(com.hack23.cia
205      * .model.application.Portal)
206      */
207     @Override
208     public final Agency deletePortal(final Portal portal) {
209         final Agency agency = loadAgency();
210         final Portal deletePortal = agency.getPortalById(portal.getId());
211         deletePortal.setAgency(null);
212         agency.getPortals().remove(deletePortal);
213         
214         final Agency updatedAgency = agencyDAO.save(agency);
215         resourceDAO.delete(deletePortal);
216         
217         return updatedAgency;
218     }
219 
220     /*
221      * (non-Javadoc)
222      * 
223      * @see com.hack23.cia.service.common.AdminService#getRecentActionsGraph()
224      */
225     @Override
226     public final ImageContent getRecentActionsGraph() {
227     	final ImageContent imageContentByFileName = this.resourceDAO.getImageContentByFileName("ActionsByHour.jpg");
228     	resourceDAO.delete(imageContentByFileName);
229     	
230         final ImageContent createRecentActionsGraph = this.chartService.createRecentActionsGraph(
231                 this.activityService.getActionEventHistory());
232         return (ImageContent) resourceDAO.save(createRecentActionsGraph);
233     }
234 
235     /*
236      * (non-Javadoc)
237      * 
238      * @see com.hack23.cia.service.InformationService#loadAgency()
239      */
240     @Override
241     public final Agency loadAgency() {
242         Agency agency = this.agencyDAO.load(agencyId);
243         if (agency == null) {
244             agency = new Agency();
245             agency.setName(agencyName);
246             agencyDAO.save(agency);
247         }
248         return agency;
249     }
250 
251     /* (non-Javadoc)
252      * @see com.hack23.cia.service.impl.admin.AdminService#loadAgency(java.lang.Long)
253      */
254     @Override
255     public final Agency loadAgency(final Long agencyId) {
256         return this.agencyDAO.load(agencyId);
257     }
258 
259     /*
260      * (non-Javadoc)
261      * 
262      * @see com.hack23.cia.service.common.AdminService#startUpdateJob()
263      */
264     @Override
265     public final void startUpdateJob() {
266         this.taskService.execute();
267     }
268 
269     /*
270      * (non-Javadoc)
271      * 
272      * @see
273      * com.hack23.cia.service.InformationService#updateAgency(com.hack23.cia
274      * .model.application.Agency)
275      */
276     @Override
277     public final Agency updateAgency(final Agency agency) {
278         final Agency loadAgency = loadAgency(agency.getId());
279 
280         if (agency != null) {
281             loadAgency.setName(agency.getName());
282         }
283 
284         agencyDAO.save(loadAgency);
285         return loadAgency;
286     }
287 
288     /*
289      * (non-Javadoc)
290      * 
291      * @see
292      * com.hack23.cia.service.InformationService#updateLanguage(com.hack23.cia
293      * .model.application.Agency, com.hack23.cia.model.application.Language)
294      */
295     @Override
296     public final Agency updateLanguage(final Agency agency,
297             final Language language) {
298         final Agency loadAgency = loadAgency();
299         final Language updatedLanguage = loadAgency.findLanguage(language.getId());
300         updatedLanguage.setName(language.getName());
301         updatedLanguage.setShortCode(language.getShortCode());
302         updatedLanguage.setActiveByDefault(language.getActiveByDefault());
303         updatedLanguage.setUsageOrder(language.getUsageOrder());
304     
305         return agencyDAO.save(loadAgency);
306     }
307 
308     /* (non-Javadoc)
309      * @see com.hack23.cia.service.impl.admin.AdminService#updateLanguageContent(com.hack23.cia.model.application.common.Agency, com.hack23.cia.model.application.common.LanguageContent)
310      */
311     @Override
312     public final Agency updateLanguageContent(final Agency agency,
313             final LanguageContent languageContent) {
314         final Agency loadedAgency = loadAgency(agency.getId());
315         final LanguageContent updatedLanguageContent = loadedAgency.findLanguageContent(languageContent.getId());
316         updatedLanguageContent.setContent(languageContent.getContent());
317         updatedLanguageContent.setDescription(languageContent.getDescription());     
318         
319         final Agency updatedAgency = agencyDAO.save(loadedAgency);
320         resourceDAO.save(updatedLanguageContent);
321         
322         return updatedAgency;
323     }
324 
325     /*
326      * (non-Javadoc)
327      * 
328      * @see
329      * com.hack23.cia.service.InformationService#updatePortal(com.hack23.cia
330      * .model.application.Portal)
331      */
332     @Override
333     public final Portal updatePortal(final Portal portal) {
334         final Agency loadAgency = loadAgency();
335 
336         final Portal updatedPortal = loadAgency.getPortalById(portal.getId());
337         updatedPortal.setName(portal.getName());
338         updatedPortal.setTitleDescription(portal.getTitleDescription());
339         updatedPortal.setMatchesUrl(portal.getMatchesUrl());
340         updatedPortal.setActiveByDefault(portal.getActiveByDefault());
341         updatedPortal.setUsageOrder(portal.getUsageOrder());
342     
343         agencyDAO.save(loadAgency);
344         return updatedPortal;
345     }
346 }