Skip to content
Snippets Groups Projects
Commit 72577a25 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Added possibility to load XML models also from config folder

parent 3d3a99b0
No related branches found
No related tags found
No related merge requests found
......@@ -53,13 +53,27 @@ public class SchemaModels {
String[] tapSchemaModelFiles = getXMLModelFileNames(properties, "tap_schema_models");
String[] ivoaModelFiles = getXMLModelFileNames(properties, "ivoa_schema_models");
TAP_SCHEMA_MODELS = new XMLModelsLoader(tapSchemaModelFiles).load();
TAP_SCHEMA_MODELS = new XMLModelsLoader(tapSchemaModelFiles, getTapSchemaModelsFromExternalFolder()).load();
IVOA_SCHEMA_MODELS = new XMLModelsLoader(ivoaModelFiles).load();
} catch (IOException e) {
throw new ExceptionInInitializerError(e);
}
}
private static File[] getTapSchemaModelsFromExternalFolder() {
String tasmanConfigFolder = System.getenv("TASMAN_CONFIG_FOLDER");
if (tasmanConfigFolder != null) {
File tapSchemaModelsExternalFolder = new File(tasmanConfigFolder).toPath().resolve("schema_definition").toFile();
if (tapSchemaModelsExternalFolder.exists()) {
return tapSchemaModelsExternalFolder.listFiles();
}
}
return new File[]{};
}
private static Properties getCoreProperties() throws IOException {
Properties props = new Properties();
try (InputStream in = SchemaModels.class.getClassLoader().getResourceAsStream("core.properties")) {
......
......@@ -22,6 +22,8 @@
*/
package it.inaf.ia2.tsm.model;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
......@@ -52,13 +54,19 @@ public class XMLModelsLoader {
private static final Logger LOG = LoggerFactory.getLogger(XMLModelsLoader.class);
private final String[] xmlModelFileNames;
private final File[] xmlModelExternalFiles;
// key: doc version
private final Map<String, Document> documents;
private final Map<String, String> inheritanceGraph;
private final Map<Integer, List<Document>> inheritanceLevels;
public XMLModelsLoader(String[] xmlModelFileNames) {
this(xmlModelFileNames, new File[]{});
}
public XMLModelsLoader(String[] xmlModelFileNames, File[] xmlModelExternalFiles) {
this.xmlModelFileNames = xmlModelFileNames;
this.xmlModelExternalFiles = xmlModelExternalFiles;
this.documents = new HashMap<>();
inheritanceGraph = new HashMap<>();
inheritanceLevels = new HashMap<>();
......@@ -110,6 +118,18 @@ public class XMLModelsLoader {
for (String xmlModelFileName : xmlModelFileNames) {
try (InputStream in = classLoader.getResourceAsStream(xmlModelFileName)) {
loadFile(builder, in);
}
}
for (File xmlModelExternalFile : xmlModelExternalFiles) {
try (FileInputStream fis = new FileInputStream(xmlModelExternalFile)) {
loadFile(builder, fis);
}
}
}
private void loadFile(DocumentBuilder builder, InputStream in) throws IOException, SAXException {
Document doc = builder.parse(in);
Element root = doc.getDocumentElement();
String version = root.getAttribute("version");
......@@ -120,8 +140,6 @@ public class XMLModelsLoader {
assert documents.get(version) == null;
documents.put(version, doc);
}
}
}
private void buildInheritanceGraph() {
for (Document document : documents.values()) {
......
......@@ -110,8 +110,8 @@ cd - 1> /dev/null
# Creating executable
tasman_bin="$install_dir""tasman"
echo "#!/bin/bash" > $tasman_bin
echo "java -jar $install_dir""tasman-embedded.jar \$1" >> $tasman_bin
echo "#!/bin/sh" > $tasman_bin
echo "TASMAN_CONFIG_FOLDER=$tasman_config_dir java -jar $install_dir""tasman-embedded.jar \$1" >> $tasman_bin
chmod +x $tasman_bin
# Creating executable symbolic link
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment