diff --git a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java index cc5a4fd..ddd6c65 100644 --- a/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java +++ b/src/main/java/org/gcube/portlets/user/td/tablewidget/client/rows/EditRowPanel.java @@ -2,6 +2,7 @@ package org.gcube.portlets.user.td.tablewidget.client.rows; import java.util.ArrayList; import java.util.Date; +import java.util.HashMap; import org.gcube.portlets.user.td.columnwidget.client.dimension.DimensionRowSelectionDialog; import org.gcube.portlets.user.td.columnwidget.client.dimension.DimensionRowSelectionListener; @@ -67,12 +68,46 @@ public class EditRowPanel extends FramedPanel { protected EventBus eventBus; protected ArrayList columns; protected RowRaw rowRaw; + protected boolean editRow; + protected VerticalLayoutContainer v; private TextButton btnSave; private TextButton btnClose; private DateTimeFormat sdf = DateTimeFormat.getFormat("yyyy-MM-dd"); + public class Cupple { + String columnId; + String value; + + public Cupple(String columnId, String value) { + this.columnId = columnId; + this.value = value; + } + + public String getColumnId() { + return columnId; + } + + public void setColumnId(String columnId) { + this.columnId = columnId; + } + + public String getValue() { + return value; + } + + public void setValue(String value) { + this.value = value; + } + + @Override + public String toString() { + return "Cupple [columnId=" + columnId + ", value=" + value + "]"; + } + + } + public EditRowPanel(EditRowDialog parent, TRId trId, RowRaw row, EventBus eventBus) { super(); @@ -80,6 +115,7 @@ public class EditRowPanel extends FramedPanel { this.trId = trId; this.rowRaw = row; this.eventBus = eventBus; + this.editRow = true; Log.debug("Create EditRowPanel(): [" + trId.toString() + " , RowRaw:" + row + "]"); if (rowRaw == null) { @@ -90,6 +126,26 @@ public class EditRowPanel extends FramedPanel { } } + /** + * Add a new row + * + * @param parent + * @param trId + * @param eventBus + */ + public EditRowPanel(EditRowDialog parent, TRId trId, EventBus eventBus) { + super(); + this.parent = parent; + this.trId = trId; + this.eventBus = eventBus; + this.editRow = false; + Log.debug("Create For Add Row EditRowPanel(): [" + trId.toString() + + "]"); + init(); + retrieveColumn(); + + } + protected void init() { setWidth(WIDTH); setHeight(HEIGHT); @@ -101,7 +157,7 @@ public class EditRowPanel extends FramedPanel { SimpleContainer container = new SimpleContainer(); container.setHeight(FIELDSHEIGHT); - VerticalLayoutContainer v = new VerticalLayoutContainer(); + v = new VerticalLayoutContainer(); v.setScrollMode(ScrollMode.AUTO); container.add(v); @@ -143,14 +199,14 @@ public class EditRowPanel extends FramedPanel { v.add(fl, new VerticalLayoutData(1, -1, new Margins(1))); } - + container.forceLayout(); - + VerticalLayoutContainer vPanel = new VerticalLayoutContainer(); vPanel.add(container, new VerticalLayoutData(1, -1)); vPanel.add(flowButton, new VerticalLayoutData(1, -1, new Margins(1))); add(vPanel); - + } protected void retrieveColumn() { @@ -174,13 +230,6 @@ public class EditRowPanel extends FramedPanel { } - protected void save() { - } - - protected void close() { - parent.close(); - } - protected ArrayList generateFields() { ArrayList fields = new ArrayList(); @@ -192,7 +241,7 @@ public class EditRowPanel extends FramedPanel { label = label.substring(0, LABELSIZE - 3); label += ".."; } - } + } if (!col.isViewColumn()) { if (col.getTypeCode().compareTo( ColumnTypeCode.DIMENSION.toString()) == 0 @@ -211,7 +260,11 @@ public class EditRowPanel extends FramedPanel { Radio radioFalse = new Radio(); radioFalse.setBoxLabel("false"); - String value = rowRaw.getMap().get(col.getColumnId()); + String value = "true"; + if (editRow) { + value = rowRaw.getMap().get(col.getColumnId()); + } + if (new Boolean(value)) { radioTrue.setValue(true); } else { @@ -232,14 +285,17 @@ public class EditRowPanel extends FramedPanel { if (col.getDataTypeName().compareTo( ColumnDataType.Date.toString()) == 0) { DateField date = new DateField(); - String value = rowRaw.getMap().get( - col.getColumnId()); Date d = null; - try { - d = sdf.parse(value); - } catch (Throwable e) { - Log.error("Error parsing date string: " - + e.getLocalizedMessage()); + if (editRow) { + String value = rowRaw.getMap().get( + col.getColumnId()); + + try { + d = sdf.parse(value); + } catch (Throwable e) { + Log.error("Error parsing date string: " + + e.getLocalizedMessage()); + } } if (d != null) { date.setValue(d); @@ -252,8 +308,11 @@ public class EditRowPanel extends FramedPanel { if (col.getDataTypeName().compareTo( ColumnDataType.Text.toString()) == 0) { TextField text = new TextField(); - String value = rowRaw.getMap().get( - col.getColumnId()); + String value = ""; + if (editRow) { + value = rowRaw.getMap().get( + col.getColumnId()); + } text.setValue(value); text.addValueChangeHandler(new ValueChangeHandler() { @Override @@ -272,8 +331,11 @@ public class EditRowPanel extends FramedPanel { if (col.getDataTypeName().compareTo( ColumnDataType.Geometry.toString()) == 0) { TextField geometry = new TextField(); - String value = rowRaw.getMap().get( - col.getColumnId()); + String value = ""; + if (editRow) { + value = rowRaw.getMap().get( + col.getColumnId()); + } geometry.setValue(value); geometry.addValueChangeHandler(new ValueChangeHandler() { @Override @@ -292,8 +354,11 @@ public class EditRowPanel extends FramedPanel { if (col.getDataTypeName().compareTo( ColumnDataType.Integer.toString()) == 0) { TextField integ = new TextField(); - String value = rowRaw.getMap().get( - col.getColumnId()); + String value = ""; + if (editRow) { + value = rowRaw.getMap().get( + col.getColumnId()); + } integ.setValue(value); integ.addValueChangeHandler(new ValueChangeHandler() { @Override @@ -313,8 +378,11 @@ public class EditRowPanel extends FramedPanel { ColumnDataType.Numeric .toString()) == 0) { TextField numeric = new TextField(); - String value = rowRaw.getMap().get( - col.getColumnId()); + String value = ""; + if (editRow) { + value = rowRaw.getMap().get( + col.getColumnId()); + } numeric.setValue(value); numeric.setId(col.getColumnId()); numeric.addValueChangeHandler(new ValueChangeHandler() { @@ -382,14 +450,17 @@ public class EditRowPanel extends FramedPanel { String viewColumn = col.getRelationship().getTargetColumnId(); - String valueOnViewColumn = rowRaw.getMap().get(viewColumn); + String valueOnViewColumn = null; + String rowId = null; + if (editRow) { + valueOnViewColumn = rowRaw.getMap().get(viewColumn); + rowId = rowRaw.getRowId(); + DimensionRow dimR = new DimensionRow(rowId, valueOnViewColumn); + comboDimension.setValue(dimR); + } final CellData cellData = new CellData(valueOnViewColumn, "", - viewColumn, "", rowRaw.getRowId(), 0, 0); - - DimensionRow dimR = new DimensionRow(rowRaw.getRowId(), - valueOnViewColumn); - comboDimension.setValue(dimR); + viewColumn, "", rowId, 0, 0); comboDimension.addTriggerClickHandler(new TriggerClickHandler() { @@ -417,4 +488,109 @@ public class EditRowPanel extends FramedPanel { return dimensionLabel; } + protected void save() { + int i = 0; + int lenght = v.getWidgetCount(); + HashMap maps = new HashMap(); + + for (; i < lenght; i++) { + FieldLabel fieldLabel = (FieldLabel) v.getWidget(i); + String columnId = fieldLabel.getId(); + ColumnData colCurrent = null; + for (ColumnData col : columns) { + if (col.getColumnId().compareTo(columnId) == 0) { + colCurrent = col; + break; + } + } + if (colCurrent == null) { + return; + } + if (colCurrent.getTypeCode().compareTo( + ColumnTypeCode.DIMENSION.toString()) == 0 + || colCurrent.getTypeCode().compareTo( + ColumnTypeCode.TIMEDIMENSION.toString()) == 0) { + fieldLabel.getWidget(); + + } else { + if (colCurrent.getDataTypeName().compareTo( + ColumnDataType.Boolean.toString()) == 0) { + Radio radioTrue = (Radio) fieldLabel.getWidget(); + maps.put(columnId, radioTrue.getValue().toString()); + } else { + if (colCurrent.getDataTypeName().compareTo( + ColumnDataType.Date.toString()) == 0) { + DateField date = (DateField) fieldLabel.getWidget(); + if (date == null || date.getCurrentValue() == null) { + maps.put(columnId, null); + } else { + Date d = date.getCurrentValue(); + String dateS = sdf.format(d); + maps.put(columnId, dateS); + } + } else { + if (colCurrent.getDataTypeName().compareTo( + ColumnDataType.Text.toString()) == 0) { + TextField text = (TextField) fieldLabel.getWidget(); + maps.put(columnId, text.getCurrentValue()); + } else { + if (colCurrent.getDataTypeName().compareTo( + ColumnDataType.Geometry.toString()) == 0) { + TextField geometry = (TextField) fieldLabel + .getWidget(); + maps.put(columnId, geometry.getCurrentValue()); + } else { + if (colCurrent.getDataTypeName().compareTo( + ColumnDataType.Integer.toString()) == 0) { + TextField integ = (TextField) fieldLabel + .getWidget(); + @SuppressWarnings("unused") + Integer intege; + try { + intege = new Integer( + integ.getCurrentValue()); + } catch (NumberFormatException e) { + UtilsGXT3.alert("Attentions", + colCurrent.getLabel()+" is no a valid Integer type"); + return; + } + + maps.put(columnId, integ.getCurrentValue()); + } else { + if (colCurrent.getDataTypeName().compareTo( + ColumnDataType.Numeric.toString()) == 0) { + TextField numeric = (TextField) fieldLabel + .getWidget(); + @SuppressWarnings("unused") + Double d; + try { + d = new Double( + numeric.getCurrentValue()); + } catch (NumberFormatException e) { + UtilsGXT3.alert("Attentions", + colCurrent.getLabel()+" is no a valid Numeric type"); + return; + } + maps.put(columnId, + numeric.getCurrentValue()); + } else { + + } + } + } + } + } + } + } + } + + + } + + protected void close() { + if (parent != null) { + parent.close(); + } + } + }