package de.open4me.depot.gui.parts;
import de.willuhn.datasource.GenericObject;
import de.willuhn.jameica.gui.parts.Column;
import de.willuhn.logging.Logger;
/**
* Eine Spalte, die mit HIlfe von String.format formatiert werden kann.
* @author sven
*
*/
public class PrintfColumn extends de.willuhn.jameica.gui.parts.Column {
String[] parameters;
String formatstring;
/**
*
* @param title Spaltenüberschrift
* @param sortbyattr Attribut, nach dem sortiert werden soll
* @param formatstring Format-String (see String.format)
* @param parameters Parameters für den Format-String
*/
public PrintfColumn(String title, String sortbyattr, String formatstring, String... parameters) {
super(sortbyattr, title);
this.parameters = parameters;
this.formatstring = formatstring;
}
/*
* (non-Javadoc)
* @see de.willuhn.jameica.gui.parts.Column#getFormattedValue(java.lang.Object, java.lang.Object)
*/
@Override
public String getFormattedValue(Object value, Object context) {
if (!(context instanceof GenericObject)) {
Logger.error("kein GenericObject bei " + value + " für " + context);
return "";
}
GenericObject gobj = (GenericObject) context;
String display = null;
try
{
// Erstmal die Werte aus dem GenericObject auslesen
Object[] values = new Object[parameters.length];
for (int i = 0; i < parameters.length; i++) {
values[i] = gobj.getAttribute(parameters[i]);
// Ein Null Wert führt zu einer leeren Ausgabe
if (values[i] == null) {
return "";
}
}
// Danach die Ausgabe formatieren
display = String.format(formatstring, values);
}
catch (Exception e)
{
Logger.error("unable to format value " + value + " for bean " + context,e);
}
return display != null ? display : "";
}
@Override
public int getSortMode() {
return Column.SORT_BY_VALUE;
}
}