diff --git a/jsprit-core/src/main/java/algorithms/SchrimpfFactory.java b/jsprit-core/src/main/java/algorithms/SchrimpfFactory.java index c8363f73..661d76e0 100644 --- a/jsprit-core/src/main/java/algorithms/SchrimpfFactory.java +++ b/jsprit-core/src/main/java/algorithms/SchrimpfFactory.java @@ -64,7 +64,7 @@ public class SchrimpfFactory { public VehicleRoutingAlgorithm createAlgorithm(VehicleRoutingProblem vrp){ AlgorithmConfig algorithmConfig = new AlgorithmConfig(); URL resource = Resource.getAsURL("schrimpf.xml"); - new AlgorithmConfigXmlReader(algorithmConfig).read(resource.getPath()); + new AlgorithmConfigXmlReader(algorithmConfig).read(resource); return VehicleRoutingAlgorithms.createAlgorithm(vrp, algorithmConfig); } diff --git a/jsprit-core/src/main/java/basics/io/AlgorithmConfigXmlReader.java b/jsprit-core/src/main/java/basics/io/AlgorithmConfigXmlReader.java index e2c1ce96..fb05ca4b 100644 --- a/jsprit-core/src/main/java/basics/io/AlgorithmConfigXmlReader.java +++ b/jsprit-core/src/main/java/basics/io/AlgorithmConfigXmlReader.java @@ -50,6 +50,43 @@ public class AlgorithmConfigXmlReader { this.algorithmConfig = algorithmConfig; } + public void read(URL url){ + log.info("read algorithm-config from file " + url); + algorithmConfig.getXMLConfiguration().setURL(url); + algorithmConfig.getXMLConfiguration().setAttributeSplittingDisabled(true); + algorithmConfig.getXMLConfiguration().setDelimiterParsingDisabled(true); + + if(schemaValidation){ + final URL resource = Resource.getAsURL("algorithm_schema.xsd"); + if(resource != null) { + EntityResolver resolver = new EntityResolver() { + + @Override + public InputSource resolveEntity(String publicId, String systemId) throws SAXException, IOException { + { + InputSource is = new InputSource(resource.getFile()); + return is; + } + } + }; + algorithmConfig.getXMLConfiguration().setEntityResolver(resolver); + algorithmConfig.getXMLConfiguration().setSchemaValidation(true); + log.info("validating " + url + " with xsd-schema"); + } + else{ + log.warn("cannot find schema-xsd file (algorithm_xml_schema.xsd). try to read xml without xml-file-validation."); + } + } + try { + algorithmConfig.getXMLConfiguration().load(); + } catch (ConfigurationException e) { + log.error(e); + e.printStackTrace(); + System.exit(1); + } + } + + public void read(String filename){ log.info("read algorithm-config from file " + filename); algorithmConfig.getXMLConfiguration().setFileName(filename);