org.exolab.castor.builder

Class SingleClassGenerator

public class SingleClassGenerator extends Object

Writes a single class (and any associated inner classes) to a file.

Version: $Revision: 0000 $ $Date: $

Author: Keith Visco - Main author. Arnaud Blandin - Contributions. Nathan Green - Contributions. Edward Kuns - Separated from SourceGenerator

Constructor Summary
SingleClassGenerator(ConsoleDialog dialog, SourceGenerator sourceGenerator)
Creates an instance of this class.
Method Summary
booleanprocess(JClass[] classes, SGStateInfo state)
Processes the given JClasses, one by one, stopping if the SourceGenerator state indicates STOP after processing one class.
booleanprocess(JClass jClass, SGStateInfo state)
Processes the given JClass by checking for class name conflicts, and if there are none, making the class as processed and then printing the class and, if appropriate, its class descriptors.
booleanprocessIfNotAlreadyProcessed(Enumeration classKeys, SGStateInfo state)
Processes the JClass mapped by the provided key unless the JClass has already been processed.
voidsetDescriptorCreation(boolean createDescriptors)
Sets whether or not to create ClassDescriptors for the generated classes.
voidsetDestDir(String destDir)
Sets the destination directory.
voidsetLineSeparator(String lineSeparator)
Sets the line separator to use when printing the source code
voidsetPromptForOverwrite(boolean promptForOverwrite)
Sets whether or not to prompt when we would otherwise overwrite an existing JClass.

Constructor Detail

SingleClassGenerator

public SingleClassGenerator(ConsoleDialog dialog, SourceGenerator sourceGenerator)
Creates an instance of this class.

Parameters: dialog A ConsoleDialog instance sourceGenerator A SourceGenerator instance

Method Detail

process

boolean process(JClass[] classes, SGStateInfo state)
Processes the given JClasses, one by one, stopping if the SourceGenerator state indicates STOP after processing one class.

Parameters: classes Array of classes to process state SourceGenerator state

Returns: true if processing is allowed to continue, false if the SourceGenerator state is STOP_STATUS,

Throws: IOException If an already existing '.castor.cdr' file can not be loaded or found

process

boolean process(JClass jClass, SGStateInfo state)
Processes the given JClass by checking for class name conflicts, and if there are none, making the class as processed and then printing the class and, if appropriate, its class descriptors.

If there is a class name conflict, at best the user stops the source generation and at worst the user continues, skipping this class.

Parameters: jClass the class to process state SourceGenerator state

Returns: true if processing is allowed to continue, false if the SourceGenerator state is STOP_STATUS,

Throws: IOException If an already existing '.castor.cdr' file can not be loaded or found

processIfNotAlreadyProcessed

boolean processIfNotAlreadyProcessed(Enumeration classKeys, SGStateInfo state)
Processes the JClass mapped by the provided key unless the JClass has already been processed.

Parameters: state SourceGenerator state classKeys Enumeration over a collection of keys to ClassInfos

Returns: true if processing is allowed to continue, false if the SourceGenerator state is STOP_STATUS,

Throws: IOException If an already existing '.castor.cdr' file can not be loaded or found

setDescriptorCreation

public void setDescriptorCreation(boolean createDescriptors)
Sets whether or not to create ClassDescriptors for the generated classes. By default, descriptors are generated.

Parameters: createDescriptors a boolean, when true indicates to generated ClassDescriptors

setDestDir

public void setDestDir(String destDir)
Sets the destination directory.

Parameters: destDir the destination directory.

setLineSeparator

public void setLineSeparator(String lineSeparator)
Sets the line separator to use when printing the source code

Parameters: lineSeparator the line separator to use when printing the source code. This method is useful if you are generating source on one platform, but will be compiling the source on a different platform.

Note:This can be any string, so be careful. I recommend either using the default or using one of the following:

 windows systems use: "\r\n"
 unix systems use: "\n"
 mac systems use: "\r"
 

setPromptForOverwrite

public void setPromptForOverwrite(boolean promptForOverwrite)
Sets whether or not to prompt when we would otherwise overwrite an existing JClass. If set to false, then it is always OK to overwrite an existing class. If set to true, the user will be prompted.

Parameters: promptForOverwrite the new value

Intalio Inc. (C) 1999-2006. All rights reserved http://www.intalio.com