[New] Add toXml() and toJson() methods on StrolchRootElement
This commit is contained in:
parent
d469a035fb
commit
4e1e1ccb8f
|
@ -0,0 +1,38 @@
|
|||
package li.strolch.model;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.GsonBuilder;
|
||||
|
||||
import li.strolch.model.json.StrolchElementToFlatJsonVisitor;
|
||||
import li.strolch.model.json.StrolchElementToJsonVisitor;
|
||||
import li.strolch.model.xml.StrolchElementToXmlStringVisitor;
|
||||
|
||||
public abstract class AbstractStrolchRootElement extends GroupedParameterizedElement implements StrolchRootElement {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
public AbstractStrolchRootElement() {
|
||||
super();
|
||||
}
|
||||
|
||||
public AbstractStrolchRootElement(String id, String name, String type) {
|
||||
super(id, name, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toXmlString() {
|
||||
return this.accept(new StrolchElementToXmlStringVisitor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toJsonString() {
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
return gson.toJson(this.accept(new StrolchElementToJsonVisitor()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toFlatJsonString() {
|
||||
Gson gson = new GsonBuilder().setPrettyPrinting().create();
|
||||
return gson.toJson(this.accept(new StrolchElementToFlatJsonVisitor()));
|
||||
}
|
||||
}
|
|
@ -34,7 +34,7 @@ import li.strolch.utils.iso8601.ISO8601FormatFactory;
|
|||
*
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class Order extends GroupedParameterizedElement implements StrolchRootElement, Comparable<Order> {
|
||||
public class Order extends AbstractStrolchRootElement implements StrolchRootElement, Comparable<Order> {
|
||||
|
||||
private static final long serialVersionUID = 0L;
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ import li.strolch.model.visitor.StrolchRootElementVisitor;
|
|||
/**
|
||||
* @author Robert von Burg <eitch@eitchnet.ch>
|
||||
*/
|
||||
public class Resource extends GroupedParameterizedElement implements StrolchRootElement, Comparable<Resource> {
|
||||
public class Resource extends AbstractStrolchRootElement implements StrolchRootElement, Comparable<Resource> {
|
||||
|
||||
private static final long serialVersionUID = 0L;
|
||||
|
||||
|
|
|
@ -69,4 +69,26 @@ public interface StrolchRootElement extends StrolchElement, PolicyContainer, Par
|
|||
* @return the result of the visitation
|
||||
*/
|
||||
public <T> T accept(StrolchRootElementVisitor<T> visitor);
|
||||
|
||||
/**
|
||||
* Formats this {@link StrolchRootElement} as an XML string
|
||||
*
|
||||
* @return the formatted XML string
|
||||
*/
|
||||
public String toXmlString();
|
||||
|
||||
/**
|
||||
* Formats this element as a JSON string
|
||||
*
|
||||
* @return the formatted JSON string
|
||||
*/
|
||||
public String toJsonString();
|
||||
|
||||
/**
|
||||
* Formats this element as a flat JSON string, i.e. all parameter bags are removed and parameters are on the root
|
||||
* element of the JSON object
|
||||
*
|
||||
* @return the formatted JSON string
|
||||
*/
|
||||
public String toFlatJsonString();
|
||||
}
|
||||
|
|
|
@ -27,7 +27,7 @@ import java.util.Map.Entry;
|
|||
import li.strolch.exception.StrolchException;
|
||||
import li.strolch.exception.StrolchModelException;
|
||||
import li.strolch.exception.StrolchPolicyException;
|
||||
import li.strolch.model.GroupedParameterizedElement;
|
||||
import li.strolch.model.AbstractStrolchRootElement;
|
||||
import li.strolch.model.Locator;
|
||||
import li.strolch.model.Locator.LocatorBuilder;
|
||||
import li.strolch.model.State;
|
||||
|
@ -46,7 +46,7 @@ import li.strolch.utils.dbc.DBC;
|
|||
*
|
||||
* @author Martin Smock <martin.smock@bluewin.ch>
|
||||
*/
|
||||
public class Activity extends GroupedParameterizedElement
|
||||
public class Activity extends AbstractStrolchRootElement
|
||||
implements IActivityElement, StrolchRootElement, Comparable<Activity> {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
package li.strolch.model.json;
|
||||
|
||||
import com.google.gson.JsonObject;
|
||||
|
||||
import li.strolch.model.Order;
|
||||
import li.strolch.model.Resource;
|
||||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
||||
|
||||
public class StrolchElementToFlatJsonVisitor implements StrolchRootElementVisitor<JsonObject> {
|
||||
|
||||
@Override
|
||||
public JsonObject visitOrder(Order order) {
|
||||
return new OrderToFlatJsonVisitor().toJson(order);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonObject visitResource(Resource resource) {
|
||||
return new ResourceToFlatJsonVisitor().toJson(resource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonObject visitActivity(Activity activity) {
|
||||
return new ActivityToFlatJsonVisitor().toJson(activity);
|
||||
}
|
||||
}
|
|
@ -28,9 +28,25 @@ import li.strolch.model.timedstate.StrolchTimedState;
|
|||
import li.strolch.model.timevalue.ITimeValue;
|
||||
import li.strolch.model.timevalue.IValue;
|
||||
import li.strolch.model.timevalue.IValueChange;
|
||||
import li.strolch.model.visitor.StrolchRootElementVisitor;
|
||||
import li.strolch.utils.iso8601.ISO8601FormatFactory;
|
||||
|
||||
public class StrolchElementToJsonVisitor {
|
||||
public class StrolchElementToJsonVisitor implements StrolchRootElementVisitor<JsonObject> {
|
||||
|
||||
@Override
|
||||
public JsonObject visitResource(Resource resource) {
|
||||
return toJson(resource);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonObject visitOrder(Order order) {
|
||||
return toJson(order);
|
||||
}
|
||||
|
||||
@Override
|
||||
public JsonObject visitActivity(Activity activity) {
|
||||
return toJson(activity);
|
||||
}
|
||||
|
||||
public JsonObject toJson(Resource element) {
|
||||
|
||||
|
|
Loading…
Reference in New Issue