// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/data/Attribute.java
// public interface Attribute {
// 
// 	/**
// 	 * Returns the ID of the Attribute
// 	 * @return the ID as String
// 	 */
// 	String getId();
// 	
// 	/**
// 	 * Returns the title of the Attribute
// 	 * @return the title as String
// 	 */
// 	String getTitle();
// 	
// 	/**
// 	 * Sets the title of the Attribute
// 	 * @param title the Attribute's title as String
// 	 * @return the current Attribute
// 	 */
// 	Attribute setTitle(String title);
// 	
// 	/**
// 	 * Returns the type of the Attribute
// 	 * @return an AttributeType enum for that Attribute
// 	 */
// 	AttributeType getAttributeType();
// 	
// 	/**
// 	 * Checks if the Attribute has a default value
// 	 * @return true if the Attribute has a default value
// 	 */
// 	boolean hasDefaultValue();
// 	
// 	/**
// 	 * Clears the default value of the Attribute
// 	 * @return the current Attribute
// 	 */
// 	Attribute clearDefaultValue();
// 	
// 	/**
// 	 * Returns the default value of the Attribute
// 	 * @return the default value as String
// 	 */
// 	String getDefaultValue();
// 	
// 	/**
// 	 * Sets the default value of the Attribute
// 	 * @param defaultValue the default value as String
// 	 * @return the current Attribute
// 	 */
// 	Attribute setDefaultValue(String defaultValue);
// 	
// 	/**
// 	 * Returns the list of the Attribute's options
// 	 * @return the list of the options
// 	 */
// 	List<String> getOptions();
// 	
// 	/**
// 	 * Creates a value for that Attribute
// 	 * @param value the value of the Attribute as String
// 	 * @return an instance of the AttributeValue class
// 	 */
// 	AttributeValue createValue(String value);
// }
// 
// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/data/AttributeType.java
// public enum AttributeType {
// 
// 	INTEGER,
// 	LONG,
// 	DOUBLE,
// 	FLOAT,
// 	BOOLEAN,
// 	STRING,
// 	LISTSTRING,
// 	ANYURI,
// }
// 
// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/data/AttributeValue.java
// public interface AttributeValue extends Dynamic<AttributeValue> {
// 
// 	/**
// 	 * Returns the Attribute
// 	 * @return an instance of the Attribute class
// 	 */
// 	Attribute getAttribute();
// 	
// 	/**
// 	 * Returns the value of the Attribute
// 	 * @return the value as String
// 	 */
// 	String getValue();
// 	
// 	/**
// 	 * Sets the value for that Attribute
// 	 * @param value the value of the Attribute
// 	 * @return the current AttributeValue
// 	 */
// 	AttributeValue setValue(String value);
// }


import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import it.uniroma1.dis.wsngroup.gexf4j.core.data.Attribute;
import it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeType;
import it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeValue;
import java.util.ArrayList;
import java.util.List;

	@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.");
// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/data/Attribute.java
// public interface Attribute {
// 
// 	/**
// 	 * Returns the ID of the Attribute
// 	 * @return the ID as String
// 	 */
// 	String getId();
// 	
// 	/**
// 	 * Returns the title of the Attribute
// 	 * @return the title as String
// 	 */
// 	String getTitle();
// 	
// 	/**
// 	 * Sets the title of the Attribute
// 	 * @param title the Attribute's title as String
// 	 * @return the current Attribute
// 	 */
// 	Attribute setTitle(String title);
// 	
// 	/**
// 	 * Returns the type of the Attribute
// 	 * @return an AttributeType enum for that Attribute
// 	 */
// 	AttributeType getAttributeType();
// 	
// 	/**
// 	 * Checks if the Attribute has a default value
// 	 * @return true if the Attribute has a default value
// 	 */
// 	boolean hasDefaultValue();
// 	
// 	/**
// 	 * Clears the default value of the Attribute
// 	 * @return the current Attribute
// 	 */
// 	Attribute clearDefaultValue();
// 	
// 	/**
// 	 * Returns the default value of the Attribute
// 	 * @return the default value as String
// 	 */
// 	String getDefaultValue();
// 	
// 	/**
// 	 * Sets the default value of the Attribute
// 	 * @param defaultValue the default value as String
// 	 * @return the current Attribute
// 	 */
// 	Attribute setDefaultValue(String defaultValue);
// 	
// 	/**
// 	 * Returns the list of the Attribute's options
// 	 * @return the list of the options
// 	 */
// 	List<String> getOptions();
// 	
// 	/**
// 	 * Creates a value for that Attribute
// 	 * @param value the value of the Attribute as String
// 	 * @return an instance of the AttributeValue class
// 	 */
// 	AttributeValue createValue(String value);
// }
// 
// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/data/AttributeType.java
// public enum AttributeType {
// 
// 	INTEGER,
// 	LONG,
// 	DOUBLE,
// 	FLOAT,
// 	BOOLEAN,
// 	STRING,
// 	LISTSTRING,
// 	ANYURI,
// }
// 
// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/data/AttributeValue.java
// public interface AttributeValue extends Dynamic<AttributeValue> {
// 
// 	/**
// 	 * Returns the Attribute
// 	 * @return an instance of the Attribute class
// 	 */
// 	Attribute getAttribute();
// 	
// 	/**
// 	 * Returns the value of the Attribute
// 	 * @return the value as String
// 	 */
// 	String getValue();
// 	
// 	/**
// 	 * Sets the value for that Attribute
// 	 * @param value the value of the Attribute
// 	 * @return the current AttributeValue
// 	 */
// 	AttributeValue setValue(String value);
// }


// Path: src/main/java/it/uniroma1/dis/wsngroup/gexf4j/core/impl/data/AttributeImpl.java
import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkState;
import it.uniroma1.dis.wsngroup.gexf4j.core.data.Attribute;
import it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeType;
import it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeValue;
import java.util.ArrayList;
import java.util.List;


	@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;