diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTService.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTService.java index aa4d41a..d68b09d 100644 --- a/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTService.java +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTService.java @@ -556,7 +556,20 @@ public interface TDGWTService extends RemoteService { */ public ArrayList getColumnWithViewColumnIncluded(TRId trId) throws TDGWTServiceException; - + + /** + * Retrieves the list of columns in the table provided by trId + * only view columns in relationship are included. + * TimeDimensionColumn and DimensionColumn are not included. + * + * + * @param trId + * @return + * @throws TDGWTServiceException + */ + public ArrayList getColumnWithOnlyViewColumnInRel(TRId trId) + throws TDGWTServiceException; + /** * Retrieves the list of columns in the table provided by trId for * statistical diff --git a/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTServiceAsync.java b/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTServiceAsync.java index b18d749..c9dc914 100644 --- a/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTServiceAsync.java +++ b/src/main/java/org/gcube/portlets/user/td/gwtservice/client/rpc/TDGWTServiceAsync.java @@ -168,7 +168,10 @@ public interface TDGWTServiceAsync { void getColumnWithViewColumnIncluded(TRId trId, AsyncCallback> callback); - + + void getColumnWithOnlyViewColumnInRel(TRId trId, + AsyncCallback> callback); + void getColumnsForStatistical(TRId trId, AsyncCallback> callback); 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 810dcc0..33b4f80 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 @@ -22,7 +22,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Set; import javax.servlet.ServletException; @@ -335,8 +334,8 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements * URL.setURLStreamHandlerFactory(confStreamHandlerFactory); * logger.debug("Activated SMP Handler"); */ - Properties props = System.getProperties(); - logger.debug("System Properties: " + props); + /*Properties props = System.getProperties(); + logger.debug("System Properties: " + props);*/ } @@ -1452,6 +1451,7 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements * * {@inheritDoc} */ + @Override public ArrayList getColumnWithViewColumnIncluded(TRId trId) throws TDGWTServiceException { try { @@ -1565,6 +1565,169 @@ public class TDGWTServiceImpl extends RemoteServiceServlet implements + e.getLocalizedMessage()); } } + + + /** + * Returns ArrayList other than IdColumnType, + * ValidationColumnType, DimensionColumnType and TimeDimensionColumnType + * + * + * {@inheritDoc} + */ + + @Override + public ArrayList getColumnWithOnlyViewColumnInRel(TRId trId) + throws TDGWTServiceException { + try { + HttpSession session = this.getThreadLocalRequest().getSession(); + ASLSession aslSession = SessionUtil.getAslSession(session); + + AuthorizationProvider.instance.set(new AuthorizationToken( + aslSession.getUsername(), aslSession.getScope())); + TabularDataService service = TabularDataServiceFactory.getService(); + + logger.debug("getColumns():" + trId.toString()); + + Table table = service.getTable(new TableId(Long.valueOf(trId + .getTableId()))); + + ArrayList columns = new ArrayList(); + ArrayList dimensions = new ArrayList(); + + + List cols = table.getColumns(); + int i = 0; + for (Column c : cols) { + if (c.getColumnType() instanceof IdColumnType + || c.getColumnType() instanceof ValidationColumnType) { + + } else { + ColumnData cData = new ColumnData(); + cData.setId(Integer.toString(i)); + cData.setColumnId(c.getLocalId().getValue()); + cData.setName(c.getName()); + cData.setTypeCode(c.getColumnType().getCode()); + cData.setTypeName(c.getColumnType().getName()); + cData.setDataTypeName(c.getDataType().getName()); + + + + PeriodTypeMetadata periodTypeMetadata = null; + if (c.contains(PeriodTypeMetadata.class)) { + periodTypeMetadata = c + .getMetadata(PeriodTypeMetadata.class); + PeriodType periodType = periodTypeMetadata.getType(); + cData.setPeriodDataType(PeriodTypeMap.map(periodType)); + } + + ColumnRelationship rel = c.getRelationship(); + if (rel != null) { + RelationshipData relData = retrieveRelationship( + service, table, c, periodTypeMetadata, rel); + cData.setRelationship(relData); + + } + + NamesMetadata labelsMetadata = null; + if (c.contains(NamesMetadata.class)) { + labelsMetadata = c.getMetadata(NamesMetadata.class); + } + + if (labelsMetadata == null) { + cData.setLabel("nolabel"); + logger.debug("LabelsMetadata no labels"); + } else { + LocalizedText cl = null; + cl = labelsMetadata.getTextWithLocale("en"); + if (cl == null) { + cData.setLabel("nolabel"); + logger.debug("ColumnLabel no label in en"); + } else { + if (cl.getValue() == null + || cl.getValue().isEmpty()) { + cData.setLabel("nolabel"); + logger.debug("ColumnLabel no label in en"); + } else { + cData.setLabel(cl.getValue()); + logger.debug("Column Set Label: " + + cl.getValue()); + } + } + } + + DataLocaleMetadata dataLocaleMetadata = null; + if (c.contains(DataLocaleMetadata.class)) { + dataLocaleMetadata = c + .getMetadata(DataLocaleMetadata.class); + cData.setLocale(dataLocaleMetadata.getLocale()); + } + + if (c.contains(ViewColumnMetadata.class)) { + ColumnViewData columnViewData = retrieveColumnViewData( + service, table, c, periodTypeMetadata); + cData.setColumnViewData(columnViewData); + cData.setViewColumn(true); + } else { + cData.setViewColumn(false); + } + + cData.setTrId(trId); + + if(cData.getTypeCode().compareTo(ColumnTypeCode.DIMENSION.toString())==0 + || cData.getTypeCode().compareTo(ColumnTypeCode.TIMEDIMENSION.toString())==0){ + dimensions.add(cData); + } + + columns.add(cData); + i++; + + } + + } + + + ArrayList removable = new ArrayList(); + for (int k = 0; k < columns.size(); k++) { + ColumnData col=columns.get(k); + if (col.getColumnId() != null + && col.isViewColumn()){ + ColumnViewData colViewData=col.getColumnViewData(); + String sourceTableDimensionColumnId=colViewData.getSourceTableDimensionColumnId(); + + for (int j = 0; j < dimensions.size(); j++) { + ColumnData dim=dimensions.get(j); + if(dim.getColumnId().compareTo(sourceTableDimensionColumnId)==0){ + RelationshipData rel = dim.getRelationship(); + if(rel!=null){ + String cId = rel.getTargetColumnId(); + if(cId==null || cId.compareTo(col.getColumnId())!=0){ + removable.add(col); + } + } else { + removable.add(col); + } + break; + } + } + } + } + columns.removeAll(removable); + columns.removeAll(dimensions); + return columns; + + } catch (TDGWTServiceException e) { + throw e; + } catch (SecurityException e) { + e.printStackTrace(); + throw new TDGWTServiceException(SECURITY_EXCEPTION_RIGHTS); + } catch (Throwable e) { + logger.error( + "Error retrieving Columns: " + e.getLocalizedMessage(), e); + throw new TDGWTServiceException("Error retrieving Columns: " + + e.getLocalizedMessage()); + } + } + /** * Returns ArrayList other than IdColumnType,