From a2797d2c70f0e00e1616184650348183ca0d5e7a Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Wed, 19 Nov 2014 17:53:53 +0000 Subject: [PATCH] Updated Column Change Type git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-column-widget@101656 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../client/ChangeColumnTypePanel.java | 319 ++++++++++++++---- 1 file changed, 261 insertions(+), 58 deletions(-) diff --git a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java index 44bc8d6..ce3f73e 100644 --- a/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java +++ b/src/main/java/org/gcube/portlets/user/td/columnwidget/client/ChangeColumnTypePanel.java @@ -27,6 +27,7 @@ import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsFinalExcept import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTIsLockedException; import org.gcube.portlets.user.td.gwtservice.shared.exception.TDGWTSessionExpiredException; import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; +import org.gcube.portlets.user.td.gwtservice.shared.tr.RefColumn; import org.gcube.portlets.user.td.gwtservice.shared.tr.TabResource; import org.gcube.portlets.user.td.gwtservice.shared.tr.column.mapping.ColumnMappingList; import org.gcube.portlets.user.td.gwtservice.shared.tr.column.type.ChangeColumnTypeSession; @@ -72,7 +73,6 @@ import com.sencha.gxt.widget.core.client.event.TriggerClickEvent; import com.sencha.gxt.widget.core.client.event.TriggerClickEvent.TriggerClickHandler; import com.sencha.gxt.widget.core.client.form.ComboBox; import com.sencha.gxt.widget.core.client.form.FieldLabel; -import com.sencha.gxt.widget.core.client.form.TextField; import com.sencha.gxt.widget.core.client.info.Info; /** @@ -86,47 +86,51 @@ import com.sencha.gxt.widget.core.client.info.Info; */ public class ChangeColumnTypePanel extends FramedPanel implements CodelistSelectionListener, ColumnMappingListener, MonitorDialogListener { - protected String WIDTH = "640px"; - protected String HEIGHT = "520px"; - protected EventBus eventBus; - protected ChangeColumnTypeDialog parent; - protected TextField label = null; - protected TRId trId; - protected String columnName; - protected ColumnData column; - protected ComboBox comboColumn = null; - protected ComboBox comboColumnTypeCode = null; + private String WIDTH = "640px"; + private String HEIGHT = "520px"; + private EventBus eventBus; + private ChangeColumnTypeDialog parent; + // private TextField label = null; + private TRId trId; + private String columnName; + // private ColumnData column; + private ColumnData columnRequested; + private ColumnData connectionColumn; + private ComboBox comboColumn = null; + private ComboBox comboColumnTypeCode = null; - protected ComboBox comboMeasureType = null; - protected FieldLabel comboMeasureTypeLabel; + private ComboBox comboMeasureType = null; + private FieldLabel comboMeasureTypeLabel; - protected ComboBox comboAttributeType = null; - protected FieldLabel comboAttributeTypeLabel; + private ComboBox comboAttributeType = null; + private FieldLabel comboAttributeTypeLabel; - protected ComboBox comboDimensionType = null; - protected FieldLabel comboDimensionTypeLabel; - protected ListStore storeComboDimensionType; + private ComboBox comboDimensionType = null; + private FieldLabel comboDimensionTypeLabel; + private ListStore storeComboDimensionType; - protected ComboBox comboColumnReferenceType = null; - protected FieldLabel comboColumnReferenceTypeLabel; - protected ListStore storeComboColumnReferenceType; + private ComboBox comboColumnReferenceType = null; + private FieldLabel comboColumnReferenceTypeLabel; + private ListStore storeComboColumnReferenceType; - protected ComboBox comboColumnMapping = null; - protected FieldLabel comboColumnMappingLabel; - protected ListStore storeComboColumnMapping; + private ComboBox comboColumnMapping = null; + private FieldLabel comboColumnMappingLabel; + private ListStore storeComboColumnMapping; - protected ComboBox comboTimeDimensionType = null; - protected FieldLabel comboTimeDimensionTypeLabel; + private ComboBox comboTimeDimensionType = null; + private FieldLabel comboTimeDimensionTypeLabel; - protected ComboBox comboLocaleType = null; - protected FieldLabel comboLocaleTypeLabel; - protected ListStore storeComboLocaleType; + private ComboBox comboLocaleType = null; + private FieldLabel comboLocaleTypeLabel; + private ListStore storeComboLocaleType; - protected ListLoader> loader; + private ListLoader> loader; - protected TextButton change; + private TextButton change; - protected ChangeColumnTypeSession changeColumnTypeSession; + private ChangeColumnTypeSession changeColumnTypeSession; + private boolean panelCreated; + private ColumnData columnChangeType; public ChangeColumnTypePanel(TRId trId, String columnName, EventBus eventBus) { setWidth(WIDTH); @@ -136,7 +140,59 @@ public class ChangeColumnTypePanel extends FramedPanel implements this.trId = trId; this.columnName = columnName; this.eventBus = eventBus; - create(); + panelCreated = false; + retrieveColumnRequested(); + } + + protected void retrieveColumnRequested() { + + TDGWTServiceAsync.INSTANCE.getColumn(trId, columnName, + new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Locked", + caught.getLocalizedMessage()); + } else { + if (caught instanceof TDGWTIsFinalException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Final", + caught.getLocalizedMessage()); + } else { + Log.debug("Error retrieving column: " + + caught.getLocalizedMessage()); + UtilsGXT3 + .alert("Error retrieving column", + "Error retrieving column on server!"); + } + } + } + + } + + @Override + public void onSuccess(ColumnData result) { + Log.debug("Retrieved Column: " + result); + if (result == null) { + UtilsGXT3.alert("Error", + "The requested column is null"); + } + columnRequested = result; + if (panelCreated) { + loader.load(); + } else { + panelCreated = true; + create(); + } + } + }); + } protected void create() { @@ -325,7 +381,6 @@ public class ChangeColumnTypePanel extends FramedPanel implements comboColumnReferenceTypeLabel = new FieldLabel( comboColumnReferenceType, "Column"); - // TODO // ColumnMapping ColumnMappingListProperties propsColumnMapping = GWT .create(ColumnMappingListProperties.class); @@ -749,20 +804,29 @@ public class ChangeColumnTypePanel extends FramedPanel implements } protected void setComboStatus(ArrayList result) { - Log.debug("ColumnName:" + columnName); - if (columnName != null) { - for (ColumnData cd : result) { - Log.debug("ColumnData name:" + cd.getName()); - if (cd.getName().compareTo(columnName) == 0) { + Log.debug("ColumnRequested: " + columnRequested); + String columnId; + if (columnRequested.isViewColumn()) { + columnId = columnRequested.getColumnViewData() + .getSourceTableDimensionColumnId(); + } else { + columnId = columnRequested.getColumnId(); + } + if (columnRequested != null) { + for (ColumnData cd : result) { + Log.debug("Column:" + cd.getColumnId()); + if (cd.getColumnId().compareTo(columnId) == 0) { + columnChangeType=cd; updateComboStatus(cd); + return; } } } } protected void updateComboStatus(ColumnData cd) { - Log.debug("ColumnData: " + cd.toString()); + Log.debug("Update Combos ColumnData: " + cd.toString()); changeColumnTypeSession = new ChangeColumnTypeSession(); changeColumnTypeSession.setColumnData(cd); comboColumn.setValue(cd); @@ -787,19 +851,32 @@ public class ChangeColumnTypePanel extends FramedPanel implements if (type == ColumnTypeCode.CODENAME) { setLocale(cd.getLocale()); } else { - // TODO Add TimeDimension and Dimension information to - // ColumnData - /* - * if (type == ColumnTypeCode.TIMEDIMENSION) { - * changeColumnTypeSession - * .setColumnDataType(ColumnDataTypeStore - * .selectedAttribute(cd.getDataTypeName())); - * comboTimeDimensionType.setValue(TimeDimensionTypeStore - * .selectedAttributeElement(cd.getDataTypeName())); } else - * { - * - * } - */ + + if (type == ColumnTypeCode.TIMEDIMENSION) { + changeColumnTypeSession + .setTimeDimensionType(TimeDimensionTypeStore + .selectedTimeDimension(cd + .getPeriodDataType() + .getPeriodDataTypeLabel())); + comboTimeDimensionType.setValue(TimeDimensionTypeStore + .selectedTimeDimensionElement(cd + .getPeriodDataType() + .getPeriodDataTypeLabel())); + } else { + // TODO + if (type == ColumnTypeCode.DIMENSION) { + RefColumn refColumn = new RefColumn( + String.valueOf(cd.getRelationship() + .getTargetTableId()), cd + .getRelationship() + .getTargetColumnId()); + retrieveConnectionForViewColumn(refColumn); + + } else { + + } + } + } } @@ -809,7 +886,47 @@ public class ChangeColumnTypePanel extends FramedPanel implements public void update(TRId trId, String columnName) { this.trId = trId; this.columnName = columnName; - loader.load(); + retrieveColumnRequested(); + } + + protected void retrieveConnectionForViewColumn(RefColumn refCol) { + Log.debug("Retrieve Connection For View Column: " + refCol); + TDGWTServiceAsync.INSTANCE.getConnection(refCol, + new AsyncCallback() { + + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Locked", + caught.getLocalizedMessage()); + } else { + if (caught instanceof TDGWTIsFinalException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Final", + caught.getLocalizedMessage()); + } else { + Log.error("load column failure:" + + caught.getLocalizedMessage()); + UtilsGXT3 + .alert("Error retrieving connection", + "Error retrieving connection column"); + } + } + } + } + + public void onSuccess(ColumnData result) { + Log.debug("Column: " + result); + connectionColumn = result; + retrieveTabularResource(result.getTrId()); + } + + }); + } protected void onChangeTypeColumn() { @@ -988,7 +1105,7 @@ public class ChangeColumnTypePanel extends FramedPanel implements Log.debug("Selected Codelist: " + tabResource); comboDimensionType.setValue(tabResource, true); - retrieveColumnData(tabResource); + retrieveColumnsForDimension(tabResource.getTrId()); } @Override @@ -1004,9 +1121,8 @@ public class ChangeColumnTypePanel extends FramedPanel implements } - protected void retrieveColumnData(TabResource tabResource) { - TDGWTServiceAsync.INSTANCE.getColumnsForDimension( - tabResource.getTrId(), + protected void retrieveColumnsForDimension(TRId trId) { + TDGWTServiceAsync.INSTANCE.getColumnsForDimension(trId, new AsyncCallback>() { @Override @@ -1048,6 +1164,93 @@ public class ChangeColumnTypePanel extends FramedPanel implements } + protected void retrieveColumnsForSelectedDimension(TRId trId) { + TDGWTServiceAsync.INSTANCE.getColumnsForDimension(trId, + new AsyncCallback>() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Locked", + caught.getLocalizedMessage()); + } else { + if (caught instanceof TDGWTIsFinalException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Final", + caught.getLocalizedMessage()); + } else { + Log.debug("Error retrieving columns: " + + caught.getLocalizedMessage()); + UtilsGXT3 + .alert("Error retrieving columns", + "Error retrieving columns on server!"); + } + } + } + } + + @Override + public void onSuccess(ArrayList result) { + comboColumnReferenceType.reset(); + storeComboColumnReferenceType.clear(); + storeComboColumnReferenceType.addAll(result); + storeComboColumnReferenceType.commitChanges(); + comboColumnReferenceTypeLabel.setVisible(true); + comboColumnReferenceType.setValue(connectionColumn, + true); + forceLayout(); + } + }); + + } + + protected void retrieveTabularResource(TRId trId) { + TDGWTServiceAsync.INSTANCE.getTabResourceInformation(trId, + new AsyncCallback() { + + @Override + public void onFailure(Throwable caught) { + if (caught instanceof TDGWTSessionExpiredException) { + eventBus.fireEvent(new SessionExpiredEvent( + SessionExpiredType.EXPIREDONSERVER)); + } else { + if (caught instanceof TDGWTIsLockedException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Locked", + caught.getLocalizedMessage()); + } else { + if (caught instanceof TDGWTIsFinalException) { + Log.error(caught.getLocalizedMessage()); + UtilsGXT3.alert("Error Final", + caught.getLocalizedMessage()); + } else { + Log.debug("Error retrieving tabular resource: " + + caught.getLocalizedMessage()); + UtilsGXT3 + .alert("Error retrieving tabular resource", + caught.getLocalizedMessage()); + } + } + } + + } + + @Override + public void onSuccess(TabResource result) { + comboDimensionType.setValue(result, true); + retrieveColumnsForSelectedDimension(result.getTrId()); + + } + + }); + + } + protected void retriveLocales() { TDGWTServiceAsync.INSTANCE .getLocales(new AsyncCallback>() {