package ecologylab.bigsemantics.metametadata.declarations; import java.util.ArrayList; import ecologylab.bigsemantics.metametadata.DefVar; import ecologylab.bigsemantics.metametadata.MetaMetadata; import ecologylab.bigsemantics.metametadata.MetaMetadataField; import ecologylab.bigsemantics.metametadata.mm_dont_inherit; import ecologylab.generic.HashMapArrayList; import ecologylab.serialization.annotations.simpl_collection; import ecologylab.serialization.annotations.simpl_composite; import ecologylab.serialization.annotations.simpl_nowrap; import ecologylab.serialization.annotations.simpl_scalar; import ecologylab.serialization.annotations.simpl_tag; public abstract class MetaMetadataNestedFieldDeclaration extends MetaMetadataField { @simpl_scalar @simpl_tag("package") private String packageName; /** * The polymorphic scope (@simp_scope) for this field. */ @simpl_scalar private String polymorphicScope; /** * Comma-separated classes for polymorphic classes (@simpl_classes) for this field. */ @simpl_scalar private String polymorphicClasses; @simpl_scalar private String schemaOrgItemtype; /** * Used as variables during the extraction and semantic action processes. */ @simpl_collection("def_var") @simpl_nowrap private ArrayList<DefVar> defVars; /** * If children should be displayed at this level. */ @simpl_scalar private boolean promoteChildren; @simpl_scalar private boolean showExpandedInitially; @simpl_scalar private boolean showExpandedAlways; @simpl_scalar private boolean dontShowExpandedInitially; @simpl_scalar private boolean dontShowExpandedAlways; /** * Should we generate a metadata class descriptor for this field. used by the compiler. */ @simpl_scalar @mm_dont_inherit private boolean newMetadataClass; /** * The mmd that defined the type this nested field uses. could be a generated one for inline * definitions. * * Corresponding attributes: (child_)type/extends. */ @simpl_composite @mm_dont_inherit private MetaMetadata typeMmd; @simpl_scalar @mm_dont_inherit private boolean covariant; public MetaMetadataNestedFieldDeclaration() { super(); } public MetaMetadataNestedFieldDeclaration(String name, HashMapArrayList<String, MetaMetadataField> childrenMap) { super(name, childrenMap); } public MetaMetadataNestedFieldDeclaration(MetaMetadataField copy, String name) { super(copy, name); } public String getPackageName() { return this.packageName; } public String getPolymorphicScope() { return this.polymorphicScope; } public String getPolymorphicClasses() { return this.polymorphicClasses; } @Override public String getSchemaOrgItemtype() { return schemaOrgItemtype; } public ArrayList<DefVar> getDefVars() { return defVars; } public boolean isPromoteChildren() { return promoteChildren; } public boolean isShowExpandedInitially() { return showExpandedInitially; } public boolean isShowExpandedAlways() { return showExpandedAlways; } public boolean isDontShowExpandedInitially() { return dontShowExpandedInitially; } public boolean isDontShowExpandedAlways() { return dontShowExpandedAlways; } /** * Should we generate a metadata class descriptor for this field. Used by the compiler. * * @return */ public boolean isNewMetadataClass() { return newMetadataClass; } /** * @return The meta-metadata defining the type used by this field. */ public MetaMetadata getTypeMmd() { return typeMmd; } public boolean isCovariant() { return covariant; } public void setPackageName(String packageName) { this.packageName = packageName; } public void setSchemaOrgItemtype(String schemaOrgItemtype) { this.schemaOrgItemtype = schemaOrgItemtype; } public void setPromoteChildren(boolean promoteChildren) { this.promoteChildren = promoteChildren; } /** * set the flag of generating (or not) metadata class descriptoer. * * @param newMetadataClass * @see isGenerateClassDescriptor */ public void setNewMetadataClass(boolean newMetadataClass) { this.newMetadataClass = newMetadataClass; } /** * Set the type meta-metadata of this field. * * @param typeMmd */ public void setTypeMmd(MetaMetadata typeMmd) { this.typeMmd = typeMmd; } public void setCovariant(boolean covariant) { this.covariant = covariant; } }