From 9a783add7ffbea12b303d6c6c275b914b633270c Mon Sep 17 00:00:00 2001 From: Giancarlo Panichi Date: Thu, 29 May 2014 10:17:38 +0000 Subject: [PATCH] Minor Update git-svn-id: https://svn.d4science.research-infrastructures.eu/gcube/trunk/portlets/user/tabular-data-gwt-service@96238 82a268e6-3cf1-43bd-a215-b396298e98cf --- .../gwtservice/server/TDGWTServiceImpl.java | 30 +++-- .../server/trservice/ColumnTypeCodeMap.java | 46 +++++++ .../ExtractCodelistOperationMap.java | 114 ++++++++++++++++++ .../user/td/gwtservice/shared/Constants.java | 93 +++++++------- 4 files changed, 230 insertions(+), 53 deletions(-) create mode 100644 src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ColumnTypeCodeMap.java create mode 100644 src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ExtractCodelistOperationMap.java diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TDGWTServiceImpl.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TDGWTServiceImpl.java index c441ecb..f03e0ed 100644 --- a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TDGWTServiceImpl.java +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/TDGWTServiceImpl.java @@ -102,6 +102,7 @@ import org.gcube.portlets.user.td.gwtservice.server.file.FileUtil; import org.gcube.portlets.user.td.gwtservice.server.storage.FilesStorage; import org.gcube.portlets.user.td.gwtservice.server.trservice.ColumnDataTypeMap; import org.gcube.portlets.user.td.gwtservice.server.trservice.ExpressionGenerator; +import org.gcube.portlets.user.td.gwtservice.server.trservice.ExtractCodelistOperationMap; import org.gcube.portlets.user.td.gwtservice.server.trservice.ExtractReferences; import org.gcube.portlets.user.td.gwtservice.server.trservice.OperationDefinitionMap; import org.gcube.portlets.user.td.gwtservice.server.trservice.QueryService; @@ -3950,7 +3951,22 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements OperationExecution invocation = null; logger.debug(extractCodelistSession.toString()); + OperationDefinition operationDefinition; + + Map map = new HashMap(); + ExtractCodelistOperationMap extractMap = new ExtractCodelistOperationMap(); + ArrayList> compositeValue = extractMap + .genMap(extractCodelistSession); + + operationDefinition = OperationDefinitionMap.map( + OperationsId.ExtractCodelist.toString(), service); + + map.put(Constants.PARAMETER_EXTRACT_CODELIST_COMPOSITE, compositeValue); + + invocation = new OperationExecution( + operationDefinition.getOperationId(), map); + return invocation; } @@ -7125,22 +7141,16 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements HttpSession session = this.getThreadLocalRequest().getSession(); SessionUtil.setExtractCodelistSession(session, extractCodelistSession); ASLSession aslSession = SessionUtil.getAslSession(session); - logger.debug("StartExtractCodelist: " + extractCodelistSession); - AuthorizationProvider.instance.set(new AuthorizationToken( - aslSession.getUsername())); - TabularDataService service = TabularDataServiceFactory.getService(); - if (extractCodelistSession == null) { logger.error("ExtractCodelistSession is null"); throw new TDGWTServiceException( "Error in extract codelist: ExtractCodelistSession is null"); } - if (extractCodelistSession.getTabResource() == null) { - logger.error("TabResource is null"); - throw new TDGWTServiceException( - "Error in extract codelist, TabResource is null"); - } + logger.debug("StartExtractCodelist: " + extractCodelistSession); + AuthorizationProvider.instance.set(new AuthorizationToken( + aslSession.getUsername())); + TabularDataService service = TabularDataServiceFactory.getService(); OperationExecution invocation = retrieveOperationExecution(service, extractCodelistSession); diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ColumnTypeCodeMap.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ColumnTypeCodeMap.java new file mode 100644 index 0000000..cf7bf92 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ColumnTypeCodeMap.java @@ -0,0 +1,46 @@ +package org.gcube.portlets.user.td.gwtservice.server.trservice; + +import org.gcube.data.analysis.tabulardata.model.column.ColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.AnnotationColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.AttributeColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.CodeColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.CodeDescriptionColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.CodeNameColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.DimensionColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.MeasureColumnType; +import org.gcube.data.analysis.tabulardata.model.column.type.TimeDimensionColumnType; +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode; + + +/** + * + * @author "Giancarlo Panichi" + * + */ +public class ColumnTypeCodeMap { + + public static ColumnType getColumnType(ColumnTypeCode columnTypeCode){ + + switch(columnTypeCode){ + case ANNOTATION: + return new AnnotationColumnType(); + case ATTRIBUTE: + return new AttributeColumnType(); + case CODE: + return new CodeColumnType(); + case CODEDESCRIPTION: + return new CodeDescriptionColumnType(); + case CODENAME: + return new CodeNameColumnType(); + case DIMENSION: + return new DimensionColumnType(); + case MEASURE: + return new MeasureColumnType(); + case TIMEDIMENSION: + return new TimeDimensionColumnType(); + default: + return null; + + } + } +} diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ExtractCodelistOperationMap.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ExtractCodelistOperationMap.java new file mode 100644 index 0000000..eb96799 --- /dev/null +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/server/trservice/ExtractCodelistOperationMap.java @@ -0,0 +1,114 @@ +package org.gcube.portlets.user.td.gwtservice.server.trservice; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import org.gcube.data.analysis.tabulardata.model.column.ColumnLocalId; +import org.gcube.data.analysis.tabulardata.model.column.ColumnReference; +import org.gcube.data.analysis.tabulardata.model.column.ColumnType; +import org.gcube.data.analysis.tabulardata.model.datatype.value.TDText; +import org.gcube.data.analysis.tabulardata.model.metadata.column.DataLocaleMetadata; +import org.gcube.data.analysis.tabulardata.model.table.TableId; +import org.gcube.portlets.user.td.gwtservice.shared.Constants; +import org.gcube.portlets.user.td.gwtservice.shared.extract.ExtractCodelistSession; +import org.gcube.portlets.user.td.gwtservice.shared.extract.ExtractCodelistTargetColumn; +import org.gcube.portlets.user.td.gwtservice.shared.tr.ColumnData; +import org.gcube.portlets.user.td.gwtservice.shared.tr.DefNewColumn; +import org.gcube.portlets.user.td.widgetcommonevent.shared.TRId; +import org.gcube.portlets.user.td.widgetcommonevent.shared.tr.column.ColumnTypeCode; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * + * @author "Giancarlo Panichi" + * + */ +public class ExtractCodelistOperationMap { + protected static Logger logger = LoggerFactory + .getLogger(ExtractCodelistOperationMap.class); + + public ExtractCodelistOperationMap() { + + } + + public ArrayList> genMap( + ExtractCodelistSession extractCodelistSession) { + logger.debug(extractCodelistSession.toString()); + ArrayList> composit = new ArrayList>(); + + TRId trId = extractCodelistSession.getTrId(); + TableId tableId; + if (trId.isViewTable()) { + tableId = new TableId(new Long(trId.getReferenceTargetTableId())); + } else { + tableId = new TableId(new Long(trId.getTableId())); + } + + ArrayList targetColumns = extractCodelistSession + .getTargetColumns(); + for (ExtractCodelistTargetColumn target : targetColumns) { + HashMap mapCol = new HashMap(); + + ColumnData sourceColumn = target.getSourceColumn(); + ColumnLocalId columnSourceId = new ColumnLocalId( + sourceColumn.getColumnId()); + ColumnReference source = new ColumnReference(tableId, + columnSourceId); + if (target.isNewColumn()) { + HashMap column_definition = new HashMap(); + DefNewColumn defNewColumn = target.getDefColumn(); + ColumnTypeCode columnTypeCode = defNewColumn.getColumnType(); + ColumnType columnType = ColumnTypeCodeMap + .getColumnType(columnTypeCode); + column_definition.put( + Constants.PARAMETER_EXTRACT_CODELIST_COLUMN_TYPE, + columnType); + + if (columnTypeCode == ColumnTypeCode.CODENAME) { + DataLocaleMetadata dataLocaleMetadata = new DataLocaleMetadata( + defNewColumn.getLocaleName()); + column_definition.put( + Constants.PARAMETER_EXTRACT_CODELIST_METADATA, + dataLocaleMetadata); + } + + TDText defaultValue = new TDText(defNewColumn.getDefaultValue()); + column_definition.put( + Constants.PARAMETER_EXTRACT_CODELIST_DEFAULT, + defaultValue); + + mapCol.put(Constants.PARAMETER_EXTRACT_CODELIST_SOURCE, source); + mapCol.put( + Constants.PARAMETER_EXTRACT_CODELIST_COLUMN_DEFINITION, + column_definition); + composit.add(mapCol); + + } else { + ColumnData targetColumn = target.getTargetColumn(); + TRId codelistTRId = target.getCodelist(); + TableId codelistTableId; + if (codelistTRId.isViewTable()) { + codelistTableId = new TableId(new Long( + codelistTRId.getReferenceTargetTableId())); + } else { + codelistTableId = new TableId(new Long( + codelistTRId.getTableId())); + } + ColumnLocalId targetCodeColumnId = new ColumnLocalId( + targetColumn.getColumnId()); + ColumnReference targetCodeColumn = new ColumnReference( + codelistTableId, targetCodeColumnId); + mapCol.put(Constants.PARAMETER_EXTRACT_CODELIST_SOURCE, source); + mapCol.put( + Constants.PARAMETER_EXTRACT_CODELIST_TARGET_CODE_COLUMN, + targetCodeColumn); + composit.add(mapCol); + } + } + + logger.debug(composit.toString()); + return composit; + } +} diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/shared/Constants.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/shared/Constants.java index e114a09..f299e6e 100644 --- a/src/main/java/org/gcube/portlets/user/td/gwtservice/shared/Constants.java +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/shared/Constants.java @@ -3,61 +3,68 @@ */ package org.gcube.portlets.user.td.gwtservice.shared; - /** * - * @author "Giancarlo Panichi" - * g.panichi@isti.cnr.it - * + * @author "Giancarlo Panichi" g.panichi@isti.cnr.it + * */ public class Constants { - public final static String VERSION = "2.1.0"; + public final static String VERSION = "2.1.0"; public final static String DEFAULT_USER = "test.user"; public final static String DEFAULT_SCOPE = "/gcube/devsec"; public static final String PARAMETER_ENCODING = "encoding"; public static final String PARAMETER_HASHEADER = "hasHeader"; - public static final String PARAMETER_FIELDMASK ="fieldMask"; - public static final String PARAMETER_SKIPERROR ="skipError"; + public static final String PARAMETER_FIELDMASK = "fieldMask"; + public static final String PARAMETER_SKIPERROR = "skipError"; public static final String PARAMETER_SEPARATOR = "separator"; public static final String PARAMETER_COLUMNS = "columns"; public static final String PARAMETER_URL = "url"; - - public static final String PARAMETER_REGISTRYBASEURL ="registryBaseUrl"; - public static final String PARAMETER_AGENCY ="agency"; - public static final String PARAMETER_ID ="id"; - public static final String PARAMETER_VERSION ="version"; - - public static final String PARAMETER_DATA_TYPE="dataType"; - public static final String PARAMETER_TARGET_DATA_TYPE="targetDataType"; - public static final String PARAMETER_ADDITIONAL_META="additionalMeta"; - - public static final String PARAMETER_REPLACE_ID_COLUMN_VALUE="value"; - public static final String PARAMETER_REPLACE_ID_COLUMN_ID="id"; - public static final String PARAMETER_REPLACE_BY_EXPRESSION_COLUMN_CONDITION="condition"; - public static final String PARAMETER_REPLACE_BY_EXPRESSION_COLUMN_VALUE="value"; - - public static final String PARAMETER_ADD_ROW_COMPOSITE_FIELD="field"; - public static final String PARAMETER_ADD_ROW_COMPOSITE_TOSETVALUE="toSetValue"; - public static final String PARAMETER_ADD_ROW_COMPOSITE="mapping"; - - public static final String PARAMETER_EDIT_ROW_CONDITION="condition"; - - public static final String NAME_PARAMETER_ID="NAME_PARAMETER_ID"; - public static final String PARAMETER_KEY="key"; - public static final String PARAMETER_REFERENCE_COLUMN="refColumn"; - - public static final String PARAMETER_PERIOD_FORMAT="periodFormat"; - public static final String PARAMETER_EXPRESSION="expression"; - - public static final String PARAMETER_TABLE_TYPE="tableType"; - - public static final String PARAMETER_ROW_ID="rowId"; - - public static final String REQUEST_PROPERTIES_REFCOLUMN="RefColumn"; - public static final String REQUEST_PROPERTIES_COLUMNID="ColumnId"; - public static final String REQUEST_PROPERTIES_TASKID="TaskId"; - + public static final String PARAMETER_REGISTRYBASEURL = "registryBaseUrl"; + public static final String PARAMETER_AGENCY = "agency"; + public static final String PARAMETER_ID = "id"; + public static final String PARAMETER_VERSION = "version"; + + public static final String PARAMETER_DATA_TYPE = "dataType"; + public static final String PARAMETER_TARGET_DATA_TYPE = "targetDataType"; + public static final String PARAMETER_ADDITIONAL_META = "additionalMeta"; + + public static final String PARAMETER_REPLACE_ID_COLUMN_VALUE = "value"; + public static final String PARAMETER_REPLACE_ID_COLUMN_ID = "id"; + + public static final String PARAMETER_REPLACE_BY_EXPRESSION_COLUMN_CONDITION = "condition"; + public static final String PARAMETER_REPLACE_BY_EXPRESSION_COLUMN_VALUE = "value"; + + public static final String PARAMETER_ADD_ROW_COMPOSITE_FIELD = "field"; + public static final String PARAMETER_ADD_ROW_COMPOSITE_TOSETVALUE = "toSetValue"; + public static final String PARAMETER_ADD_ROW_COMPOSITE = "mapping"; + + public static final String PARAMETER_EXTRACT_CODELIST_SOURCE = "source"; + public static final String PARAMETER_EXTRACT_CODELIST_TARGET_CODE_COLUMN = "target_code_column"; + public static final String PARAMETER_EXTRACT_CODELIST_COLUMN_DEFINITION = "column_definition"; + public static final String PARAMETER_EXTRACT_CODELIST_COLUMN_TYPE = "column_type"; + public static final String PARAMETER_EXTRACT_CODELIST_METADATA = "metadata"; + public static final String PARAMETER_EXTRACT_CODELIST_DEFAULT = "default"; + public static final String PARAMETER_EXTRACT_CODELIST_COMPOSITE = "mapping"; + + public static final String PARAMETER_EDIT_ROW_CONDITION = "condition"; + + public static final String NAME_PARAMETER_ID = "NAME_PARAMETER_ID"; + public static final String PARAMETER_KEY = "key"; + public static final String PARAMETER_REFERENCE_COLUMN = "refColumn"; + + public static final String PARAMETER_PERIOD_FORMAT = "periodFormat"; + public static final String PARAMETER_EXPRESSION = "expression"; + + public static final String PARAMETER_TABLE_TYPE = "tableType"; + + public static final String PARAMETER_ROW_ID = "rowId"; + + public static final String REQUEST_PROPERTIES_REFCOLUMN = "RefColumn"; + public static final String REQUEST_PROPERTIES_COLUMNID = "ColumnId"; + public static final String REQUEST_PROPERTIES_TASKID = "TaskId"; + }