Class BaseObjectCodeWriter

java.lang.Object
com.metaobjects.io.MetaDataWriter
All Implemented Interfaces:
com.metaobjects.io.MetaDataIO
Direct Known Subclasses:
JavaCodeWriter

public abstract class BaseObjectCodeWriter extends FileDirectWriter<BaseObjectCodeWriter>
Base class for Object Code Writers that support language-agnostic object generation. This provides common functionality for writing code from MetaObjects while allowing language-specific implementations to customize syntax and conventions.
  • Field Details

    • debug

      protected boolean debug
    • context

      protected GenerationContext context
    • filteredObjects

      protected Collection<com.metaobjects.object.MetaObject> filteredObjects
    • type

      protected String type
    • pkgPrefix

      protected String pkgPrefix
    • pkgSuffix

      protected String pkgSuffix
    • namePrefix

      protected String namePrefix
    • nameSuffix

      protected String nameSuffix
    • addArrays

      protected boolean addArrays
    • addKeys

      protected boolean addKeys
    • metaObject

      protected com.metaobjects.object.MetaObject metaObject
    • pkg

      protected String pkg
    • name

      protected String name
    • superPkg

      protected String superPkg
    • superName

      protected String superName
    • fullSuperName

      protected String fullSuperName
    • superObject

      protected com.metaobjects.object.MetaObject superObject
    • objectReferenceMap

      protected Map<com.metaobjects.field.MetaField,com.metaobjects.object.MetaObject> objectReferenceMap
    • importList

      protected List<String> importList
    • pkgPrefixMap

      protected Map<com.metaobjects.object.MetaObject,String> pkgPrefixMap
  • Constructor Details

    • BaseObjectCodeWriter

      public BaseObjectCodeWriter(com.metaobjects.loader.MetaDataLoader loader, PrintWriter pw)
    • BaseObjectCodeWriter

      public BaseObjectCodeWriter(com.metaobjects.loader.MetaDataLoader loader, PrintWriter pw, GenerationContext context)
  • Method Details

    • getLanguageType

      protected abstract String getLanguageType(com.metaobjects.field.MetaField field)
      Get the language-specific type mapping for a MetaField
    • getGetterMethodName

      protected abstract String getGetterMethodName(com.metaobjects.field.MetaField field)
      Get the language-specific getter method name for a field
    • getSetterMethodName

      protected abstract String getSetterMethodName(com.metaobjects.field.MetaField field)
      Get the language-specific setter method name for a field
    • getParameterName

      protected abstract String getParameterName(com.metaobjects.field.MetaField field)
      Get the language-specific parameter name for a field
    • getClassName

      protected abstract String getClassName(com.metaobjects.object.MetaObject mo)
      Get the language-specific class/type name for a MetaObject
    • writeGetter

      protected abstract void writeGetter(String getterName, String typeName, com.metaobjects.field.MetaField field)
      Write language-specific getter method
    • writeSetter

      protected abstract void writeSetter(String setterName, String paramName, String typeName, com.metaobjects.field.MetaField field)
      Write language-specific setter method
    • writeObjectHeader

      protected abstract void writeObjectHeader(List<String> docs, String pkg, String name, List<String> importList, String fullSuperName)
      Write language-specific object header (class/interface declaration)
    • writeObjectFooter

      protected abstract void writeObjectFooter()
      Write language-specific object footer
    • writeComment

      protected abstract void writeComment(String comment)
      Write language-specific comment
    • writeNewLine

      protected abstract void writeNewLine()
      Write language-specific new line
    • getLanguagePackage

      protected abstract String getLanguagePackage(com.metaobjects.object.MetaObject mo)
      Get the language-specific package name from a MetaObject
    • getLanguageNameAttribute

      protected abstract String getLanguageNameAttribute()
      Get the language-specific attribute name for custom field names
    • forType

      public BaseObjectCodeWriter forType(String type)
    • withPkgPrefix

      public BaseObjectCodeWriter withPkgPrefix(String pkgPrefix)
    • withPkgSuffix

      public BaseObjectCodeWriter withPkgSuffix(String pkgSuffix)
    • withNamePrefix

      public BaseObjectCodeWriter withNamePrefix(String namePrefix)
    • withNameSuffix

      public BaseObjectCodeWriter withNameSuffix(String nameSuffix)
    • addArrayMethods

      public BaseObjectCodeWriter addArrayMethods(boolean addArrays)
    • addKeyMethods

      public BaseObjectCodeWriter addKeyMethods(boolean addKeys)
    • withContext

      public BaseObjectCodeWriter withContext(GenerationContext context)
    • getContext

      public GenerationContext getContext()
    • writeObject

      public String writeObject(com.metaobjects.object.MetaObject mo) throws GeneratorIOException
      Throws:
      GeneratorIOException
    • writeObjectMethods

      protected void writeObjectMethods(com.metaobjects.object.MetaObject mo)
    • initVariables

      protected void initVariables(com.metaobjects.object.MetaObject mo)
    • initObjectReferenceMap

      protected void initObjectReferenceMap(com.metaobjects.object.MetaObject mo)
    • initPackagePrefixMap

      protected void initPackagePrefixMap(Collection<com.metaobjects.object.MetaObject> refObjects)
    • initImportList

      protected void initImportList(Collection<com.metaobjects.object.MetaObject> refObjects)
    • addPackagePrefixToMap

      protected void addPackagePrefixToMap(com.metaobjects.object.MetaObject refmo)
    • isNotBlank

      protected boolean isNotBlank(String str)