package org.jsondoc.core.pojo.flow; import java.util.LinkedList; import java.util.List; import java.util.UUID; import org.jsondoc.core.annotation.flow.ApiFlow; import org.jsondoc.core.annotation.flow.ApiFlowStep; import org.jsondoc.core.pojo.ApiMethodDoc; public class ApiFlowDoc implements Comparable<ApiFlowDoc> { public final String jsondocId = UUID.randomUUID().toString(); private String name; private String description; private List<String> preconditions; private List<ApiFlowStepDoc> steps; private List<ApiMethodDoc> methods; private String group; public static ApiFlowDoc buildFromAnnotation(ApiFlow annotation, List<ApiMethodDoc> apiMethodDocs) { ApiFlowDoc apiFlowDoc = new ApiFlowDoc(); apiFlowDoc.setDescription(annotation.description()); apiFlowDoc.setName(annotation.name()); apiFlowDoc.setGroup(annotation.group()); for (String precondition : annotation.preconditions()) { apiFlowDoc.addPrecondition(precondition); } for (ApiFlowStep apiFlowStep : annotation.steps()) { ApiFlowStepDoc apiFlowStepDoc = ApiFlowStepDoc.buildFromAnnotation(apiFlowStep, apiMethodDocs); apiFlowDoc.addStep(apiFlowStepDoc); apiFlowDoc.addMethod(apiFlowStepDoc.getApimethoddoc()); } return apiFlowDoc; } public ApiFlowDoc() { this.preconditions = new LinkedList<String>(); this.steps = new LinkedList<ApiFlowStepDoc>(); this.methods = new LinkedList<ApiMethodDoc>(); } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getGroup() { return group; } public void setGroup(String group) { this.group = group; } public void addStep(ApiFlowStepDoc apiFlowStepDoc) { this.steps.add(apiFlowStepDoc); } public List<ApiFlowStepDoc> getSteps() { return steps; } public void setSteps(List<ApiFlowStepDoc> steps) { this.steps = steps; } public List<String> getPreconditions() { return preconditions; } public void setPreconditions(List<String> preconditions) { this.preconditions = preconditions; } public void addPrecondition(String precondition) { this.preconditions.add(precondition); } public List<ApiMethodDoc> getMethods() { return methods; } public void setMethods(List<ApiMethodDoc> methods) { this.methods = methods; } public void addMethod(ApiMethodDoc method) { this.methods.add(method); } @Override public int compareTo(ApiFlowDoc o) { return name.compareTo(o.getName()); } }