1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.itracker.web.actions.admin.language;
20
21 import java.io.IOException;
22 import java.util.HashMap;
23 import java.util.Iterator;
24
25 import javax.servlet.ServletException;
26 import javax.servlet.http.HttpServletRequest;
27 import javax.servlet.http.HttpServletResponse;
28
29 import org.apache.commons.beanutils.PropertyUtils;
30 import org.apache.log4j.Logger;
31 import org.apache.struts.action.ActionForm;
32 import org.apache.struts.action.ActionForward;
33 import org.apache.struts.action.ActionMapping;
34 import org.apache.struts.action.ActionMessage;
35 import org.apache.struts.action.ActionMessages;
36 import org.itracker.core.resources.ITrackerResources;
37 import org.itracker.model.Language;
38 import org.itracker.services.ConfigurationService;
39 import org.itracker.web.actions.base.ItrackerBaseAction;
40
41
42
43 public class CreateLanguageKeyAction extends ItrackerBaseAction {
44 private static final Logger log = Logger.getLogger(CreateLanguageKeyAction.class);
45
46
47 @SuppressWarnings("unchecked")
48 public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
49 ActionMessages errors = new ActionMessages();
50
51
52 if(! isTokenValid(request)) {
53 log.debug("Invalid request token while creating language key.");
54 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(
55 "itracker.web.error.transaction"));
56 saveErrors(request, errors);
57 return mapping.findForward("listlanguages");
58 }
59 resetToken(request);
60
61 try {
62 ConfigurationService configurationService = getITrackerServices().getConfigurationService();
63
64 String key = (String) PropertyUtils.getSimpleProperty(form, "key");
65 HashMap<String, String> items = (HashMap<String, String>) PropertyUtils.getSimpleProperty(form, "items");
66
67
68 if(items != null) {
69 log.debug("Adding new language key: " + key);
70 for(Iterator<String> iter = items.keySet().iterator(); iter.hasNext(); ) {
71 String locale = iter.next();
72 log.debug("Checking translation for locale " + locale);
73 if(locale != null) {
74 String value = items.get(locale);
75 log.debug("Locale value: " + value);
76 if(value != null && ! value.equals("")) {
77 log.debug("Adding new translation for locale " + locale + " for key " + key);
78 configurationService.updateLanguageItem(new Language(locale, key, value));
79 }
80 }
81 }
82 String baseValue = (String) items.get(ITrackerResources.BASE_LOCALE);
83
84 configurationService.updateLanguageItem(new Language(ITrackerResources.BASE_LOCALE, key, baseValue));
85 ITrackerResources.clearKeyFromBundles(key, true);
86 }
87
88 return mapping.findForward("listlanguages");
89 } catch(Exception e) {
90 log.error("Exception processing form data", e);
91 errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
92 }
93
94 if(! errors.isEmpty()) {
95 saveErrors(request, errors);
96 saveToken(request);
97 return mapping.getInputForward();
98 }
99 return mapping.findForward("error");
100 }
101 }
102