io.ebeanservice.docstore.api.mapping.DocPropertyMapping Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ebean Show documentation
Show all versions of ebean Show documentation
composite of common runtime dependencies for all platforms
package io.ebeanservice.docstore.api.mapping;
import io.ebean.annotation.DocMapping;
import java.util.ArrayList;
import java.util.List;
/**
* Property mapping in a doc store document structure.
*/
public class DocPropertyMapping {
private String name;
private DocPropertyType type;
private DocPropertyOptions options;
private List children = new ArrayList<>();
/**
* Construct ROOT.
*/
public DocPropertyMapping() {
this.type = DocPropertyType.ROOT;
}
/**
* Construct property mapping.
*/
public DocPropertyMapping(String name, DocPropertyType type) {
this.type = type;
this.name = name;
this.options = new DocPropertyOptions();
}
/**
* Construct property mapping with options.
*/
public DocPropertyMapping(String name, DocPropertyType type, DocPropertyOptions options) {
this.name = name;
this.type = type;
this.options = options;
}
/**
* Visit this property and any nested children.
*/
public void visit(DocPropertyVisitor visitor) {
switch (type) {
case ROOT:
visitor.visitBegin();
visitChildren(visitor);
visitor.visitEnd();
break;
case OBJECT:
visitor.visitBeginObject(this);
visitChildren(visitor);
visitor.visitEndObject(this);
break;
case LIST:
visitor.visitBeginList(this);
visitChildren(visitor);
visitor.visitEndList(this);
break;
default:
visitor.visitProperty(this);
}
}
private void visitChildren(DocPropertyVisitor visitor) {
for (DocPropertyMapping property : children) {
property.visit(visitor);
}
}
@Override
public String toString() {
return "name:" + name + " type:" + type + " options(" + options + ")";
}
/**
* Return the type of the property.
*/
public DocPropertyType getType() {
return type;
}
/**
* Set the type of the property.
*/
public void setType(DocPropertyType type) {
this.type = type;
}
/**
* Return the property name.
*/
public String getName() {
return name;
}
/**
* Return the property options.
*/
public DocPropertyOptions getOptions() {
return options;
}
/**
* Return the child nested properties.
*/
public List getChildren() {
return children;
}
/**
* Add a child property.
*/
public void addChild(DocPropertyMapping docMapping) {
children.add(docMapping);
}
/**
* Apply mapping options to this property.
*/
public void apply(DocMapping docMapping) {
options.apply(docMapping);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy