diff --git a/TASMAN-core/pom.xml b/TASMAN-core/pom.xml index bc18744a27195d0e85b7d28d65af2eae9c9ae5a6..04bee63fc3be504d488409c1d0ca2eaad1c05521 100644 --- a/TASMAN-core/pom.xml +++ b/TASMAN-core/pom.xml @@ -3,7 +3,7 @@ <modelVersion>4.0.0</modelVersion> <groupId>it.inaf.ia2.tap</groupId> <artifactId>tasman-core</artifactId> - <version>1.3.0</version> + <version>1.3.1</version> <packaging>jar</packaging> <name>tasman-core</name> <properties> diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java index fb8388d11807b5c4d343757fdf813050e508c509..ed0d8c409000b4f9b4685ec5f7ab361322976dc7 100644 --- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java +++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/Table.java @@ -71,6 +71,23 @@ public class Table extends ChildEntity<Schema> implements EntitiesContainer<Colu return null; } + /** + * Special behavior for retro-compatibility with oldest TAP_SCHEMA versions + * in which the indexed column was represented using 1 and 0 instead boolean + * values. + */ + private void fixIndexedMetadataValues() { + boolean useIntForBool = tapSchema.getTapSchemaModel() + .getTable(TapSchema.COLUMNS_TABLE) + .get(Column.INDEXED_KEY).getJavaType() == Integer.class; + if (useIntForBool) { + for (Map<String, Object> cm : columnsMetadata.values()) { + boolean indexed = (boolean) cm.get(Column.INDEXED_KEY); + cm.put(Column.INDEXED_KEY, indexed ? 1 : 0); + } + } + } + protected Table(TapSchema tapSchema, Schema schema, String tableSimpleName) throws SQLException { super(tapSchema, tapSchema.getTableModel(TapSchema.TABLES_TABLE), schema.getTableMetadata(tableSimpleName)); @@ -82,6 +99,7 @@ public class Table extends ChildEntity<Schema> implements EntitiesContainer<Colu DBBroker broker = tapSchema.getDBBroker(schema.getName()); tableTableModel = getTableTableModel(); columnsMetadata = broker.getAllColumnsMetadata(schema.getName(), tableSimpleName, tableTableModel, tapSchema.getDataTypeMode()); + fixIndexedMetadataValues(); for (Map.Entry<String, Map<String, Object>> entry : columnsMetadata.entrySet()) { // Adding table names to columns metadata diff --git a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchemaLoader.java b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchemaLoader.java index 2f75ae85db229fc7c4456afd7e8db690d5fa4183..4020c0f2055cb47537e36f91fc53d2c2e6ec42c7 100644 --- a/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchemaLoader.java +++ b/TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchemaLoader.java @@ -162,11 +162,22 @@ public class TapSchemaLoader { Schema parentSchema = column.getParent().getParent(); if (parentSchema.getName().equals(tapSchema.getName())) { return equalsOneOf(key, Column.STD_KEY, Column.PRINCIPAL_KEY); - } else if (parentSchema.getName().equals(tapSchema.getIvoaSchemaModel().getName())) { - return equalsOneOf(key, Column.STD_KEY, Column.PRINCIPAL_KEY, - Column.UCD_KEY, Column.UNIT_KEY, Column.UTYPE_KEY, Column.DATATYPE_KEY); + } else { + SchemaModel ivoaSchemaModel = tapSchema.getIvoaSchemaModel(); + if (ivoaSchemaModel != null + && parentSchema.getName().equals(ivoaSchemaModel.getName())) { + return equalsOneOf(key, Column.STD_KEY, Column.PRINCIPAL_KEY, + Column.UCD_KEY, Column.UNIT_KEY, Column.UTYPE_KEY, Column.DATATYPE_KEY); + } + return false; } - return false; + } + + private Object getCompatibleIntOrBoolValue(String key, boolean value) { + if (tapSchema.getTapSchemaModel().getTable(COLUMNS_TABLE).get(key).getJavaType() == Integer.class) { + return value ? 1 : 0; + } + return value; } private Object getCorrectValue(Column column, String key) { @@ -187,9 +198,9 @@ public class TapSchemaLoader { ColumnModel columnModel = schemaModel.getTable(column.getParent().getName()).get(column.getName()); switch (key) { case Column.STD_KEY: - return columnModel.isStandard(); + return getCompatibleIntOrBoolValue(Column.STD_KEY, columnModel.isStandard()); case Column.PRINCIPAL_KEY: - return columnModel.isPrincipal(); + return getCompatibleIntOrBoolValue(Column.PRINCIPAL_KEY, columnModel.isPrincipal()); case Column.UCD_KEY: return columnModel.getUcd(); case Column.UNIT_KEY: diff --git a/TASMAN-webapp/pom.xml b/TASMAN-webapp/pom.xml index 74f71028f149665f3052c1a594d641e34a23db99..8e5655763549f0734b4bef532636605c500fb563 100644 --- a/TASMAN-webapp/pom.xml +++ b/TASMAN-webapp/pom.xml @@ -4,7 +4,7 @@ <groupId>it.inaf.ia2.tap</groupId> <artifactId>tasman-webapp</artifactId> - <version>1.3.0</version> + <version>1.3.1</version> <packaging>war</packaging> <name>tasman-webapp</name> @@ -107,7 +107,7 @@ <dependency> <groupId>it.inaf.ia2.tap</groupId> <artifactId>tasman-core</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> <exclusions> <!-- exclusion due to tomcat-jdbc dependency conflicting with Jetty --> <exclusion> @@ -124,7 +124,7 @@ <dependency> <groupId>it.inaf.ia2.tap</groupId> <artifactId>tasman-core</artifactId> - <version>1.2.0</version> + <version>1.3.1</version> </dependency> <dependency> <groupId>ari.ucidy</groupId>