How to duplicate a module

It is possible using the duplicate-module target of the Ant's build.xml file to duplicate an existing module located in the capsis4/src directory in order to create a new module having a new package name, a new module name and a new prefix. The user chooses the new package name and the new prefix, and the new module name is created automatically from the new package name.

In order to duplicate a module, you have to type the following command from the capsis4 directory:

On Linux/macOS:

sh ant duplicate-module -Dpackage.name=packagename -Dnew.package.name=newpackagename -Dnew.prefix=Newprefix

On Windows:

ant duplicate-module -Dpackage.name=packagename -Dnew.package.name=newpackagename -Dnew.prefix=Newprefix

where:
- packagename is the package name of the initial module (module to duplicate stored in capsis4/src directory);
- newpackagename and Newprefix are respectively the package name and the prefix of the new module (module to create in capsis4/src directory).

For example, the following command (on Linux/macOS):

sh ant duplicate-module -Dpackage.name=training -Dnew.package.name=training2 -Dnew.prefix=Tra2

will create from the training package (module name: Training) a new module having the following characteristics:
- package name: training2;
- module name: Training2 (default value generated from package name);
- prefix: Tra2.

Notes:
- The creation of the new module requires to give new names to files (.java source files and .properties translation files mainly) and classes contained in source files from the initial module.
- Local variables of the initial module whose name begins with the prefix (with a lowercase first letter) are also renamed.
Therefore, with the previous example, if the TraModel class (stored in TraModel.java) contains the following instruction:
TraScene traScene = (TraScene) step.getScene().getEvolutionBase();
then, the Tra2Model class (stored in Tra2Model.java) will contain the following instruction:
Tra2Scene tra2Scene = (Tra2Scene) step.getScene().getEvolutionBase();