package org.lazydoc.model;
import org.apache.commons.lang3.StringUtils;
import java.util.*;
import static org.apache.commons.lang3.StringUtils.removeEnd;
public class DocProperty implements Comparable<DocProperty> {
private int order = Integer.MAX_VALUE;
private String name = "";
private String description = "";
private String mapKeyDescription = "";
private String mapValueDescription = "";
private String type = "";
private String[] sample = {};
private Set<DocEnum> enumValues = new TreeSet<>();
private boolean addEnumValues = true;
private boolean required = false;
private boolean request = true;
private boolean response = true;
private boolean list = false;
private boolean map = false;
private boolean deprecated = false;
private boolean primitive = false;
private boolean requestNullValueSample = true;
private boolean responseNullValueSample = true;
public boolean hasEnumValues() {
return !enumValues.isEmpty();
}
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 getType() {
return type;
}
public void setType(String type) {
this.type = removeEnd(type, "VO");
}
public String getSampleString() {
if (sample.length == 1) {
return "\"" + sample[0] + "\"";
} else {
return "[\"" + StringUtils.join(sample, "\",\"") + "\"]";
}
}
public String[] getSample() {
return sample;
}
public void setSample(String[] sample) {
this.sample = sample;
}
public boolean isRequired() {
return required;
}
public void setRequired(boolean required) {
this.required = required;
}
public boolean isRequest() {
return request;
}
public void setRequest(boolean request) {
this.request = request;
}
public boolean isResponse() {
return response;
}
public void setResponse(boolean response) {
this.response = response;
}
public boolean isList() {
return list;
}
public void setList(boolean list) {
this.list = list;
}
public boolean hasSample() {
return sample.length > 0;
}
public boolean isDeprecated() {
return deprecated;
}
public void setDeprecated(boolean deprecated) {
this.deprecated = deprecated;
}
public int getOrder() {
return order;
}
public void setOrder(int order) {
this.order = order;
}
public String getMapKeyDescription() {
return mapKeyDescription;
}
public void setMapKeyDescription(String mapKeyDescription) {
this.mapKeyDescription = mapKeyDescription;
}
public String getMapValueDescription() {
return mapValueDescription;
}
public void setMapValueDescription(String mapValueDescription) {
this.mapValueDescription = mapValueDescription;
}
public boolean isMap() {
return map;
}
public void setMap(boolean map) {
this.map = map;
}
public boolean isPrimitive() {
return primitive;
}
public void setPrimitive(boolean primitive) {
this.primitive = primitive;
}
public boolean isRequestNullValueSample() {
return requestNullValueSample;
}
public void setRequestNullValueSample(boolean requestNullValueSample) {
this.requestNullValueSample = requestNullValueSample;
}
public boolean isResponseNullValueSample() {
return responseNullValueSample;
}
public void setResponseNullValueSample(boolean responseNullValueSample) {
this.responseNullValueSample = responseNullValueSample;
}
public Set<DocEnum> getEnumValues() {
return enumValues;
}
public void setEnumValues(Set<DocEnum> enumValues) {
this.enumValues = enumValues;
}
public boolean isAddEnumValues() {
return addEnumValues;
}
public void setAddEnumValues(boolean addEnumValues) {
this.addEnumValues = addEnumValues;
}
@Override
public int compareTo(DocProperty property) {
int compareResult = Integer.compare(this.order, property.order);
if(compareResult == 0) {
if(this.required == property.required) {
return this.name.compareTo(property.name);
} else {
return this.required ? -1 : 1;
}
}
return compareResult;
}
@Override
public String toString() {
return "DocProperty{" +
"order=" + order +
", name='" + name + '\'' +
", description='" + description + '\'' +
", mapKeyDescription='" + mapKeyDescription + '\'' +
", mapValueDescription='" + mapValueDescription + '\'' +
", type='" + type + '\'' +
", sample=" + Arrays.toString(sample) +
", enumValues=" + enumValues +
", required=" + required +
", request=" + request +
", response=" + response +
", list=" + list +
", map=" + map +
", deprecated=" + deprecated +
", primitive=" + primitive +
", requestNullValueSample=" + requestNullValueSample +
", responseNullValueSample=" + responseNullValueSample +
'}';
}
}