[New] Added toJson visitor for Activity/Action

This commit is contained in:
Robert von Burg 2016-04-08 18:04:19 +02:00
parent d2db81465a
commit cac24481ee
3 changed files with 95 additions and 1 deletions

View File

@ -48,6 +48,7 @@ public class Tags {
public static final String AUDIT = "Audit";
public static final String POLICIES = "Policies";
public static final String POLICY = "Policy";
public static final String ELEMENTS = "Elements";
public static final String ACTIVITY = "Activity";
public static final String ACTION = "Action";

View File

@ -0,0 +1,25 @@
package li.strolch.model.json;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import li.strolch.model.ActivityVisitor;
import li.strolch.model.activity.Activity;
public class ActivityToJsonVisitor extends StrolchElementToJsonVisitor implements ActivityVisitor<JsonObject> {
@Override
public JsonObject visit(Activity element) {
JsonObject rootJ = toJson(element);
return rootJ;
}
public static String toJsonString(Activity element) {
ActivityToJsonVisitor visitor = new ActivityToJsonVisitor();
JsonObject jsonObject = visitor.visit(element);
String entity = new Gson().toJson(jsonObject);
return entity;
}
}

View File

@ -1,5 +1,7 @@
package li.strolch.model.json;
import java.util.Iterator;
import java.util.Map.Entry;
import java.util.SortedSet;
import com.google.gson.JsonArray;
@ -12,6 +14,9 @@ import li.strolch.model.Order;
import li.strolch.model.ParameterBag;
import li.strolch.model.Resource;
import li.strolch.model.Tags;
import li.strolch.model.activity.Action;
import li.strolch.model.activity.Activity;
import li.strolch.model.activity.IActivityElement;
import li.strolch.model.parameter.Parameter;
import li.strolch.model.policy.PolicyDef;
import li.strolch.model.policy.PolicyDefs;
@ -55,6 +60,69 @@ public class StrolchElementToJsonVisitor {
return rootJ;
}
public JsonObject toJson(Activity element) {
JsonObject rootJ = new JsonObject();
return toJson(element, rootJ);
}
public JsonObject toJson(Action element) {
JsonObject rootJ = new JsonObject();
return toJson(element, rootJ);
}
protected JsonObject toJson(Activity element, JsonObject rootJ) {
rootJ.addProperty(Tags.OBJECT_TYPE, Tags.ACTIVITY);
toJson((AbstractStrolchElement) element, rootJ);
addParameterBags(element, rootJ);
if (element.hasPolicyDefs())
addPolicies(element.getPolicyDefs(), rootJ);
Iterator<Entry<String, IActivityElement>> iter = element.elementIterator();
if (iter.hasNext()) {
JsonArray elementsJ = new JsonArray();
rootJ.add(Tags.ELEMENTS, elementsJ);
while (iter.hasNext()) {
IActivityElement activityElement = iter.next().getValue();
JsonObject elementJ = new JsonObject();
elementsJ.add(elementJ);
if (activityElement instanceof Activity) {
toJson((Activity) activityElement, elementJ);
} else if (activityElement instanceof Action) {
toJson((Action) activityElement, elementJ);
} else {
throw new IllegalArgumentException("Unhandled element " + activityElement.getClass());
}
}
}
return rootJ;
}
protected JsonObject toJson(Action element, JsonObject rootJ) {
rootJ.addProperty(Tags.OBJECT_TYPE, Tags.ACTION);
toJson((AbstractStrolchElement) element, rootJ);
rootJ.addProperty(Tags.RESOURCE_ID, element.getResourceId());
rootJ.addProperty(Tags.RESOURCE_TYPE, element.getResourceType());
rootJ.addProperty(Tags.STATE, element.getState().name());
addParameterBags(element, rootJ);
if (element.hasPolicyDefs())
addPolicies(element.getPolicyDefs(), rootJ);
return rootJ;
}
protected void addPolicies(PolicyDefs policyDefs, JsonObject rootJ) {
if (!policyDefs.hasPolicyDefs())
return;
@ -68,7 +136,7 @@ public class StrolchElementToJsonVisitor {
}
}
public JsonObject toJson(AbstractStrolchElement element, JsonObject rootJ) {
protected JsonObject toJson(AbstractStrolchElement element, JsonObject rootJ) {
rootJ.addProperty(Tags.ID, element.getId());
rootJ.addProperty(Tags.NAME, element.getName());