Commit 480e5518 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Added modal for keys editing, various improvements and fixes

parent cda98f33
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -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;
        }
    }
}
+2 −1
Original line number Diff line number Diff line
@@ -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);

+5 −1
Original line number Diff line number Diff line
@@ -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;
+3 −0
Original line number Diff line number Diff line
@@ -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;
+66 −0
Original line number Diff line number Diff line
@@ -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;
@@ -67,6 +68,7 @@ public class TapSchemaEditingBean implements Serializable {

    private EntitiesContainer currentAddingContainer;
    private List<AddableItem> currentAddables;
    private boolean addAlsoAllChildren;
    private VOUnitValidator voUnitValidator;

    @Inject
@@ -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()) {
@@ -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) {
@@ -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()) {

@@ -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