[New] Added toJson visitor for Activity/Action
This commit is contained in:
parent
d2db81465a
commit
cac24481ee
|
@ -48,6 +48,7 @@ public class Tags {
|
||||||
public static final String AUDIT = "Audit";
|
public static final String AUDIT = "Audit";
|
||||||
public static final String POLICIES = "Policies";
|
public static final String POLICIES = "Policies";
|
||||||
public static final String POLICY = "Policy";
|
public static final String POLICY = "Policy";
|
||||||
|
public static final String ELEMENTS = "Elements";
|
||||||
|
|
||||||
public static final String ACTIVITY = "Activity";
|
public static final String ACTIVITY = "Activity";
|
||||||
public static final String ACTION = "Action";
|
public static final String ACTION = "Action";
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,5 +1,7 @@
|
||||||
package li.strolch.model.json;
|
package li.strolch.model.json;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.Map.Entry;
|
||||||
import java.util.SortedSet;
|
import java.util.SortedSet;
|
||||||
|
|
||||||
import com.google.gson.JsonArray;
|
import com.google.gson.JsonArray;
|
||||||
|
@ -12,6 +14,9 @@ import li.strolch.model.Order;
|
||||||
import li.strolch.model.ParameterBag;
|
import li.strolch.model.ParameterBag;
|
||||||
import li.strolch.model.Resource;
|
import li.strolch.model.Resource;
|
||||||
import li.strolch.model.Tags;
|
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.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;
|
||||||
|
@ -55,6 +60,69 @@ public class StrolchElementToJsonVisitor {
|
||||||
return rootJ;
|
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) {
|
protected void addPolicies(PolicyDefs policyDefs, JsonObject rootJ) {
|
||||||
if (!policyDefs.hasPolicyDefs())
|
if (!policyDefs.hasPolicyDefs())
|
||||||
return;
|
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.ID, element.getId());
|
||||||
rootJ.addProperty(Tags.NAME, element.getName());
|
rootJ.addProperty(Tags.NAME, element.getName());
|
||||||
|
|
Loading…
Reference in New Issue