Class BaseObjectCodeGenerator
java.lang.Object
com.metaobjects.generator.GeneratorBase
com.metaobjects.generator.direct.DirectGeneratorBase
com.metaobjects.generator.direct.MultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>
com.metaobjects.generator.direct.object.BaseObjectCodeGenerator
- All Implemented Interfaces:
Generator
- Direct Known Subclasses:
JavaCodeGenerator
public abstract class BaseObjectCodeGenerator
extends MultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>
Base class for Object Code Generators providing language-agnostic functionality
for generating code from MetaObjects.
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringstatic final Stringprotected com.metaobjects.loader.MetaDataLoaderprotected static final Stringprotected static final Stringprotected static final Stringprotected GenerationContextFields inherited from class com.metaobjects.generator.direct.MultiFileDirectGeneratorBase
ARG_FINALOUTPUTDIR, finalOutDir, outDirFields inherited from class com.metaobjects.generator.direct.DirectGeneratorBase
logFields inherited from class com.metaobjects.generator.GeneratorBase
ARG_OUTPUTDIR, ARG_OUTPUTFILENAME -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbooleanbooleanprotected voidConfigure the global context with common settingsprotected abstract StringConvert name to language-specific naming conventions (e.g., PascalCase, camelCase, snake_case)protected voidcopyContextSettings(GenerationContext source, GenerationContext target) Copy settings from global context to file contextprotected abstract BaseObjectCodeWritercreateWriter(com.metaobjects.loader.MetaDataLoader loader, com.metaobjects.object.MetaObject md, PrintWriter pw, GenerationContext context) Create a language-specific writer instanceprotected abstract StringGet the default type for this languageprotected abstract StringGet the file extension for this language (e.g., ".java", ".cs", ".ts", ".py")protected Class<com.metaobjects.object.MetaObject> protected abstract StringGet the name of the target language for logging purposesprotected charGet the path separator for this target language/platformprotected StringgetSingleOutputFilename(com.metaobjects.object.MetaObject md) protected StringgetSingleOutputFilePath(com.metaobjects.object.MetaObject md) protected GeneratorIOWritergetSingleWriter(com.metaobjects.loader.MetaDataLoader loader, com.metaobjects.object.MetaObject md, PrintWriter pw) protected abstract String[]Get the supported object types for this language (e.g., "interface", "class", "struct")getType()protected booleanisNotBlank(String str) protected voidOverride this to handle argument parsing and validationtoString()withGlobalContext(GenerationContext context) protected voidwriteSingleFile(com.metaobjects.object.MetaObject mo, GeneratorIOWriter<?> writer) Methods inherited from class com.metaobjects.generator.direct.MultiFileDirectGeneratorBase
execute, getFinalOutputDir, getFinalWriter, writeFinalFileMethods inherited from class com.metaobjects.generator.direct.DirectGeneratorBase
setScriptsMethods inherited from class com.metaobjects.generator.GeneratorBase
getAndCreateDir, getArg, getArg, getArg, getArgs, getFilters, getMetaDataFilters, getOutputDir, getOutputFilename, getScripts, hasArg, setArgs, setFilters
-
Field Details
-
ARG_TYPE
- See Also:
-
ARG_PKGPREFIX
- See Also:
-
ARG_PKGSUFFIX
- See Also:
-
ARG_NAMEPREFIX
- See Also:
-
ARG_NAMESUFFIX
- See Also:
-
ARG_OPTARRAYS
- See Also:
-
ARG_OPTKEYS
- See Also:
-
ARG_DEBUG
- See Also:
-
ERROR_FINALOUTPUTDIR_REQUIRED
-
ERROR_TYPE_REQUIRED
- See Also:
-
ERROR_TYPE_INVALID
- See Also:
-
objectNameMap
-
globalContext
-
currentLoader
protected com.metaobjects.loader.MetaDataLoader currentLoader
-
-
Constructor Details
-
BaseObjectCodeGenerator
public BaseObjectCodeGenerator()
-
-
Method Details
-
getSupportedTypes
Get the supported object types for this language (e.g., "interface", "class", "struct") -
getDefaultType
Get the default type for this language -
createWriter
protected abstract BaseObjectCodeWriter createWriter(com.metaobjects.loader.MetaDataLoader loader, com.metaobjects.object.MetaObject md, PrintWriter pw, GenerationContext context) Create a language-specific writer instance -
getFileExtension
Get the file extension for this language (e.g., ".java", ".cs", ".ts", ".py") -
withGlobalContext
-
parseArgs
protected void parseArgs()Description copied from class:DirectGeneratorBaseOverride this to handle argument parsing and validation- Overrides:
parseArgsin classMultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>
-
getType
-
getPkgPrefix
-
getPkgSuffix
-
getNamePrefix
-
getNameSuffix
-
addArrayMethods
public boolean addArrayMethods() -
addKeyMethods
public boolean addKeyMethods() -
getFilterClass
- Specified by:
getFilterClassin classMultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>
-
getSingleWriter
protected GeneratorIOWriter getSingleWriter(com.metaobjects.loader.MetaDataLoader loader, com.metaobjects.object.MetaObject md, PrintWriter pw) throws GeneratorIOException - Specified by:
getSingleWriterin classMultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>- Throws:
GeneratorIOException
-
configureGlobalContext
protected void configureGlobalContext()Configure the global context with common settings -
copyContextSettings
Copy settings from global context to file context -
writeSingleFile
protected void writeSingleFile(com.metaobjects.object.MetaObject mo, GeneratorIOWriter<?> writer) throws GeneratorIOException - Specified by:
writeSingleFilein classMultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>- Throws:
GeneratorIOException
-
getLanguageName
Get the name of the target language for logging purposes -
getSingleOutputFilePath
- Specified by:
getSingleOutputFilePathin classMultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>
-
getPathSeparator
protected char getPathSeparator()Get the path separator for this target language/platform -
getSingleOutputFilename
- Specified by:
getSingleOutputFilenamein classMultiFileDirectGeneratorBase<com.metaobjects.object.MetaObject>
-
convertToLanguageNaming
Convert name to language-specific naming conventions (e.g., PascalCase, camelCase, snake_case) -
isNotBlank
-
toString
- Overrides:
toStringin classGeneratorBase
-