package nebula.lang; import util.InheritHashMap; public class Field { public static final String SingleLine = "SingleLine"; public static final String ShouldBeLeader = "ShouldBeLeader"; public static final String Heading = "Heading"; public static final String OnSave = "OnSave"; public static final String ComputeBackend = "ComputeBackend"; public static final String RequiredOn = "RequiredOn"; public static final String DisplayOn = "DisplayOn"; public static final String Transparent = "Transparent"; final String name; Aliases nameAlias; int modifiers = 0; Code code; Code onChangeCode; EntityAction onChangeAsm; EntityExpression exprAsm; EntityAction actionAsm; final Type resideType; boolean array = false; int rangeFrom = 0; int rangeTo = Integer.MAX_VALUE; Type type; Reference refer; InheritHashMap attrs; boolean internal = false; public Field(Type resideType, String name) { super(); this.name = name; this.resideType = resideType; this.attrs = new InheritHashMap(); } public String getDisplayName() { return this.nameAlias.defaultValue; } public boolean isKey() { return Modifier.isKey(modifiers); } public boolean isUnique() { return Modifier.isUnique(modifiers); } public boolean isCore() { return Modifier.isCore(modifiers); } public boolean isIgnorable() { return Modifier.isNullable(modifiers);// || // (!Modifier.isRequired(modifiers) // && // Modifier.isDefaultValue(modifiers)); } public boolean isRequired() { return !isIgnorable(); } public boolean isNullable() { return isIgnorable(); } public boolean isArray() { return array; } public void setArray(boolean array) { this.array = array; } public Type getType() { return type; } public void setType(Type type) { this.type = type; this.attrs.setDefaults(type.getAttrs()); } public Reference getRefer() { return refer; } public void setRefer(Reference refer) { this.refer = refer; } public String getName() { return name; } public Type getResideType() { return resideType; } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append("Field [name=").append(name).append(", displayName=").append(getDisplayName()).append(", array=").append(array).append(", from=") .append(refer).append("]"); return builder.toString(); } public InheritHashMap getAttrs() { return attrs; } public Aliases getNameAlias() { return nameAlias; } public boolean isDerived() { return Modifier.isDerived(modifiers); } public boolean isTransparent() { return Modifier.isTransparent(modifiers) || Modifier.isDerived(modifiers); } public boolean isDefaultValue() { return Modifier.isDefaultValue(modifiers); } public boolean isPrimaryType() { return this.type.getStandalone() == TypeStandalone.Basic; } public boolean isInline() { return this.refer == Reference.Inline; } public boolean isByVal() { return this.refer == Reference.ByVal; } public boolean isByRef() { return this.refer == Reference.ByRef; } public boolean isCascade() { return this.refer == Reference.Cascade; } public void setNameAlias(Aliases nameAlias) { this.nameAlias = nameAlias; } public boolean isInternal() { return internal; } public Code getCode() { return code; } public EntityExpression getExprAsm() { return exprAsm; } public EntityAction getActionAsm() { return actionAsm; } public Code getOnChangeCode() { return onChangeCode; } }