1 package org.itracker.web.actions.admin.configuration;
2
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.Dictionary;
6 import java.util.HashMap;
7 import java.util.Iterator;
8 import java.util.List;
9 import java.util.Locale;
10 import java.util.Map;
11 import java.util.SortedMap;
12 import java.util.TreeMap;
13
14 import javax.servlet.http.HttpServletRequest;
15 import javax.servlet.http.HttpSession;
16
17 import org.apache.commons.collections.MapUtils;
18 import org.apache.log4j.Logger;
19 import org.itracker.core.resources.ITrackerResources;
20 import org.itracker.model.CustomField;
21 import org.itracker.model.CustomFieldValue;
22 import org.itracker.model.NameValuePair;
23 import org.itracker.services.ConfigurationService;
24 import org.itracker.services.util.CustomFieldUtilities;
25 import org.itracker.web.forms.CustomFieldForm;
26 import org.itracker.web.util.Constants;
27 import org.itracker.web.util.LoginUtilities;
28 import org.itracker.web.util.ServletContextUtils;
29
30 public class EditCustomFieldActionUtil {
31
32 private static final Logger logger = Logger.getLogger(EditCustomFieldActionUtil.class);
33
34 public static final void setRequestEnv(HttpServletRequest request, CustomFieldForm customFieldForm) {
35
36 ConfigurationService configurationService = ServletContextUtils
37 .getItrackerServices().getConfigurationService();
38 Locale currentLocale = LoginUtilities.getCurrentLocale(request);
39 CustomField customField = (CustomField) request.getSession().getAttribute(Constants.CUSTOMFIELD_KEY);
40
41 Map<String, List<String>> languages_map = configurationService.getAvailableLanguages();
42 String[] languagesArray = new String[languages_map.size()];
43 int idx = 0;
44
45
46 for (Iterator<String> iter = languages_map.keySet().iterator(); iter.hasNext();) {
47 String language = (String) iter.next();
48
49
50
51
52 languagesArray[idx] = language;
53 idx++;
54 }
55
56 String pageTitleKey = "itracker.web.admin.editcustomfield.title.create";
57 String pageTitleArg = "";
58
59 String action = customFieldForm.getAction();
60
61 if ("update".equals(action)) {
62 pageTitleKey = "itracker.web.admin.editcustomfield.title.update";
63 pageTitleArg = ITrackerResources.getString(CustomFieldUtilities.getCustomFieldLabelKey(customField.getId()));
64 }
65 request.setAttribute("pageTitleKey", pageTitleKey);
66 request.setAttribute("pageTitleArg", pageTitleArg);
67
68 request.setAttribute("customFieldForm", customFieldForm);
69 request.setAttribute("languages", languagesArray);
70 request.setAttribute("action", action);
71
72 Map<String, List<String>> languages = configurationService.getAvailableLanguages();
73 Map<NameValuePair,List<NameValuePair>> languagesNameValuePair = new HashMap<NameValuePair, List<NameValuePair>>();
74 for (Map.Entry<String, List<String>> entry: languages.entrySet()) {
75 String language = entry.getKey();
76 List<String> locales = entry.getValue();
77 List<NameValuePair> localesNameValuePair = new ArrayList<NameValuePair>();
78 for (String locale: locales) {
79 NameValuePair localeNameValuePair = new NameValuePair(locale,ITrackerResources.getString("itracker.locale.name", locale));
80 localesNameValuePair.add(localeNameValuePair);
81 }
82 NameValuePair languageNameValuePair = new NameValuePair(language,ITrackerResources.getString("itracker.locale.name", language));
83 languagesNameValuePair.put(languageNameValuePair, localesNameValuePair);
84 }
85
86 HttpSession session = request.getSession();
87 String baseLocaleKey = "translations(" + ITrackerResources.BASE_LOCALE + ")";
88
89 List<CustomFieldValue> options = customField.getOptions();
90
91 Collections.sort(options, CustomFieldValue.SORT_ORDER_COMPARATOR);
92 if (logger.isDebugEnabled()) {
93 logger.debug("setRequestEnv: sorted values by sort order comparator: " + options);
94 }
95
96 HashMap<Integer, String> optionsMap = new HashMap<Integer, String>();
97 for (CustomFieldValue option: options) {
98 String optionName = CustomFieldUtilities.getCustomFieldOptionName(customField.getId(),option.getId(), currentLocale);
99 optionsMap.put(option.getId(), optionName);
100 }
101
102 String fieldTypeString = Integer.toString(CustomField.Type.STRING.getCode());
103 String fieldTypeInteger = Integer.toString(CustomField.Type.INTEGER.getCode());
104 String fieldTypeDate = Integer.toString(CustomField.Type.DATE.getCode());
105 String fieldTypeList = Integer.toString(CustomField.Type.LIST.getCode());
106
107 request.setAttribute("fieldTypeString", fieldTypeString);
108 request.setAttribute("fieldTypeInteger", fieldTypeInteger);
109 request.setAttribute("fieldTypeDate", fieldTypeDate);
110 request.setAttribute("fieldTypeList", fieldTypeList);
111 String dateFormatDateOnly = CustomFieldUtilities.DATE_FORMAT_DATEONLY;
112 String dateFormatTimeOnly = CustomFieldUtilities.DATE_FORMAT_TIMEONLY;
113 String dateFormatFull = CustomFieldUtilities.DATE_FORMAT_FULL;
114
115 request.setAttribute("dateFormatDateOnly", dateFormatDateOnly);
116 request.setAttribute("dateFormatTimeOnly", dateFormatTimeOnly);
117 request.setAttribute("dateFormatFull", dateFormatFull);
118
119 session.setAttribute("CustomFieldType_List", Integer.toString(CustomField.Type.LIST.getCode()));
120 request.setAttribute("baseLocaleKey", baseLocaleKey);
121 request.setAttribute("field", customField);
122 request.setAttribute("languagesNameValuePair", languagesNameValuePair);
123 request.setAttribute("options", options);
124 request.setAttribute("optionsMap", optionsMap);
125
126 }
127
128 }