diff --git a/li.strolch.model/src/main/java/li/strolch/model/Order.java b/li.strolch.model/src/main/java/li/strolch/model/Order.java index 8281f06cc..95861a627 100644 --- a/li.strolch.model/src/main/java/li/strolch/model/Order.java +++ b/li.strolch.model/src/main/java/li/strolch/model/Order.java @@ -24,6 +24,7 @@ import li.strolch.model.Locator.LocatorBuilder; import li.strolch.model.policy.PolicyDef; import li.strolch.model.policy.PolicyDefs; import li.strolch.model.visitor.StrolchElementVisitor; +import li.strolch.model.xml.StrolchXmlHelper; import li.strolch.utils.dbc.DBC; 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 * 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. - * + *
* 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
*
@@ -318,7 +319,31 @@ public class Order extends AbstractStrolchRootElement implements StrolchRootElem
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) {
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);
+ }
}
diff --git a/li.strolch.model/src/main/java/li/strolch/model/Resource.java b/li.strolch.model/src/main/java/li/strolch/model/Resource.java
index baa04bde1..0c66ba5a2 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/Resource.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/Resource.java
@@ -30,6 +30,7 @@ import li.strolch.model.policy.PolicyDefs;
import li.strolch.model.timedstate.StrolchTimedState;
import li.strolch.model.timevalue.IValue;
import li.strolch.model.visitor.StrolchElementVisitor;
+import li.strolch.model.xml.StrolchXmlHelper;
import li.strolch.utils.dbc.DBC;
/**
@@ -197,7 +198,8 @@ public class Resource extends AbstractStrolchRootElement implements StrolchRootE
if (this.timedStateMap == null || this.timedStateMap.isEmpty())
return Stream.empty();
- return this.timedStateMap.values().stream()
+ return this.timedStateMap.values()
+ .stream()
.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());
}
+ /**
+ * 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) {
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);
+ }
}
diff --git a/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java b/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java
index f3e9fe1cd..e0dc9d7ea 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/activity/Activity.java
@@ -36,6 +36,7 @@ import li.strolch.model.parameter.Parameter;
import li.strolch.model.policy.PolicyDef;
import li.strolch.model.policy.PolicyDefs;
import li.strolch.model.visitor.StrolchElementVisitor;
+import li.strolch.model.xml.StrolchXmlHelper;
import li.strolch.utils.dbc.DBC;
/**
@@ -827,7 +828,31 @@ public class Activity extends AbstractStrolchRootElement
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) {
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);
+ }
}
diff --git a/li.strolch.model/src/main/java/li/strolch/model/xml/StrolchXmlHelper.java b/li.strolch.model/src/main/java/li/strolch/model/xml/StrolchXmlHelper.java
index 3d0665e3a..868be7239 100644
--- a/li.strolch.model/src/main/java/li/strolch/model/xml/StrolchXmlHelper.java
+++ b/li.strolch.model/src/main/java/li/strolch/model/xml/StrolchXmlHelper.java
@@ -1,16 +1,16 @@
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_XML_VERSION;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
-import java.io.File;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Writer;
+import java.io.*;
import java.nio.file.Files;
import java.util.Collection;
import java.util.List;
@@ -32,22 +32,20 @@ public class StrolchXmlHelper {
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) {
- SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
- new XmlModelSaxFileReader(elementListener, file, false).parseFile();
- return elementListener.getResource(id);
+ return parse(file).getResource(id);
}
public static Order parseAndReturnOrder(File file, String id) {
- SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
- new XmlModelSaxFileReader(elementListener, file, false).parseFile();
- return elementListener.getOrder(id);
+ return parse(file).getOrder(id);
}
public static Activity parseAndReturnActivity(File file, String id) {
- SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
- new XmlModelSaxFileReader(elementListener, file, false).parseFile();
- return elementListener.getActivity(id);
+ return parse(file).getActivity(id);
}
public static Map