/**
*
*/
package com.ebay.cloud.cms.typsafe.metadata.model;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.codehaus.jackson.annotate.JsonIgnore;
import com.ebay.cloud.cms.typsafe.metadata.model.MetaRelationship.RelationTypeEnum;
/**
* @author liasu
*
*/
public class MetaClass {
private String name;
private String pluralName;
private String description;
private String parent;
private boolean allowFullTableScan;
private String _id;
private String repository;
private boolean embed;
private boolean inner;
private Map<String, MetaField> fields = new HashMap<String, MetaField>();
private MetaOption options = new MetaOption();
public final String getName() {
return name;
}
public final void setName(String name) {
this.name = name;
}
public final String getPluralName() {
return pluralName;
}
public final void setPluralName(String pluralName) {
this.pluralName = pluralName;
}
public final String getDescription() {
return description;
}
public final void setDescription(String description) {
this.description = description;
}
public final String getParent() {
return parent;
}
public final void setParent(String parent) {
this.parent = parent;
}
public final boolean isAllowFullTableScan() {
return allowFullTableScan;
}
public final void setAllowFullTableScan(boolean allowFullTableScan) {
this.allowFullTableScan = allowFullTableScan;
}
public final String get_id() {
return _id;
}
public final void set_id(String _id) {
this._id = _id;
}
public final String getRepository() {
return repository;
}
public final void setRepository(String repository) {
this.repository = repository;
}
public final boolean isEmbed() {
return embed;
}
public final void setEmbed(boolean embed) {
this.embed = embed;
}
public boolean isInner() {
return inner;
}
public void setInner(boolean inner) {
this.inner = inner;
}
public final Map<String, MetaField> getFields() {
return fields;
}
public final void setFields(Map<String, MetaField> fields) {
this.fields = fields;
}
public MetaOption getOptions() {
return options;
}
public void setOptions(MetaOption options) {
this.options = options;
}
@JsonIgnore
public final void addField(MetaField field) {
this.fields.put(field.getName(), field);
}
@JsonIgnore
public MetaField getField(String name) {
return this.fields.get(name);
}
@JsonIgnore
public boolean containsField(String name) {
return this.fields.containsKey(name);
}
// / help methods
@JsonIgnore
public List<MetaRelationship> getInnerFields() {
List<MetaRelationship> rels = new ArrayList<MetaRelationship>();
for (MetaField field : this.fields.values()) {
if (field instanceof MetaRelationship) {
MetaRelationship rel = (MetaRelationship) field;
if (RelationTypeEnum.Inner.equals(rel.getRelationType())) {
rels.add(rel);
}
}
}
return rels;
}
@JsonIgnore
public List<MetaRelationship> getEmbedFields() {
List<MetaRelationship> rels = new ArrayList<MetaRelationship>();
for (MetaField field : this.fields.values()) {
if (field instanceof MetaRelationship) {
MetaRelationship rel = (MetaRelationship) field;
if (RelationTypeEnum.Embedded.equals(rel.getRelationType())) {
rels.add(rel);
}
}
}
return rels;
}
}