WorkflowUtilities.java
/*
* This software was designed and created by Jason Carroll.
* Copyright (c) 2002, 2003, 2004 Jason Carroll.
* The author can be reached at jcarroll@cowsultants.com
* ITracker website: http://www.cowsultants.com
* ITracker forums: http://www.cowsultants.com/phpBB/index.php
*
* This program is free software; you can redistribute it and/or modify
* it only under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
package org.itracker.model.util;
import org.apache.log4j.Logger;
import org.itracker.core.resources.ITrackerResources;
import org.itracker.model.NameValuePair;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import java.util.Map;
/**
* Contains utilities used when displaying and processing workflow and field events
*/
public class WorkflowUtilities {
/**
* Fires for each field when building the form. Mainly used to build dynamic list options.
*/
public static final int EVENT_FIELD_ONPOPULATE = 1;
/**
* NOT CURRENTLY IMPLEMENTED. Use the onPopulate event instead. In the future, this event may be implemented to allow for list sorting after list value population.
*/
public static final int EVENT_FIELD_ONSORT = 2;
/**
* Fires to set the current value of a form field. This will overwrite any data in the form field pulled from the database.
*/
public static final int EVENT_FIELD_ONSETDEFAULT = 3;
/**
* Fires on validation of the form field.
*/
public static final int EVENT_FIELD_ONVALIDATE = 4;
/**
* Fires after validation, but before the data is committed to the database.
*/
public static final int EVENT_FIELD_ONPRESUBMIT = 5;
/**
* Fires after all data is submitted to the db for all fields. Performed right before the response is sent.
*/
public static final int EVENT_FIELD_ONPOSTSUBMIT = 6;
private static final Logger logger = Logger.getLogger(WorkflowUtilities.class);
public WorkflowUtilities() {
}
/**
* Returns a title of workflow event, according to selected locale.
*
* @param value is an identifier of incoming event.
* @param locale is a selected locale.
* @return a name of event or something like "MISSING KEY: <resourceBundleKey>".
*/
public static String getEventName(int value, Locale locale) {
final String eventName = getEventName(Integer.toString(value), locale);
return eventName;
}
public static String getEventName(String value, Locale locale) {
return ITrackerResources.getString(ITrackerResources.KEY_BASE_WORKFLOW_EVENT + value, locale);
}
/**
* Returns an array of pairs (eventName, eventId), where eventName
* is an event title, according to selected locale.
*
* @param locale is a selected locale.
* @return an array of pairs (eventName, eventId), which is never null.
*/
public static NameValuePair[] getEvents(Locale locale) {
NameValuePair[] eventNames = new NameValuePair[5];
eventNames[0] = new NameValuePair(getEventName(EVENT_FIELD_ONPOPULATE, locale), Integer.toString(EVENT_FIELD_ONPOPULATE));
// eventNames[] = new NameValuePair(getEventName(EVENT_FIELD_ONSORT, locale), Integer.toString(EVENT_FIELD_ONSORT));
eventNames[1] = new NameValuePair(getEventName(EVENT_FIELD_ONSETDEFAULT, locale), Integer.toString(EVENT_FIELD_ONSETDEFAULT));
eventNames[2] = new NameValuePair(getEventName(EVENT_FIELD_ONVALIDATE, locale), Integer.toString(EVENT_FIELD_ONVALIDATE));
eventNames[3] = new NameValuePair(getEventName(EVENT_FIELD_ONPRESUBMIT, locale), Integer.toString(EVENT_FIELD_ONPRESUBMIT));
eventNames[4] = new NameValuePair(getEventName(EVENT_FIELD_ONPOSTSUBMIT, locale), Integer.toString(EVENT_FIELD_ONPOSTSUBMIT));
return eventNames;
}
/**
* Select a list of NameValuePair objects from provided map object according
* to fieldId selector. Typesafe version of #getListOptions(Map, Integer)
*
* @param listOptions is a map, with stored NameValuePair objects lists
* associated with specific integer id.
* @param fieldId is a selector from map.
* @return a list of objects, which may be empty, but never null.
*/
public static List<NameValuePair> getListOptions(Map<Integer, List<NameValuePair>> listOptions, int fieldId) {
return getListOptions(listOptions, Integer.valueOf(fieldId));
}
/**
* Select a list of NameValuePair objects from provided map object according
* to fieldId selector.
*
* @param listOptions is a map, with stored NameValuePair objects lists
* associated with specific integer id.
* @param fieldId is a selector from map.
* @return a list of objects, which may be empty, but never null.
*/
@SuppressWarnings("unchecked")
public static List<NameValuePair> getListOptions(Map listOptions, Integer fieldId) {
List<NameValuePair> options = new ArrayList<NameValuePair>();
if (listOptions != null && listOptions.size() != 0 && fieldId != null) {
Object mapOptions = listOptions.get(fieldId);
if (mapOptions != null) {
options = (List<NameValuePair>) mapOptions;
}
}
return options;
}
}