====== PADL Generator ======
In general, a code-level model can be obtain for a system through reverse-engineering/parsing using:
final ICodeLevelModel codeLevelModel =
Factory.getInstance().createCodeLevelModel();
codeLevelModel.create(
new Creator(
.getInstance(),
new String[] { }), );
where:
* can be any String;
* Creator is any class implementing the ICodeLevelModelCreator interface. A creator is the concrete parser or reverse-engineering algorithm that builds a PADL model from some files;
* is any class implementing the IFileRepository interface. A file repository allows the meta-model and the creator to access necessary PADL resources (constituents, analyses, etc.) in a platform-independent way;
* are any String pointing towards the files/directories to be parsed, as required by the creator;
* is a Boolean flag that allow you to specify only the top most directory of a set of source files.
Because all PADL creators are builders (as in the Builder design pattern) and conform to the same interface ''padl.kernel.ICodeLevelModelCreator'' provided by [[PADL]], it is simple to provide a unified entry point for all of them. Also, the creation of interesting models often require the additional steps of:
- Annotating the models with information about lines of code;
- Annotating the models with information about conditional statements;
- Adding appropriate listeners (if desired);
- Handling special files, such as Eclipse ''.project'' files or AOL CLD files;
- ...
So, the class ''padl.generator.helper.ModelGenerator'' in the project ''PADL Generator'' provides this entry point and should be used unless there are compelling reasons not to do so. The direct use of a creator will throw a warning at run-time.