package com.ojn.gexf4j.core.impl.data; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkState; import java.util.ArrayList; import java.util.List; import com.ojn.gexf4j.core.data.Attribute; import com.ojn.gexf4j.core.data.AttributeType; import com.ojn.gexf4j.core.data.AttributeValue; public class AttributeImpl implements Attribute { private String id = ""; private String defaultValue = null; private AttributeType type = AttributeType.STRING; private List<String> options = null; private String title = ""; public AttributeImpl(String id, AttributeType type, String title) { checkArgument(id != null, "ID cannot be null."); checkArgument(!id.trim().isEmpty(), "ID cannot be empty or blank."); checkArgument(title != null, "Title cannot be null."); checkArgument(!title.trim().isEmpty(), "Title cannot be null or blank."); this.id = id; this.type = type; this.options = new ArrayList<String>(); this.title = title; } @Override public Attribute clearDefaultValue() { defaultValue = null; return this; } @Override public AttributeType getAttributeType() { return type; } @Override public String getDefaultValue() { checkState(hasDefaultValue(), "Default Value has not been set."); return defaultValue; } @Override public String getId() { return id; } @Override public List<String> getOptions() { return options; } @Override public String getTitle() { return title; } @Override public boolean hasDefaultValue() { return (defaultValue != null); } @Override public Attribute setDefaultValue(String defaultValue) { checkArgument(defaultValue != null, "Default Value cannot be null."); this.defaultValue = defaultValue; return this; } @Override public Attribute setTitle(String title) { checkArgument(title != null, "Title cannot be null."); checkArgument(title.trim().isEmpty(), "Title cannot be null or blank."); this.title = title; return this; } @Override public AttributeValue createValue(String value) { checkArgument(value != null, "Value cannot be null."); AttributeValue rv = new AttributeValueImpl(this); rv.setValue(value); return rv; } }