data-miner-manager-widget/src/main/java/org/gcube/portlets/widgets/dataminermanagerwidget/client/parametersfield/OperatorFieldWidget.java

174 lines
4.0 KiB
Java

/**
*
*/
package org.gcube.portlets.widgets.dataminermanagerwidget.client.parametersfield;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ListParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.ObjectParameter;
import org.gcube.data.analysis.dataminermanagercl.shared.parameters.Parameter;
import com.allen_sauer.gwt.log.client.Log;
import com.sencha.gxt.widget.core.client.form.FieldLabel;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class OperatorFieldWidget {
private Parameter parameter;
private AbstractFld field;
private FieldLabel parameterLabel;
/**
*/
public OperatorFieldWidget(Parameter p) {
super();
this.parameter = p;
try {
if (p.getTypology() != null) {
switch (p.getTypology()) {
case COLUMN:
field = new ColumnFld(p);
break;
case COLUMN_LIST:
field = new ColumnListFld(p);
break;
case ENUM:
field = new EnumFld(p);
break;
case FILE:
field = new FileFld(p);
break;
case LIST:
field = createListField(p);
break;
case OBJECT:
field = createObjectField(p);
break;
case TABULAR:
field = new TabularFld(p);
break;
case TABULAR_LIST:
field = new TabularListFld(p);
break;
case WKT:
field = new WKTFld(p);
break;
case DATE:
field = new DateFld(p);
break;
case TIME:
field = new TimeFld(p);
break;
default:
break;
}
}
if (field == null) {
parameterLabel = new FieldLabel(null, p.getName());
parameterLabel.setLabelWidth(200);
parameterLabel.setLabelWordWrap(true);
} else {
parameterLabel = new FieldLabel(field.getWidget(), p.getName());
parameterLabel.setLabelWidth(200);
parameterLabel.setLabelWordWrap(true);
}
} catch (Throwable e) {
Log.error("Error: " + e.getLocalizedMessage());
e.printStackTrace();
}
}
/**
* @return the parameter
*/
public Parameter getParameter() {
return parameter;
}
public String getFieldValue() {
return field.getValue();
}
public String getValue() {
return getFieldValue();
}
public FieldLabel getParameterLabel() {
return parameterLabel;
}
/**
* @param p
* @return
*/
private AbstractFld createObjectField(Parameter p) {
ObjectParameter objectParameter = (ObjectParameter) p;
String type = objectParameter.getType();
if (type.contentEquals(Integer.class.getName())) {
return new IntFld(objectParameter);
} else if (type.contentEquals(String.class.getName())) {
return new StringFld(objectParameter);
} else if (type.contentEquals(Boolean.class.getName())) {
return new BooleanFld(objectParameter);
} else if (type.contentEquals(Double.class.getName())) {
return new DoubleFld(objectParameter);
} else if (type.contentEquals(Float.class.getName())) {
return new FloatFld(objectParameter);
} else
return null;
}
/**
*
*/
private AbstractFld createListField(Parameter p) {
ListParameter listParameter = (ListParameter) p;
String type = listParameter.getType();
if (type.contentEquals(String.class.getName())
|| type.contentEquals("STRING")) { // TODO REMOVE "STRING"
return new ListStringFld(listParameter);
} else if (type.contentEquals(Integer.class.getName())
|| type.contentEquals("NUMBER")) {
return new ListIntFld(listParameter);
}
// } else if (type.contentEquals(Boolean.class.getName())) {
// return new ListBooleanField(p);
// } else if (type.contentEquals(Double.class.getName())) {
// return new ListDoubleField(p);
// } else if (type.contentEquals(Float.class.getName())) {
// return new ListFloatField(p);
// }
else
return null;
}
/**
*
*/
public void updateOperatorParameterValue() {
this.parameter.setValue(this.getFieldValue());
}
public AbstractFld getField() {
return field;
}
public boolean isValid() {
if (field != null)
return field.isValid();
else
return false;
}
}