Loading TASMAN-core/src/main/java/it/inaf/ia2/tsm/TSMUtil.java +34 −0 Original line number Diff line number Diff line Loading @@ -306,4 +306,38 @@ public class TSMUtil { return sb.toString(); } /** * Utility class for joining a collection of object properties. */ public static class StringJoiner<T> { private final Iterable<T> values; private final String separator; public StringJoiner(Iterable<T> values, String separator) { this.values = values; this.separator = separator; } public final String getString() { StringBuilder sb = new StringBuilder(); boolean first = true; for (T value : values) { if (!first) { sb.append(separator); } sb.append(getStringValue(value)); first = false; } return sb.toString(); } public String getStringValue(T value) { if (value instanceof String) { return (String) value; } return null; } } } TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java +2 −1 Original line number Diff line number Diff line Loading @@ -463,7 +463,8 @@ public class TapSchema implements EntitiesContainer<Schema>, Serializable { if (obscore) { SchemaModel ivoaSchemaModel = getIvoaSchemaModel(); broker.createIvoaSchemaStructure(ivoaSchemaModel); // ivoa schema has to be created into source database getSourceDBBroker().createIvoaSchemaStructure(ivoaSchemaModel); // Initializing ivoa schema slot in schemata maps schemas.put(ivoaSchemaModel.getName(), null); Loading TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/mysql/MySQLDBBroker.java +5 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,11 @@ public class MySQLDBBroker extends DBBrokerTemplate { if (beginIndex != -1) { int endIndex = typeWithSize.indexOf(')'); if (endIndex != -1) { try { return Integer.parseInt(typeWithSize.substring(beginIndex + 1, endIndex)); } catch (NumberFormatException e) { return null; } } } return null; Loading TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/SearchUCDDialog.java +3 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,9 @@ public class SearchUCDDialog implements Serializable { String assignResponse = SearchUCD.assign(description); if (assignResponse == null) { UCDnotFound = true; selectedUCD = null; suggestedUCD = null; suggestedUCDs.clear(); } else { selectedUCD = assignResponse; suggestedUCD = assignResponse; Loading TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/TapSchemaEditingBean.java +66 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import it.inaf.ia2.tsm.Key; import it.inaf.ia2.tsm.KeyColumn; import it.inaf.ia2.tsm.Schema; import it.inaf.ia2.tsm.Status; import it.inaf.ia2.tsm.TSMUtil; import it.inaf.ia2.tsm.Table; import it.inaf.ia2.tsm.TapSchema; import it.inaf.ia2.tsm.TapSchemaEntity; Loading Loading @@ -67,6 +68,7 @@ public class TapSchemaEditingBean implements Serializable { private EntitiesContainer currentAddingContainer; private List<AddableItem> currentAddables; private boolean addAlsoAllChildren; private VOUnitValidator voUnitValidator; @Inject Loading Loading @@ -259,6 +261,7 @@ public class TapSchemaEditingBean implements Serializable { } public void openAddablesModal(EntitiesContainer<?> currentAddingContainer) { this.addAlsoAllChildren = false; this.currentAddingContainer = currentAddingContainer; this.currentAddables = new ArrayList<>(); for (String name : currentAddingContainer.getAddableChildrenNames()) { Loading @@ -277,11 +280,30 @@ public class TapSchemaEditingBean implements Serializable { } } private void addAllChildren(TapSchemaEntity childEntity) throws SQLException { if (childEntity instanceof Schema) { Schema schema = (Schema) childEntity; for (String tableName : schema.getAddableChildrenNames()) { Table table = schema.addChild(tableName); addAllChildren(table); } } else if (childEntity instanceof Table) { Table table = (Table) childEntity; for (String column : table.getAddableChildrenNames()) { table.addChild(column); } } } public void addSelected() throws SQLException { TapSchemaEntity lastAddedEntity = null; boolean canAddChildren = isCanAddChildren(); for (AddableItem item : currentAddables) { if (item.isSelected()) { lastAddedEntity = currentAddingContainer.addChild(item.getName()); if (lastAddedEntity != null && canAddChildren) { addAllChildren(lastAddedEntity); } } } if (lastAddedEntity != null) { Loading @@ -299,6 +321,22 @@ public class TapSchemaEditingBean implements Serializable { return currentAddables; } public boolean isCanAddChildren() { if (currentAddingContainer == null) { return false; } return currentAddingContainer instanceof TapSchema || currentAddingContainer instanceof Schema; } public boolean isAddAlsoAllChildren() { return addAlsoAllChildren; } public void setAddAlsoAllChildren(boolean addAlsoAllChildren) { this.addAlsoAllChildren = addAlsoAllChildren; } public void saveUCD() { if (!FacesContext.getCurrentInstance().isValidationFailed()) { Loading Loading @@ -402,4 +440,32 @@ public class TapSchemaEditingBean implements Serializable { column.setValue("principal", value ? 1 : 0); } } public List<Key> getVisibleKeys() { List<Key> keys = new ArrayList<>(); for (Key key : tapSchema.getAllKeys()) { if (key.isVisible()) { keys.add(key); } } return keys; } public String formatFromColumns(Key key) { return (new TSMUtil.StringJoiner<KeyColumn>(key.getKeyColumns(), ", ") { @Override public String getStringValue(KeyColumn kc) { return kc.getFromColumn(); } }).getString(); } public String formatTargetColumns(Key key) { return (new TSMUtil.StringJoiner<KeyColumn>(key.getKeyColumns(), ", ") { @Override public String getStringValue(KeyColumn kc) { return kc.getTargetColumn(); } }).getString(); } } Loading
TASMAN-core/src/main/java/it/inaf/ia2/tsm/TSMUtil.java +34 −0 Original line number Diff line number Diff line Loading @@ -306,4 +306,38 @@ public class TSMUtil { return sb.toString(); } /** * Utility class for joining a collection of object properties. */ public static class StringJoiner<T> { private final Iterable<T> values; private final String separator; public StringJoiner(Iterable<T> values, String separator) { this.values = values; this.separator = separator; } public final String getString() { StringBuilder sb = new StringBuilder(); boolean first = true; for (T value : values) { if (!first) { sb.append(separator); } sb.append(getStringValue(value)); first = false; } return sb.toString(); } public String getStringValue(T value) { if (value instanceof String) { return (String) value; } return null; } } }
TASMAN-core/src/main/java/it/inaf/ia2/tsm/TapSchema.java +2 −1 Original line number Diff line number Diff line Loading @@ -463,7 +463,8 @@ public class TapSchema implements EntitiesContainer<Schema>, Serializable { if (obscore) { SchemaModel ivoaSchemaModel = getIvoaSchemaModel(); broker.createIvoaSchemaStructure(ivoaSchemaModel); // ivoa schema has to be created into source database getSourceDBBroker().createIvoaSchemaStructure(ivoaSchemaModel); // Initializing ivoa schema slot in schemata maps schemas.put(ivoaSchemaModel.getName(), null); Loading
TASMAN-core/src/main/java/it/inaf/ia2/tsm/datalayer/mysql/MySQLDBBroker.java +5 −1 Original line number Diff line number Diff line Loading @@ -74,7 +74,11 @@ public class MySQLDBBroker extends DBBrokerTemplate { if (beginIndex != -1) { int endIndex = typeWithSize.indexOf(')'); if (endIndex != -1) { try { return Integer.parseInt(typeWithSize.substring(beginIndex + 1, endIndex)); } catch (NumberFormatException e) { return null; } } } return null; Loading
TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/SearchUCDDialog.java +3 −0 Original line number Diff line number Diff line Loading @@ -107,6 +107,9 @@ public class SearchUCDDialog implements Serializable { String assignResponse = SearchUCD.assign(description); if (assignResponse == null) { UCDnotFound = true; selectedUCD = null; suggestedUCD = null; suggestedUCDs.clear(); } else { selectedUCD = assignResponse; suggestedUCD = assignResponse; Loading
TASMAN-webapp/src/main/java/it/inaf/ia2/tsm/webapp/TapSchemaEditingBean.java +66 −0 Original line number Diff line number Diff line Loading @@ -30,6 +30,7 @@ import it.inaf.ia2.tsm.Key; import it.inaf.ia2.tsm.KeyColumn; import it.inaf.ia2.tsm.Schema; import it.inaf.ia2.tsm.Status; import it.inaf.ia2.tsm.TSMUtil; import it.inaf.ia2.tsm.Table; import it.inaf.ia2.tsm.TapSchema; import it.inaf.ia2.tsm.TapSchemaEntity; Loading Loading @@ -67,6 +68,7 @@ public class TapSchemaEditingBean implements Serializable { private EntitiesContainer currentAddingContainer; private List<AddableItem> currentAddables; private boolean addAlsoAllChildren; private VOUnitValidator voUnitValidator; @Inject Loading Loading @@ -259,6 +261,7 @@ public class TapSchemaEditingBean implements Serializable { } public void openAddablesModal(EntitiesContainer<?> currentAddingContainer) { this.addAlsoAllChildren = false; this.currentAddingContainer = currentAddingContainer; this.currentAddables = new ArrayList<>(); for (String name : currentAddingContainer.getAddableChildrenNames()) { Loading @@ -277,11 +280,30 @@ public class TapSchemaEditingBean implements Serializable { } } private void addAllChildren(TapSchemaEntity childEntity) throws SQLException { if (childEntity instanceof Schema) { Schema schema = (Schema) childEntity; for (String tableName : schema.getAddableChildrenNames()) { Table table = schema.addChild(tableName); addAllChildren(table); } } else if (childEntity instanceof Table) { Table table = (Table) childEntity; for (String column : table.getAddableChildrenNames()) { table.addChild(column); } } } public void addSelected() throws SQLException { TapSchemaEntity lastAddedEntity = null; boolean canAddChildren = isCanAddChildren(); for (AddableItem item : currentAddables) { if (item.isSelected()) { lastAddedEntity = currentAddingContainer.addChild(item.getName()); if (lastAddedEntity != null && canAddChildren) { addAllChildren(lastAddedEntity); } } } if (lastAddedEntity != null) { Loading @@ -299,6 +321,22 @@ public class TapSchemaEditingBean implements Serializable { return currentAddables; } public boolean isCanAddChildren() { if (currentAddingContainer == null) { return false; } return currentAddingContainer instanceof TapSchema || currentAddingContainer instanceof Schema; } public boolean isAddAlsoAllChildren() { return addAlsoAllChildren; } public void setAddAlsoAllChildren(boolean addAlsoAllChildren) { this.addAlsoAllChildren = addAlsoAllChildren; } public void saveUCD() { if (!FacesContext.getCurrentInstance().isValidationFailed()) { Loading Loading @@ -402,4 +440,32 @@ public class TapSchemaEditingBean implements Serializable { column.setValue("principal", value ? 1 : 0); } } public List<Key> getVisibleKeys() { List<Key> keys = new ArrayList<>(); for (Key key : tapSchema.getAllKeys()) { if (key.isVisible()) { keys.add(key); } } return keys; } public String formatFromColumns(Key key) { return (new TSMUtil.StringJoiner<KeyColumn>(key.getKeyColumns(), ", ") { @Override public String getStringValue(KeyColumn kc) { return kc.getFromColumn(); } }).getString(); } public String formatTargetColumns(Key key) { return (new TSMUtil.StringJoiner<KeyColumn>(key.getKeyColumns(), ", ") { @Override public String getStringValue(KeyColumn kc) { return kc.getTargetColumn(); } }).getString(); } }