package pt.ist.fenixframework.dml;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.Set;
public class Slot implements Serializable {
public enum Option { REQUIRED }
private String name;
private ValueType type;
private Set<Option> slotOptions = EnumSet.noneOf(Option.class);
private List<Annotation> annotations = new ArrayList<Annotation>();
public Slot(String name, ValueType type) {
this.name = name;
this.type = type;
}
public String getName() {
return name;
}
@Deprecated
public String getType() {
return getTypeName();
}
public ValueType getSlotType() {
return type;
}
public String getTypeName() {
return type.getFullname();
}
public void addOption(Option option) {
slotOptions.add(option);
}
public Set<Option> getOptions() {
return slotOptions;
}
public boolean hasOption(Option option) {
return slotOptions.contains(option);
}
public void addAnnotation(Annotation annotation) {
annotations.add(annotation);
}
public List<Annotation> getAnnotations() {
return annotations;
}
public boolean hasAnnotation(Annotation annotation) {
return annotations.contains(annotation);
}
public boolean hasIndexedAnnotation() {
for (Annotation annotation : annotations) {
if (annotation.getName().equals(Annotation.INDEX_ANNOTATION)) {
return true;
}
}
return false;
}
// public void generateSlotDeclaration(CodeWriter out) {
// out.write(type);
// out.write(" ");
// out.write(name);
// out.writeln(";");
// }
// public void generateSlotAccessors(CodeWriter out) {
// // getter
// out.write("public ");
// out.write(type);
// out.write("get");
// out.write(capitalizeFirstChar(name));
// out.write("() ");
// out.newBlock();
// out.write("return getBodyForGet().");
// out.write(name);
// out.writeln(";");
// out.closeBlock();
// // setter
// out.write("public void ");
// out.write("set");
// out.write(capitalizeFirstChar(name));
// out.write("(");
// out.write(type);
// out.write(" ");
// out.write(name);
// out.write(") ");
// out.newBlock();
// out.write("getBodyForSet().");
// out.write(name);
// out.writeln(" = ");
// out.writeln(name);
// out.writeln(";");
// out.closeBlock();
// }
}