Loading TapSchemaManagerWebApp/pom.xml +7 −2 Original line number Original line Diff line number Diff line Loading @@ -4,7 +4,7 @@ <groupId>it.inaf.ia2.tap</groupId> <groupId>it.inaf.ia2.tap</groupId> <artifactId>TapSchemaManagerWebApp</artifactId> <artifactId>TapSchemaManagerWebApp</artifactId> <version>1.0.1</version> <version>1.0.2</version> <packaging>war</packaging> <packaging>war</packaging> <name>TapSchemaManagerWebApp</name> <name>TapSchemaManagerWebApp</name> Loading Loading @@ -87,7 +87,7 @@ <dependency> <dependency> <groupId>it.inaf.ia2.tap</groupId> <groupId>it.inaf.ia2.tap</groupId> <artifactId>TapSchemaManagerAPI</artifactId> <artifactId>TapSchemaManagerAPI</artifactId> <version>1.0.1</version> <version>1.0.2</version> </dependency> </dependency> <dependency> <dependency> <groupId>ari.ucd</groupId> <groupId>ari.ucd</groupId> Loading @@ -100,6 +100,11 @@ <version>7.0</version> <version>7.0</version> <scope>provided</scope> <scope>provided</scope> </dependency> </dependency> <dependency> <groupId>uk.me.nxg</groupId> <artifactId>unity</artifactId> <version>1.0</version> </dependency> <dependency> <dependency> <groupId>mysql</groupId> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId> Loading TapSchemaManagerWebApp/src/main/java/it/inaf/ia2/tsm/webapp/TapSchemaEditingBean.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -72,6 +72,7 @@ public class TapSchemaEditingBean implements Serializable { private EntitiesContainer currentAddingContainer; private EntitiesContainer currentAddingContainer; private List<AddableItem> currentAddables; private List<AddableItem> currentAddables; private VOUnitValidator voUnitValidator; @Inject @Inject private SearchUCDDialog searchUCDDialog; private SearchUCDDialog searchUCDDialog; Loading @@ -88,6 +89,10 @@ public class TapSchemaEditingBean implements Serializable { return selectedColumn; return selectedColumn; } } public VOUnitValidator getVoUnitValidator() { return voUnitValidator; } public void setSelectedSchema(Schema selectedSchema) { public void setSelectedSchema(Schema selectedSchema) { this.selectedSchema = selectedSchema; this.selectedSchema = selectedSchema; if (selectedSchema == null) { if (selectedSchema == null) { Loading Loading @@ -118,6 +123,7 @@ public class TapSchemaEditingBean implements Serializable { public void setSelectedColumn(Column selectedColumn) { public void setSelectedColumn(Column selectedColumn) { this.selectedColumn = selectedColumn; this.selectedColumn = selectedColumn; selectedColumnChanged(); } } public UpdateOperations getUpdateOperations() { public UpdateOperations getUpdateOperations() { Loading Loading @@ -218,6 +224,15 @@ public class TapSchemaEditingBean implements Serializable { } } } } } } selectedColumnChanged(); } private void selectedColumnChanged() { if (selectedColumn == null) { voUnitValidator = new VOUnitValidator(null); } else { voUnitValidator = new VOUnitValidator(selectedColumn.getUnit()); } } } public void setTapSchema(TapSchema tapSchema) { public void setTapSchema(TapSchema tapSchema) { Loading Loading @@ -328,6 +343,9 @@ public class TapSchemaEditingBean implements Serializable { public void textInputChanged(TapSchemaEntity entity, String key) { public void textInputChanged(TapSchemaEntity entity, String key) { final boolean isChanged = entity.isChanged(key); final boolean isChanged = entity.isChanged(key); if (key.equals("unit")) { voUnitValidator = new VOUnitValidator(entity.getValue(key, String.class)); } CustomPartialResponseWriter.getCurrentInstance().addCustomJSUpdate(new JSUpdateHandler() { CustomPartialResponseWriter.getCurrentInstance().addCustomJSUpdate(new JSUpdateHandler() { @Override @Override Loading TapSchemaManagerWebApp/src/main/java/it/inaf/ia2/tsm/webapp/VOUnitValidator.java 0 → 100644 +89 −0 Original line number Original line Diff line number Diff line /* * _____________________________________________________________________________ * * INAF - OATS National Institute for Astrophysics - Astronomical Observatory of * Trieste INAF - IA2 Italian Center for Astronomical Archives * _____________________________________________________________________________ * * Copyright (C) 2017 Istituto Nazionale di Astrofisica * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License Version 3 as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package it.inaf.ia2.tsm.webapp; import java.io.Serializable; import uk.me.nxg.unity.Syntax; import uk.me.nxg.unity.UnitExpr; import uk.me.nxg.unity.UnitParser; /** * Serializable wrapper for VOUnit UnitExpr * * @author Sonia Zorba <zorba at oats.inaf.it> */ public class VOUnitValidator implements Serializable { private static final long serialVersionUID = -1019359441934896102L; private static final Syntax syntax = Syntax.lookup("vounits"); private final boolean unset; private boolean parsable; private boolean allUnitsRecognised; private boolean allUnitsRecommended; private boolean allUsageConstraintsSatisfied; private String exceptionMessage; public VOUnitValidator(String value) { unset = value == null || value.isEmpty(); if (!unset) { try { UnitParser parser = new UnitParser(syntax, value); UnitExpr expr = parser.getParsed(); allUnitsRecognised = expr.allUnitsRecognised(syntax); allUnitsRecommended = expr.allUnitsRecommended(syntax); allUsageConstraintsSatisfied = expr.allUsageConstraintsSatisfied(syntax); parsable = true; } catch (Throwable t) { exceptionMessage = t.getMessage(); } } } public boolean isUnset() { return unset; } public boolean isParsable() { return parsable; } public boolean isAllUnitsRecognised() { return allUnitsRecognised; } public boolean isAllUnitsRecommended() { return allUnitsRecommended; } public boolean isAllUsageConstraintsSatisfied() { return allUsageConstraintsSatisfied; } public String getExceptionMessage() { return exceptionMessage; } } TapSchemaManagerWebApp/src/main/resources/webapp.properties +1 −1 Original line number Original line Diff line number Diff line ucd_service_url=http://ia2-vo.oats.inaf.it:8080/ucd/ ucd_service_url=http://ia2-vo.oats.inaf.it/ucd/ credentials_config_path=/home/sonia/.tsm/config.xml credentials_config_path=/home/sonia/.tsm/config.xml password=pippo password=pippo No newline at end of file TapSchemaManagerWebApp/src/main/webapp/tapSchemaEditing.xhtml +36 −2 Original line number Original line Diff line number Diff line Loading @@ -314,10 +314,44 @@ <h:inputText <h:inputText id="column_unit" id="column_unit" class="form-control #{tapSchemaEditing.selectedColumn.isChanged('unit') ? 'changed' : ''}" class="form-control #{tapSchemaEditing.selectedColumn.isChanged('unit') ? 'changed' : ''}" value="#{tapSchemaEditing.selectedColumn.unit}"> value="#{tapSchemaEditing.selectedColumn.unit}" autocomplete="off"> <f:converter converterId="it.inaf.ia2.NullOrEmptyConverter" /> <f:converter converterId="it.inaf.ia2.NullOrEmptyConverter" /> <f:ajax event="keyup" execute="@form" listener="#{tapSchemaEditing.textInputChanged(tapSchemaEditing.selectedColumn, 'unit')}" onevent="TSM.textInputChanged" /> <f:ajax event="keyup" execute="@form" listener="#{tapSchemaEditing.textInputChanged(tapSchemaEditing.selectedColumn, 'unit')}" onevent="TSM.textInputChanged" render="vounit-validator" /> </h:inputText> </h:inputText> <h:panelGroup id="vounit-validator"> <h:panelGroup rendered="#{!tapSchemaEditing.voUnitValidator.unset}"> <h:panelGroup rendered="#{tapSchemaEditing.voUnitValidator.parsable}"> <ul> <li> all units recognised <span class="#{tapSchemaEditing.voUnitValidator.allUnitsRecognised ? 'text-success' : 'text-danger'}"> <span class="glyphicon glyphicon-#{tapSchemaEditing.voUnitValidator.allUnitsRecognised ? 'ok' : 'remove'}"></span> </span> </li> <li> all units recommended <span class="#{tapSchemaEditing.voUnitValidator.allUnitsRecommended ? 'text-success' : 'text-danger'}"> <span class="glyphicon glyphicon-#{tapSchemaEditing.voUnitValidator.allUnitsRecommended ? 'ok' : 'remove'}"></span> </span> </li> <li> all constraints satisfied <span class="#{tapSchemaEditing.voUnitValidator.allUsageConstraintsSatisfied ? 'text-success' : 'text-danger'}"> <span class="glyphicon glyphicon-#{tapSchemaEditing.voUnitValidator.allUsageConstraintsSatisfied ? 'ok' : 'remove'}"></span> </span> </li> </ul> </h:panelGroup> <h:panelGroup rendered="#{!tapSchemaEditing.voUnitValidator.parsable}"> <p class="text-danger"> <span class="glyphicon glyphicon-remove"></span> <strong>Invalid VOUnit</strong>: #{tapSchemaEditing.voUnitValidator.exceptionMessage} </p> </h:panelGroup> </h:panelGroup> </h:panelGroup> </div> </div> <div class="form-group"> <div class="form-group"> <h:outputLabel for="column_description" class="control-label">Description:</h:outputLabel> <h:outputLabel for="column_description" class="control-label">Description:</h:outputLabel> Loading Loading
TapSchemaManagerWebApp/pom.xml +7 −2 Original line number Original line Diff line number Diff line Loading @@ -4,7 +4,7 @@ <groupId>it.inaf.ia2.tap</groupId> <groupId>it.inaf.ia2.tap</groupId> <artifactId>TapSchemaManagerWebApp</artifactId> <artifactId>TapSchemaManagerWebApp</artifactId> <version>1.0.1</version> <version>1.0.2</version> <packaging>war</packaging> <packaging>war</packaging> <name>TapSchemaManagerWebApp</name> <name>TapSchemaManagerWebApp</name> Loading Loading @@ -87,7 +87,7 @@ <dependency> <dependency> <groupId>it.inaf.ia2.tap</groupId> <groupId>it.inaf.ia2.tap</groupId> <artifactId>TapSchemaManagerAPI</artifactId> <artifactId>TapSchemaManagerAPI</artifactId> <version>1.0.1</version> <version>1.0.2</version> </dependency> </dependency> <dependency> <dependency> <groupId>ari.ucd</groupId> <groupId>ari.ucd</groupId> Loading @@ -100,6 +100,11 @@ <version>7.0</version> <version>7.0</version> <scope>provided</scope> <scope>provided</scope> </dependency> </dependency> <dependency> <groupId>uk.me.nxg</groupId> <artifactId>unity</artifactId> <version>1.0</version> </dependency> <dependency> <dependency> <groupId>mysql</groupId> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId> Loading
TapSchemaManagerWebApp/src/main/java/it/inaf/ia2/tsm/webapp/TapSchemaEditingBean.java +18 −0 Original line number Original line Diff line number Diff line Loading @@ -72,6 +72,7 @@ public class TapSchemaEditingBean implements Serializable { private EntitiesContainer currentAddingContainer; private EntitiesContainer currentAddingContainer; private List<AddableItem> currentAddables; private List<AddableItem> currentAddables; private VOUnitValidator voUnitValidator; @Inject @Inject private SearchUCDDialog searchUCDDialog; private SearchUCDDialog searchUCDDialog; Loading @@ -88,6 +89,10 @@ public class TapSchemaEditingBean implements Serializable { return selectedColumn; return selectedColumn; } } public VOUnitValidator getVoUnitValidator() { return voUnitValidator; } public void setSelectedSchema(Schema selectedSchema) { public void setSelectedSchema(Schema selectedSchema) { this.selectedSchema = selectedSchema; this.selectedSchema = selectedSchema; if (selectedSchema == null) { if (selectedSchema == null) { Loading Loading @@ -118,6 +123,7 @@ public class TapSchemaEditingBean implements Serializable { public void setSelectedColumn(Column selectedColumn) { public void setSelectedColumn(Column selectedColumn) { this.selectedColumn = selectedColumn; this.selectedColumn = selectedColumn; selectedColumnChanged(); } } public UpdateOperations getUpdateOperations() { public UpdateOperations getUpdateOperations() { Loading Loading @@ -218,6 +224,15 @@ public class TapSchemaEditingBean implements Serializable { } } } } } } selectedColumnChanged(); } private void selectedColumnChanged() { if (selectedColumn == null) { voUnitValidator = new VOUnitValidator(null); } else { voUnitValidator = new VOUnitValidator(selectedColumn.getUnit()); } } } public void setTapSchema(TapSchema tapSchema) { public void setTapSchema(TapSchema tapSchema) { Loading Loading @@ -328,6 +343,9 @@ public class TapSchemaEditingBean implements Serializable { public void textInputChanged(TapSchemaEntity entity, String key) { public void textInputChanged(TapSchemaEntity entity, String key) { final boolean isChanged = entity.isChanged(key); final boolean isChanged = entity.isChanged(key); if (key.equals("unit")) { voUnitValidator = new VOUnitValidator(entity.getValue(key, String.class)); } CustomPartialResponseWriter.getCurrentInstance().addCustomJSUpdate(new JSUpdateHandler() { CustomPartialResponseWriter.getCurrentInstance().addCustomJSUpdate(new JSUpdateHandler() { @Override @Override Loading
TapSchemaManagerWebApp/src/main/java/it/inaf/ia2/tsm/webapp/VOUnitValidator.java 0 → 100644 +89 −0 Original line number Original line Diff line number Diff line /* * _____________________________________________________________________________ * * INAF - OATS National Institute for Astrophysics - Astronomical Observatory of * Trieste INAF - IA2 Italian Center for Astronomical Archives * _____________________________________________________________________________ * * Copyright (C) 2017 Istituto Nazionale di Astrofisica * * This program is free software; you can redistribute it and/or modify it under * the terms of the GNU General Public License Version 3 as published by the * Free Software Foundation. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more * details. * * You should have received a copy of the GNU General Public License along with * this program; if not, write to the Free Software Foundation, Inc., 51 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ package it.inaf.ia2.tsm.webapp; import java.io.Serializable; import uk.me.nxg.unity.Syntax; import uk.me.nxg.unity.UnitExpr; import uk.me.nxg.unity.UnitParser; /** * Serializable wrapper for VOUnit UnitExpr * * @author Sonia Zorba <zorba at oats.inaf.it> */ public class VOUnitValidator implements Serializable { private static final long serialVersionUID = -1019359441934896102L; private static final Syntax syntax = Syntax.lookup("vounits"); private final boolean unset; private boolean parsable; private boolean allUnitsRecognised; private boolean allUnitsRecommended; private boolean allUsageConstraintsSatisfied; private String exceptionMessage; public VOUnitValidator(String value) { unset = value == null || value.isEmpty(); if (!unset) { try { UnitParser parser = new UnitParser(syntax, value); UnitExpr expr = parser.getParsed(); allUnitsRecognised = expr.allUnitsRecognised(syntax); allUnitsRecommended = expr.allUnitsRecommended(syntax); allUsageConstraintsSatisfied = expr.allUsageConstraintsSatisfied(syntax); parsable = true; } catch (Throwable t) { exceptionMessage = t.getMessage(); } } } public boolean isUnset() { return unset; } public boolean isParsable() { return parsable; } public boolean isAllUnitsRecognised() { return allUnitsRecognised; } public boolean isAllUnitsRecommended() { return allUnitsRecommended; } public boolean isAllUsageConstraintsSatisfied() { return allUsageConstraintsSatisfied; } public String getExceptionMessage() { return exceptionMessage; } }
TapSchemaManagerWebApp/src/main/resources/webapp.properties +1 −1 Original line number Original line Diff line number Diff line ucd_service_url=http://ia2-vo.oats.inaf.it:8080/ucd/ ucd_service_url=http://ia2-vo.oats.inaf.it/ucd/ credentials_config_path=/home/sonia/.tsm/config.xml credentials_config_path=/home/sonia/.tsm/config.xml password=pippo password=pippo No newline at end of file
TapSchemaManagerWebApp/src/main/webapp/tapSchemaEditing.xhtml +36 −2 Original line number Original line Diff line number Diff line Loading @@ -314,10 +314,44 @@ <h:inputText <h:inputText id="column_unit" id="column_unit" class="form-control #{tapSchemaEditing.selectedColumn.isChanged('unit') ? 'changed' : ''}" class="form-control #{tapSchemaEditing.selectedColumn.isChanged('unit') ? 'changed' : ''}" value="#{tapSchemaEditing.selectedColumn.unit}"> value="#{tapSchemaEditing.selectedColumn.unit}" autocomplete="off"> <f:converter converterId="it.inaf.ia2.NullOrEmptyConverter" /> <f:converter converterId="it.inaf.ia2.NullOrEmptyConverter" /> <f:ajax event="keyup" execute="@form" listener="#{tapSchemaEditing.textInputChanged(tapSchemaEditing.selectedColumn, 'unit')}" onevent="TSM.textInputChanged" /> <f:ajax event="keyup" execute="@form" listener="#{tapSchemaEditing.textInputChanged(tapSchemaEditing.selectedColumn, 'unit')}" onevent="TSM.textInputChanged" render="vounit-validator" /> </h:inputText> </h:inputText> <h:panelGroup id="vounit-validator"> <h:panelGroup rendered="#{!tapSchemaEditing.voUnitValidator.unset}"> <h:panelGroup rendered="#{tapSchemaEditing.voUnitValidator.parsable}"> <ul> <li> all units recognised <span class="#{tapSchemaEditing.voUnitValidator.allUnitsRecognised ? 'text-success' : 'text-danger'}"> <span class="glyphicon glyphicon-#{tapSchemaEditing.voUnitValidator.allUnitsRecognised ? 'ok' : 'remove'}"></span> </span> </li> <li> all units recommended <span class="#{tapSchemaEditing.voUnitValidator.allUnitsRecommended ? 'text-success' : 'text-danger'}"> <span class="glyphicon glyphicon-#{tapSchemaEditing.voUnitValidator.allUnitsRecommended ? 'ok' : 'remove'}"></span> </span> </li> <li> all constraints satisfied <span class="#{tapSchemaEditing.voUnitValidator.allUsageConstraintsSatisfied ? 'text-success' : 'text-danger'}"> <span class="glyphicon glyphicon-#{tapSchemaEditing.voUnitValidator.allUsageConstraintsSatisfied ? 'ok' : 'remove'}"></span> </span> </li> </ul> </h:panelGroup> <h:panelGroup rendered="#{!tapSchemaEditing.voUnitValidator.parsable}"> <p class="text-danger"> <span class="glyphicon glyphicon-remove"></span> <strong>Invalid VOUnit</strong>: #{tapSchemaEditing.voUnitValidator.exceptionMessage} </p> </h:panelGroup> </h:panelGroup> </h:panelGroup> </div> </div> <div class="form-group"> <div class="form-group"> <h:outputLabel for="column_description" class="control-label">Description:</h:outputLabel> <h:outputLabel for="column_description" class="control-label">Description:</h:outputLabel> Loading