package de.dass_it.vanhelsing.gui;
import javax.faces.application.FacesMessage;
import javax.faces.application.FacesMessage.Severity;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import java.util.ResourceBundle;
import java.util.Locale;
import java.util.HashMap;
//import org.apache.log4j.Logger;
/**
* Helper class to encapsulate common bean methods.
* Managed beans will extend this class either directly or
* via a data structure helper class like TreeNavigation
*/
public class BeanUtil {
// Logging
// protected final Logger logger = Logger.getLogger(this.getClass());
// Messagebundles
/**
* getter method for a property value
* @param key key of the queried property, e.g. director.client.name.type
* @return s value of the property
*/
public static String getProperty(String key) {
String s = PropertyBundle.getProperty(key);
return s;
}
/**
*
* @param key key contains the key value of the set of properties for a given attribute
* except for the suffix which defines the content type of the property.
* @return bundle contains all four properties of an attribute
*/
public static String[] getProperties(String key) {
String[] suffix = { "ref", "type", "required", "def" };
String[] bundle = new String[4];
for (int i = 0; i < 4; i++) {
bundle[i] = BeanUtil.getProperty(key + "." + suffix[i]);
}
return bundle;
}
/**
*
* @param type resource type of the attribute, like Client
* @param key attribute name of the resource, like Port
* @return true if the field is required or false
*/
public static boolean getRequired(String type, String key) {
String s = getFieldProperty(type, key, 2);
if (s.equals("true"))
return true;
return false;
}
/**
* returns the data type of a given attribute.
* @param type resource type of the attribute, like Client
* @param key attribute name of the resource, like Port
* @return data type of the attribute
*/
public static String getDataType(String type, String key) {
return getFieldProperty(type, key, 1);
}
// getRenderer returns rendererType based on properties
/**
* returns the renderer for a given attribute
* @param type resource type of the attribute, like Client
* @param key attribute name of the resource, like Port
* @return "inputText", "radioGroup" or "selectOneMenu"
*
*/
public static String getRenderer(String type, String key) {
return getFieldProperty(type, key, 0);
}
/**
* returns properties for a given attribute depending on the value of i.
* One should use the getter method for the property.
* @param type resource type of the attribute, like Client
* @param key attribute name of the resource, like Port
* @param i i maybe between 0 and 3. The return value of the method is selected by the value of i
* @return one of the four properties as a String of a given attribute.
*/
public static String getFieldProperty(String type, String key, int i) {
String daemon = "director";
String res = "inputText";
if (type.startsWith("SD")) {
daemon = "storagedaemon";
}
if (type.startsWith("FD")) {
daemon = "filedaemon";
}
type = type.toLowerCase();
key = key.toLowerCase();
key = key.replaceAll(" ", "");
String result[] = getProperties((daemon + "." + type + "." + key));
if (i == 0) {
if (result[1].equals("boolean")) {
return "radioGroup";
}
if (!(result[0].equals("0"))) {
return "selectOneMenu";
}
return res;
}
if (i == 2)
return result[2];
if (i == 1)
return result[1];
if (i == 3)
return result[3];
return res;
}
// Statusmeldungen an den Client
/**
* sends an information type message to the message field at the bottom of the screen
* @param client could contain an identifier of a client. value can be set to null
* @param message the message to be displayed at the clients view
*/
public static void setInfoMessage(String client, String message) {
FacesContext.getCurrentInstance().addMessage(client,
new FacesMessage(FacesMessage.SEVERITY_INFO, message, message));
}
/**
* sends an error type message to the message field at the bottom of the screen
* @param client could contain an identifier of a client. value can be set to null
* @param message the message to be displayed at the clients view
*/
public static void setErrorMessage(String client, String message) {
FacesContext.getCurrentInstance()
.addMessage(
client,
new FacesMessage(FacesMessage.SEVERITY_ERROR, message,
message));
}
// Linkout to Bacula documentation
// ListItemsConfigView
// ListItemsTopologyView
// ListItemsJobSchedule
// GetParameterFromContext
/**
* returns values of a given parameter of the FacesContext
* @param name name of the parameter e.g. the id of a parameter in the view.
* @return value of a given parameter
*/
public static String getRequestParameter(String name) {
return (String) FacesContext.getCurrentInstance().getExternalContext()
.getRequestParameterMap().get(name);
}
/**
* translation method for resource or object names.
* @param type untranslated name
* @return translated name if there is a translation. Otherwise type will be returned.
*/
public static String getAccessType(String type) {
String result = new String();
HashMap map = new HashMap();
map.put("jobdefs", "job");
map.put("SDStorage", "Storage");
map.put("Storage", "SDStorage");
map.put("SDDevice", "Device");
map.put("Device", "SDDevice");
map.put("SDDevice", "Device");
result = map.get(type);
if (result != null)
return result;
return type;
}
}