Commit 72577a25 authored by Sonia Zorba's avatar Sonia Zorba
Browse files

Added possibility to load XML models also from config folder

parent 3d3a99b0
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -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")) {
+27 −9
Original line number Diff line number Diff line
@@ -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()) {
+2 −2
Original line number Diff line number Diff line
@@ -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