View Javadoc

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  		// TODO: there is some bugs around here still, needs debugging. See
45  		// jsp error output.
46  		for (Iterator<String> iter = languages_map.keySet().iterator(); iter.hasNext();) {
47  			String language = (String) iter.next();
48  			// TODO: the following two lines have not been used, commented,
49  			// task added
50  			// String languageKey = "translations(" + language + ")";
51  			// Vector locales = (Vector) languages_map.get(language);
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  //		request.setAttribute("sc", configurationService);
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 }