[New] Added .parse() to Resource, Order and Activity classes
This commit is contained in:
parent
21f6f8d07a
commit
07767c9c70
|
@ -24,6 +24,7 @@ import li.strolch.model.Locator.LocatorBuilder;
|
||||||
import li.strolch.model.policy.PolicyDef;
|
import li.strolch.model.policy.PolicyDef;
|
||||||
import li.strolch.model.policy.PolicyDefs;
|
import li.strolch.model.policy.PolicyDefs;
|
||||||
import li.strolch.model.visitor.StrolchElementVisitor;
|
import li.strolch.model.visitor.StrolchElementVisitor;
|
||||||
|
import li.strolch.model.xml.StrolchXmlHelper;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
import li.strolch.utils.iso8601.ISO8601;
|
import li.strolch.utils.iso8601.ISO8601;
|
||||||
|
|
||||||
|
@ -31,7 +32,7 @@ import li.strolch.utils.iso8601.ISO8601;
|
||||||
* The Order is an object used in the EDF to transfer data from one range to another. Orders are not to be thought of as
|
* The Order is an object used in the EDF to transfer data from one range to another. Orders are not to be thought of as
|
||||||
* Resources. Resources are supposed to be thought of as things i.e. a table, a machine and so forth, where a order is
|
* Resources. Resources are supposed to be thought of as things i.e. a table, a machine and so forth, where a order is
|
||||||
* to be thought of as an object for doing something.
|
* to be thought of as an object for doing something.
|
||||||
*
|
* <p>
|
||||||
* In this sense, orders do not need to be verified, so all verifier chracteristics are disabled and the
|
* In this sense, orders do not need to be verified, so all verifier chracteristics are disabled and the
|
||||||
* getVerifier()-method will return the null reference
|
* getVerifier()-method will return the null reference
|
||||||
*
|
*
|
||||||
|
@ -318,7 +319,31 @@ public class Order extends AbstractStrolchRootElement implements StrolchRootElem
|
||||||
return getId().compareTo(o.getId());
|
return getId().compareTo(o.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@link Locator} for orders of the given type and id
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* the type of order
|
||||||
|
* @param id
|
||||||
|
* the id of the order
|
||||||
|
*
|
||||||
|
* @return the locator
|
||||||
|
*/
|
||||||
public static Locator locatorFor(String type, String id) {
|
public static Locator locatorFor(String type, String id) {
|
||||||
return Locator.valueOf(Tags.ORDER, type, id);
|
return Locator.valueOf(Tags.ORDER, type, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses the given XML and returns the order with the given ID
|
||||||
|
*
|
||||||
|
* @param xml
|
||||||
|
* the xml to parse
|
||||||
|
* @param id
|
||||||
|
* the id of the order to return from the parsed elements
|
||||||
|
*
|
||||||
|
* @return the order, or null if it does not exist
|
||||||
|
*/
|
||||||
|
public static Resource parse(String xml, String id) {
|
||||||
|
return StrolchXmlHelper.parseAndReturnResource(xml, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,6 +30,7 @@ import li.strolch.model.policy.PolicyDefs;
|
||||||
import li.strolch.model.timedstate.StrolchTimedState;
|
import li.strolch.model.timedstate.StrolchTimedState;
|
||||||
import li.strolch.model.timevalue.IValue;
|
import li.strolch.model.timevalue.IValue;
|
||||||
import li.strolch.model.visitor.StrolchElementVisitor;
|
import li.strolch.model.visitor.StrolchElementVisitor;
|
||||||
|
import li.strolch.model.xml.StrolchXmlHelper;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -197,7 +198,8 @@ public class Resource extends AbstractStrolchRootElement implements StrolchRootE
|
||||||
if (this.timedStateMap == null || this.timedStateMap.isEmpty())
|
if (this.timedStateMap == null || this.timedStateMap.isEmpty())
|
||||||
return Stream.empty();
|
return Stream.empty();
|
||||||
|
|
||||||
return this.timedStateMap.values().stream()
|
return this.timedStateMap.values()
|
||||||
|
.stream()
|
||||||
.filter(s -> s.getInterpretation().equals(interpretation) && s.getUom().equals(uom));
|
.filter(s -> s.getInterpretation().equals(interpretation) && s.getUom().equals(uom));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +401,31 @@ public class Resource extends AbstractStrolchRootElement implements StrolchRootE
|
||||||
return getId().compareTo(o.getId());
|
return getId().compareTo(o.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@link Locator} for resources of the given type and id
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* the type of resource
|
||||||
|
* @param id
|
||||||
|
* the id of the resource
|
||||||
|
*
|
||||||
|
* @return the locator
|
||||||
|
*/
|
||||||
public static Locator locatorFor(String type, String id) {
|
public static Locator locatorFor(String type, String id) {
|
||||||
return Locator.valueOf(Tags.RESOURCE, type, id);
|
return Locator.valueOf(Tags.RESOURCE, type, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses the given XML and returns the resource with the given ID
|
||||||
|
*
|
||||||
|
* @param xml
|
||||||
|
* the xml to parse
|
||||||
|
* @param id
|
||||||
|
* the id of the resource to return from the parsed elements
|
||||||
|
*
|
||||||
|
* @return the resource, or null if it does not exist
|
||||||
|
*/
|
||||||
|
public static Resource parse(String xml, String id) {
|
||||||
|
return StrolchXmlHelper.parseAndReturnResource(xml, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,6 +36,7 @@ import li.strolch.model.parameter.Parameter;
|
||||||
import li.strolch.model.policy.PolicyDef;
|
import li.strolch.model.policy.PolicyDef;
|
||||||
import li.strolch.model.policy.PolicyDefs;
|
import li.strolch.model.policy.PolicyDefs;
|
||||||
import li.strolch.model.visitor.StrolchElementVisitor;
|
import li.strolch.model.visitor.StrolchElementVisitor;
|
||||||
|
import li.strolch.model.xml.StrolchXmlHelper;
|
||||||
import li.strolch.utils.dbc.DBC;
|
import li.strolch.utils.dbc.DBC;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -836,7 +837,31 @@ public class Activity extends AbstractStrolchRootElement
|
||||||
this.parent = activity;
|
this.parent = activity;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a {@link Locator} for activities of the given type and id
|
||||||
|
*
|
||||||
|
* @param type
|
||||||
|
* the type of activity
|
||||||
|
* @param id
|
||||||
|
* the id of the activity
|
||||||
|
*
|
||||||
|
* @return the locator
|
||||||
|
*/
|
||||||
public static Locator locatorFor(String type, String id) {
|
public static Locator locatorFor(String type, String id) {
|
||||||
return Locator.valueOf(Tags.ACTIVITY, type, id);
|
return Locator.valueOf(Tags.ACTIVITY, type, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Parses the given XML and returns the activity with the given ID
|
||||||
|
*
|
||||||
|
* @param xml
|
||||||
|
* the xml to parse
|
||||||
|
* @param id
|
||||||
|
* the id of the activity to return from the parsed elements
|
||||||
|
*
|
||||||
|
* @return the activity, or null if it does not exist
|
||||||
|
*/
|
||||||
|
public static Resource parse(String xml, String id) {
|
||||||
|
return StrolchXmlHelper.parseAndReturnResource(xml, id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,16 @@
|
||||||
package li.strolch.model.xml;
|
package li.strolch.model.xml;
|
||||||
|
|
||||||
|
import static java.nio.charset.StandardCharsets.UTF_8;
|
||||||
import static li.strolch.model.StrolchModelConstants.DEFAULT_ENCODING;
|
import static li.strolch.model.StrolchModelConstants.DEFAULT_ENCODING;
|
||||||
import static li.strolch.model.StrolchModelConstants.DEFAULT_XML_VERSION;
|
import static li.strolch.model.StrolchModelConstants.DEFAULT_XML_VERSION;
|
||||||
|
|
||||||
|
import javax.xml.parsers.SAXParser;
|
||||||
|
import javax.xml.parsers.SAXParserFactory;
|
||||||
import javax.xml.stream.FactoryConfigurationError;
|
import javax.xml.stream.FactoryConfigurationError;
|
||||||
import javax.xml.stream.XMLOutputFactory;
|
import javax.xml.stream.XMLOutputFactory;
|
||||||
import javax.xml.stream.XMLStreamException;
|
import javax.xml.stream.XMLStreamException;
|
||||||
import javax.xml.stream.XMLStreamWriter;
|
import javax.xml.stream.XMLStreamWriter;
|
||||||
import java.io.File;
|
import java.io.*;
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.io.Writer;
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -32,22 +32,20 @@ public class StrolchXmlHelper {
|
||||||
|
|
||||||
private static final Logger logger = LoggerFactory.getLogger(StrolchXmlHelper.class);
|
private static final Logger logger = LoggerFactory.getLogger(StrolchXmlHelper.class);
|
||||||
|
|
||||||
|
public static Resource parseAndReturnResource(String xml, String id) {
|
||||||
|
return parse(xml).getResource(id);
|
||||||
|
}
|
||||||
|
|
||||||
public static Resource parseAndReturnResource(File file, String id) {
|
public static Resource parseAndReturnResource(File file, String id) {
|
||||||
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
return parse(file).getResource(id);
|
||||||
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
|
||||||
return elementListener.getResource(id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Order parseAndReturnOrder(File file, String id) {
|
public static Order parseAndReturnOrder(File file, String id) {
|
||||||
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
return parse(file).getOrder(id);
|
||||||
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
|
||||||
return elementListener.getOrder(id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Activity parseAndReturnActivity(File file, String id) {
|
public static Activity parseAndReturnActivity(File file, String id) {
|
||||||
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
return parse(file).getActivity(id);
|
||||||
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
|
||||||
return elementListener.getActivity(id);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Map<String, StrolchRootElement> parseToMap(File file) {
|
public static Map<String, StrolchRootElement> parseToMap(File file) {
|
||||||
|
@ -58,6 +56,23 @@ public class StrolchXmlHelper {
|
||||||
return parseStream(stream, encoding).stream().collect(Collectors.toMap(StrolchRootElement::getId, e -> e));
|
return parseStream(stream, encoding).stream().collect(Collectors.toMap(StrolchRootElement::getId, e -> e));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static SimpleStrolchElementListener parse(File file) {
|
||||||
|
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
||||||
|
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
||||||
|
return elementListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static SimpleStrolchElementListener parse(String xml) {
|
||||||
|
try {
|
||||||
|
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
||||||
|
SAXParser sp = SAXParserFactory.newInstance().newSAXParser();
|
||||||
|
sp.parse(new ByteArrayInputStream(xml.getBytes(UTF_8)), new XmlModelSaxReader(elementListener));
|
||||||
|
return elementListener;
|
||||||
|
} catch (Exception e) {
|
||||||
|
throw new IllegalStateException("Failed to parse XML", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static List<StrolchRootElement> parseFile(File file) {
|
public static List<StrolchRootElement> parseFile(File file) {
|
||||||
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
||||||
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
||||||
|
|
Loading…
Reference in New Issue