refs 4172: Dataminer interface enhancements

https://support.d4science.org/issues/4172

Added Support to Time and Date parameters in DataMiner

git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/data-miner-manager@130849 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
Giancarlo Panichi 2016-07-27 14:37:40 +00:00
parent 7c3ec4efc4
commit b845e4fce9
18 changed files with 459 additions and 52 deletions

View File

@ -24,7 +24,7 @@ import org.gcube.portlets.user.dataminermanager.shared.exception.SessionExpiredS
import org.gcube.portlets.user.dataminermanager.shared.parameters.ColumnListParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.ColumnParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.Parameter.ParameterTypology;
import org.gcube.portlets.user.dataminermanager.shared.parameters.ParameterType;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.core.client.GWT;
@ -247,12 +247,12 @@ public class ComputationParametersPanel extends SimpleContainer {
}
for (Parameter p : operator.getOperatorParameters()) {
if (p.getTypology().compareTo(ParameterTypology.COLUMN) == 0
if (p.getTypology().compareTo(ParameterType.COLUMN) == 0
|| p.getTypology().compareTo(
ParameterTypology.COLUMN_LIST) == 0) {
ParameterType.COLUMN_LIST) == 0) {
// search for the table parameter which it depends
String tabParamName = (p.getTypology().compareTo(
ParameterTypology.COLUMN) == 0 ? ((ColumnParameter) p)
ParameterType.COLUMN) == 0 ? ((ColumnParameter) p)
.getReferredTabularParameterName()
: ((ColumnListParameter) p)
.getReferredTabularParameterName());

View File

@ -0,0 +1,117 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.parametersfield;
import java.util.Date;
import org.gcube.portlets.user.dataminermanager.shared.parameters.DateParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.Parameter;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.form.DateField;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class DateFld extends AbstractFld {
private SimpleContainer fieldContainer;
private DateField dateField;
private DateTimeFormat dateFormat;
/**
* @param parameter
*/
public DateFld(Parameter parameter) {
super(parameter);
DateParameter p = (DateParameter) parameter;
dateField = new DateField();
dateFormat = DateTimeFormat.getFormat("yyyy-MM-dd");
try {
Date defaultDate = dateFormat.parse(p.getDefaultValue());
dateField.setValue(defaultDate);
} catch (Throwable e) {
Log.error("DateFld invalid default value" + p.getDefaultValue());
}
if (p.getDefaultValue() == null || p.getDefaultValue().isEmpty())
dateField.setAllowBlank(false);
HtmlLayoutContainer descr;
if (p.getDescription() == null) {
descr = new HtmlLayoutContainer(
"<p style='margin-left:5px !important;'></p>");
descr.addStyleName("workflow-fieldDescription");
} else {
// textField.setToolTip(p.getDescription());
descr = new HtmlLayoutContainer(
"<p style='margin-left:5px !important;'>"
+ p.getDescription() + "</p>");
descr.addStyleName("workflow-fieldDescription");
}
SimpleContainer vContainer = new SimpleContainer();
VerticalLayoutContainer vField = new VerticalLayoutContainer();
HtmlLayoutContainer typeDescription = new HtmlLayoutContainer(
"Date Value");
typeDescription.setStylePrimaryName("workflow-parameters-description");
vField.add(dateField, new VerticalLayoutData(-1, -1, new Margins(0)));
vField.add(typeDescription, new VerticalLayoutData(-1, -1, new Margins(
0)));
vContainer.add(vField);
fieldContainer = new SimpleContainer();
HBoxLayoutContainer horiz = new HBoxLayoutContainer();
horiz.setPack(BoxLayoutPack.START);
horiz.setEnableOverflow(false);
horiz.add(vContainer, new BoxLayoutData(new Margins()));
horiz.add(descr, new BoxLayoutData(new Margins()));
fieldContainer.add(horiz);
fieldContainer.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
String dateS = dateFormat.format(dateField.getCurrentValue());
return dateS;
}
/**
*
*/
@Override
public Widget getWidget() {
return fieldContainer;
}
@Override
public boolean isValid() {
return dateField.isValid();
}
}

View File

@ -58,6 +58,12 @@ public class OperatorFieldWidget {
case WKT:
field = new WKTFld(p);
break;
case DATE:
field = new DateFld(p);
break;
case TIME:
field = new TimeFld(p);
break;
default:
break;

View File

@ -0,0 +1,120 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.client.parametersfield;
import java.util.Date;
import org.gcube.portlets.user.dataminermanager.shared.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.TimeParameter;
import com.allen_sauer.gwt.log.client.Log;
import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.user.client.ui.Widget;
import com.sencha.gxt.cell.core.client.form.ComboBoxCell.TriggerAction;
import com.sencha.gxt.core.client.util.Margins;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutData;
import com.sencha.gxt.widget.core.client.container.BoxLayoutContainer.BoxLayoutPack;
import com.sencha.gxt.widget.core.client.container.HBoxLayoutContainer;
import com.sencha.gxt.widget.core.client.container.HtmlLayoutContainer;
import com.sencha.gxt.widget.core.client.container.SimpleContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer;
import com.sencha.gxt.widget.core.client.container.VerticalLayoutContainer.VerticalLayoutData;
import com.sencha.gxt.widget.core.client.form.TimeField;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class TimeFld extends AbstractFld {
private SimpleContainer fieldContainer;
private TimeField timeField;
private DateTimeFormat timeFormat;
/**
* @param parameter
*/
public TimeFld(Parameter parameter) {
super(parameter);
TimeParameter p = (TimeParameter) parameter;
timeField = new TimeField();
timeField.setTriggerAction(TriggerAction.ALL);
timeField.setFormat(DateTimeFormat.getFormat("HH:mm:ss"));
timeFormat = DateTimeFormat.getFormat("HH:mm:ss");
try {
Date defaultDate = timeFormat.parse(p.getDefaultValue());
timeField.setValue(defaultDate);
} catch (Throwable e) {
Log.error("DateFld invalid default value" + p.getDefaultValue());
}
if (p.getDefaultValue() == null || p.getDefaultValue().isEmpty())
timeField.setAllowBlank(false);
HtmlLayoutContainer descr;
if (p.getDescription() == null) {
descr = new HtmlLayoutContainer(
"<p style='margin-left:5px !important;'></p>");
descr.addStyleName("workflow-fieldDescription");
} else {
// textField.setToolTip(p.getDescription());
descr = new HtmlLayoutContainer(
"<p style='margin-left:5px !important;'>"
+ p.getDescription() + "</p>");
descr.addStyleName("workflow-fieldDescription");
}
SimpleContainer vContainer = new SimpleContainer();
VerticalLayoutContainer vField = new VerticalLayoutContainer();
HtmlLayoutContainer typeDescription = new HtmlLayoutContainer(
"Time Value");
typeDescription.setStylePrimaryName("workflow-parameters-description");
vField.add(timeField, new VerticalLayoutData(-1, -1, new Margins(0)));
vField.add(typeDescription, new VerticalLayoutData(-1, -1, new Margins(
0)));
vContainer.add(vField);
fieldContainer = new SimpleContainer();
HBoxLayoutContainer horiz = new HBoxLayoutContainer();
horiz.setPack(BoxLayoutPack.START);
horiz.setEnableOverflow(false);
horiz.add(vContainer, new BoxLayoutData(new Margins()));
horiz.add(descr, new BoxLayoutData(new Margins()));
fieldContainer.add(horiz);
fieldContainer.forceLayout();
}
/**
*
*/
@Override
public String getValue() {
String timeS = timeFormat.format(timeField.getCurrentValue());
return timeS;
}
/**
*
*/
@Override
public Widget getWidget() {
return fieldContainer;
}
@Override
public boolean isValid() {
return timeField.isValid();
}
}

View File

@ -20,6 +20,7 @@ import net.opengis.wps.x100.SupportedComplexDataType;
import org.gcube.portlets.user.dataminermanager.shared.exception.ServiceException;
import org.gcube.portlets.user.dataminermanager.shared.parameters.ColumnListParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.ColumnParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.DateParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.EnumParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.FileParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.ListParameter;
@ -27,6 +28,7 @@ import org.gcube.portlets.user.dataminermanager.shared.parameters.ObjectParamete
import org.gcube.portlets.user.dataminermanager.shared.parameters.Parameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.TabularListParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.TabularParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.TimeParameter;
import org.gcube.portlets.user.dataminermanager.shared.parameters.WKTGeometryType;
import org.gcube.portlets.user.dataminermanager.shared.parameters.WKTParameter;
import org.slf4j.Logger;
@ -35,13 +37,6 @@ import org.slf4j.LoggerFactory;
public class WPS2SM {
private final static String SEPARATOR = "|";
/*
* public enum PrimitiveTypes { STRING, NUMBER, ENUMERATED, CONSTANT,
* RANDOM, FILE, MAP, BOOLEAN, IMAGES
*
* }
*/
private static Logger logger = LoggerFactory.getLogger(WPS2SM.class);
/**
@ -165,12 +160,26 @@ public class WPS2SM {
logger.debug("WKT parameter: " + title);
converted = retrieveWKTParameter(id, title,
defaultValue);
} else {
converted = new ObjectParameter(id, title,
guessPrimitiveType(guessedType),
defaultValue);
if (title.contains("[DATE]")) {
logger.debug("DATE parameter: " + title);
title = title.replace("[DATE]", "");
converted = new DateParameter(id, title,
defaultValue);
} else {
if (title.contains("[TIME]")) {
logger.debug("TIME parameter: " + title);
title = title.replace("[TIME]", "");
converted = new TimeParameter(id,
title, defaultValue);
} else {
converted = new ObjectParameter(
id,
title,
guessPrimitiveType(guessedType),
defaultValue);
}
}
}
}
}
@ -191,49 +200,51 @@ public class WPS2SM {
String defaultValue) {
if (title.contains("[WKT_POINT]")) {
title=title.replace("[WKT_POINT]", "");
title = title.replace("[WKT_POINT]", "");
return new WKTParameter(id, title, WKTGeometryType.Point,
defaultValue);
} else {
if (title.contains("[WKT_LINESTRING]")) {
title=title.replace("[WKT_LINESTRING]", "");
title = title.replace("[WKT_LINESTRING]", "");
return new WKTParameter(id, title, WKTGeometryType.LineString,
defaultValue);
} else {
if (title.contains("[WKT_POLYGON]")) {
title=title.replace("[WKT_POLYGON]", "");
title = title.replace("[WKT_POLYGON]", "");
return new WKTParameter(id, title, WKTGeometryType.Polygon,
defaultValue);
} else {
if (title.contains("[WKT_CIRCLE]")) {
title=title.replace("[WKT_CIRCLE]", "");
title = title.replace("[WKT_CIRCLE]", "");
return new WKTParameter(id, title,
WKTGeometryType.Circle, defaultValue);
} else {
if (title.contains("[WKT_TRIANGLE]")) {
title=title.replace("[WKT_TRIANGLE]", "");
title = title.replace("[WKT_TRIANGLE]", "");
return new WKTParameter(id, title,
WKTGeometryType.Triangle, defaultValue);
} else {
if (title.contains("[WKT_SQUARE]")) {
title=title.replace("[WKT_SQUARE]", "");
title = title.replace("[WKT_SQUARE]", "");
return new WKTParameter(id, title,
WKTGeometryType.Square, defaultValue);
} else {
if (title.contains("[WKT_PENTAGON]")) {
title=title.replace("[WKT_PENTAGON]", "");
title = title.replace("[WKT_PENTAGON]", "");
return new WKTParameter(id, title,
WKTGeometryType.Pentagon,
defaultValue);
} else {
if (title.contains("[WKT_HEXAGON]")) {
title=title.replace("[WKT_HEXAGON]", "");
title = title.replace("[WKT_HEXAGON]",
"");
return new WKTParameter(id, title,
WKTGeometryType.Hexagon,
defaultValue);
} else {
if (title.contains("[WKT_BOX]")) {
title=title.replace("[WKT_BOX]", "");
title = title.replace("[WKT_BOX]",
"");
return new WKTParameter(id, title,
WKTGeometryType.Box,
defaultValue);

View File

@ -21,12 +21,12 @@ public class ColumnListParameter extends Parameter implements Serializable {
public ColumnListParameter() {
super();
this.typology = ParameterTypology.COLUMN_LIST;
this.typology = ParameterType.COLUMN_LIST;
}
public ColumnListParameter(String name, String description,
String referredTabularParameterName, String separator) {
super(name, ParameterTypology.COLUMN_LIST, description);
super(name, ParameterType.COLUMN_LIST, description);
this.referredTabularParameterName = referredTabularParameterName;
this.separator = separator;
}

View File

@ -26,7 +26,7 @@ public class ColumnParameter extends Parameter implements Serializable {
*/
public ColumnParameter() {
super();
this.typology = ParameterTypology.COLUMN;
this.typology = ParameterType.COLUMN;
}
/**
@ -34,7 +34,7 @@ public class ColumnParameter extends Parameter implements Serializable {
*/
public ColumnParameter(String name, String description,
String referredTabularParameterName, String defaultColumn) {
super(name, ParameterTypology.COLUMN, description);
super(name, ParameterType.COLUMN, description);
this.referredTabularParameterName = referredTabularParameterName;
this.defaultColumn = defaultColumn;
}

View File

@ -0,0 +1,73 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.shared.parameters;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class DateParameter extends Parameter implements IsSerializable {
private static final long serialVersionUID = 1673874854501249519L;
private String defaultValue;
private String value;
/**
*
*/
public DateParameter() {
super();
this.typology = ParameterType.DATE;
}
/**
* @param type
* @param defaultValue
* @param value
*/
public DateParameter(String name, String description, String defaultValue) {
super(name, ParameterType.DATE, description);
this.defaultValue = defaultValue;
}
/**
* @return the defaultValue
*/
public String getDefaultValue() {
return defaultValue;
}
/**
* @param defaultValue
* the defaultValue to set
*/
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
/**
* @return the value
*/
@Override
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "DateParameter [defaultValue=" + defaultValue + ", value="
+ value + ", name=" + name + ", description=" + description
+ ", typology=" + typology + "]";
}
}

View File

@ -27,7 +27,7 @@ public class EnumParameter extends Parameter implements IsSerializable {
*/
public EnumParameter() {
super();
this.typology = ParameterTypology.ENUM;
this.typology = ParameterType.ENUM;
}
/**
@ -36,7 +36,7 @@ public class EnumParameter extends Parameter implements IsSerializable {
* @param value
*/
public EnumParameter(String name, String description, List<String> values, String defaultValue) {
super(name, ParameterTypology.ENUM, description);
super(name, ParameterType.ENUM, description);
this.values = values;
this.defaultValue = defaultValue;
}

View File

@ -24,7 +24,7 @@ public class FileParameter extends Parameter implements IsSerializable {
*/
public FileParameter() {
super();
this.typology = ParameterTypology.FILE;
this.typology = ParameterType.FILE;
}
/**
@ -35,7 +35,7 @@ public class FileParameter extends Parameter implements IsSerializable {
* @param mimeType
*/
public FileParameter(String name, String description, String defaultMimeType, ArrayList<String> supportedMimeTypes) {
super(name, ParameterTypology.FILE, description);
super(name, ParameterType.FILE, description);
this.defaultMimeType = defaultMimeType;
this.supportedMimeTypes = supportedMimeTypes;
}

View File

@ -23,7 +23,7 @@ public class ListParameter extends Parameter implements IsSerializable {
*/
public ListParameter() {
super();
this.typology = ParameterTypology.LIST;
this.typology = ParameterType.LIST;
}
/**
@ -32,7 +32,7 @@ public class ListParameter extends Parameter implements IsSerializable {
*/
public ListParameter(String name, String description, String type,
String separator) {
super(name, ParameterTypology.LIST, description);
super(name, ParameterType.LIST, description);
this.type = type;
this.separator = separator;
}

View File

@ -22,12 +22,12 @@ public class ObjectParameter extends Parameter implements IsSerializable {
*/
public ObjectParameter() {
super();
this.typology = ParameterTypology.OBJECT;
this.typology = ParameterType.OBJECT;
}
public ObjectParameter(String name, String description, String type, String defaultValue) {
super(name, ParameterTypology.OBJECT, description);
super(name, ParameterType.OBJECT, description);
this.type = type;
this.defaultValue = defaultValue;
}

View File

@ -18,13 +18,9 @@ public abstract class Parameter implements Serializable {
*/
private static final long serialVersionUID = -555286289487491703L;
public enum ParameterTypology {
OBJECT, TABULAR, FILE, ENUM, LIST, COLUMN, COLUMN_LIST, TABULAR_LIST, WKT
};
protected String name;
protected String description;
protected ParameterTypology typology;
protected ParameterType typology;
/**
*
@ -40,7 +36,7 @@ public abstract class Parameter implements Serializable {
* @param defaultValue
* @param value
*/
public Parameter(String name, ParameterTypology type, String description) {
public Parameter(String name, ParameterType type, String description) {
super();
this.name = name;
this.typology = type;
@ -62,7 +58,7 @@ public abstract class Parameter implements Serializable {
/**
* @return the typology
*/
public ParameterTypology getTypology() {
public ParameterType getTypology() {
return typology;
}
@ -70,7 +66,7 @@ public abstract class Parameter implements Serializable {
* @param typology
* the typology to set
*/
public void setTypology(ParameterTypology typology) {
public void setTypology(ParameterType typology) {
this.typology = typology;
}

View File

@ -0,0 +1,11 @@
package org.gcube.portlets.user.dataminermanager.shared.parameters;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public enum ParameterType {
OBJECT, TABULAR, FILE, ENUM, LIST, COLUMN, COLUMN_LIST, TABULAR_LIST, WKT, DATE, TIME;
}

View File

@ -25,7 +25,7 @@ public class TabularListParameter extends Parameter implements Serializable {
public TabularListParameter() {
super();
this.typology = ParameterTypology.TABULAR_LIST;
this.typology = ParameterType.TABULAR_LIST;
}
/**
@ -35,7 +35,7 @@ public class TabularListParameter extends Parameter implements Serializable {
public TabularListParameter(String name, String description,
String separator, String defaultMimeType,
ArrayList<String> supportedMimeTypes) {
super(name, ParameterTypology.TABULAR_LIST, description);
super(name, ParameterType.TABULAR_LIST, description);
this.separator = separator;
this.defaultMimeType = defaultMimeType;
this.supportedMimeTypes = supportedMimeTypes;

View File

@ -25,7 +25,7 @@ public class TabularParameter extends Parameter implements Serializable {
*/
public TabularParameter() {
super();
this.typology = ParameterTypology.TABULAR;
this.typology = ParameterType.TABULAR;
}
/**
@ -36,7 +36,7 @@ public class TabularParameter extends Parameter implements Serializable {
*/
public TabularParameter(String name, String description, String tableName,
String defaultMimeType, ArrayList<String> supportedMimeTypes) {
super(name, ParameterTypology.TABULAR, description);
super(name, ParameterType.TABULAR, description);
this.tableName = tableName;
this.templates = null;
this.defaultMimeType = defaultMimeType;
@ -53,7 +53,7 @@ public class TabularParameter extends Parameter implements Serializable {
public TabularParameter(String name, String description, String tableName,
ArrayList<String> templates, String defaultMimeType,
ArrayList<String> supportedMimeTypes) {
super(name, ParameterTypology.TABULAR, description);
super(name, ParameterType.TABULAR, description);
this.tableName = tableName;
this.templates = templates;
this.defaultMimeType = defaultMimeType;

View File

@ -0,0 +1,73 @@
/**
*
*/
package org.gcube.portlets.user.dataminermanager.shared.parameters;
import com.google.gwt.user.client.rpc.IsSerializable;
/**
*
* @author Giancarlo Panichi email: <a
* href="mailto:g.panichi@isti.cnr.it">g.panichi@isti.cnr.it</a>
*
*/
public class TimeParameter extends Parameter implements IsSerializable {
private static final long serialVersionUID = 1673874854501249519L;
private String defaultValue;
private String value;
/**
*
*/
public TimeParameter() {
super();
this.typology = ParameterType.TIME;
}
/**
* @param type
* @param defaultValue
* @param value
*/
public TimeParameter(String name, String description, String defaultValue) {
super(name, ParameterType.TIME, description);
this.defaultValue = defaultValue;
}
/**
* @return the defaultValue
*/
public String getDefaultValue() {
return defaultValue;
}
/**
* @param defaultValue
* the defaultValue to set
*/
public void setDefaultValue(String defaultValue) {
this.defaultValue = defaultValue;
}
/**
* @return the value
*/
@Override
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
@Override
public String toString() {
return "TimeParameter [defaultValue=" + defaultValue + ", value="
+ value + ", name=" + name + ", description=" + description
+ ", typology=" + typology + "]";
}
}

View File

@ -23,7 +23,7 @@ public class WKTParameter extends Parameter implements IsSerializable {
*/
public WKTParameter() {
super();
this.typology = ParameterTypology.WKT;
this.typology = ParameterType.WKT;
}
/**
@ -33,7 +33,7 @@ public class WKTParameter extends Parameter implements IsSerializable {
*/
public WKTParameter(String name, String description,
WKTGeometryType wktGeometryType, String defaultValue) {
super(name, ParameterTypology.WKT, description);
super(name, ParameterType.WKT, description);
this.wktGeometryType = wktGeometryType;
this.defaultValue = defaultValue;
}