All Downloads are FREE. Search and download functionalities are using the official Maven repository.

es.upm.dit.gsi.beast.reader.CreateCaseManager Maven / Gradle / Ivy

package es.upm.dit.gsi.beast.reader;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.logging.Logger;

/**
 * Main class that generates the CaseManager.java File to run all the test given
 * by our client.
 * 
 * @author Jorge Solitario
 */
public class CreateCaseManager {

    /**
     * This method creates CaseManager file and writes on it: the package, the
     * imports, its comments and the class name.
     * 
     * @param package_path
     *            as es.upm.dit...
     * @param dest_dir
     *            as src/main/java
     * 
     * @return the File the its first part written
     */
    public static File startCaseManager(String package_path, String dest_dir) {

        Logger logger = Logger.getLogger("CreateCaseManager.startCaseManager");

        File folder = Reader.createFolder(package_path, dest_dir);
        File caseManager = new File(folder, "CaseManager.java");
        FileWriter caseManagerWriter;

        try {
            caseManagerWriter = new FileWriter(caseManager);
            caseManagerWriter.write("package " + package_path + ";\n");
            caseManagerWriter.write("\n");
            caseManagerWriter.write("import org.junit.Test;\n");
            caseManagerWriter
                    .write("import es.upm.dit.gsi.beast.story.StoryRunner;\n"); // import
                                                                                // StoryRunner
            caseManagerWriter.write("\n");
            caseManagerWriter.write("/**\n");
            caseManagerWriter
                    .write(" * Main class to launch all tests in a single run\n");
            caseManagerWriter.write(" *\n");
            caseManagerWriter.write(" * @author es.upm.dit.gsi.beast\n");
            caseManagerWriter.write(" */\n");
            caseManagerWriter.write("public class CaseManager {\n");
            caseManagerWriter.write("\n");
            caseManagerWriter.flush();
            caseManagerWriter.close();
            // logger.info("CaseManager has been created in "+dest_dir+Reader.createFolderPath(package_path));
        } catch (IOException e) {
            logger.severe("ERROR writing the file");
        }

        return caseManager;
    }

    /**
     * The second method to write caseManager. Its task is to write the Tests to
     * run in our platform, so this method is called once for each Test by
     * Reader.java.
     * 
     * @param caseManager
     *            the file where the test must de written
     * @param test_name
     *            the name of its test
     * @param test_path
     *            the path where the test can be founded
     * @param scenario
     *            the name of the scenario of the test
     * @param given
     *            the GIVEN part of the plain text given by the client
     * @param when
     *            the WHEN part of the plain text given by the client
     * @param then
     *            the THEN part of the plain text given by the client
     */
    public static void createTest(File caseManager, String test_name,
            String test_path, String scenario, String given, String when,
            String then) {
        FileWriter caseManagerWriter;
        try {
            caseManagerWriter = new FileWriter(caseManager, true);
            caseManagerWriter.write("  /**\n");
            caseManagerWriter.write("   * This is the scenario: " + scenario
                    + ",\n");
            caseManagerWriter.write("   * where the GIVEN is described as: "
                    + given + ",\n");
            caseManagerWriter.write("   * the WHEN is described as: " + when
                    + "\n");
            caseManagerWriter.write("   * and the THEN is described as: "
                    + then + "\n");
            caseManagerWriter.write("   */\n");
            caseManagerWriter.write("  @Test\n");
            caseManagerWriter.write("  public void Scenario" + test_name
                    + "() {\n");
            caseManagerWriter.write("  \n");
            caseManagerWriter.write("	  StoryRunner.executeStory(\""
                    + test_path + "\");\n");
            caseManagerWriter.write("  }\n");
            caseManagerWriter.write("\n");
            caseManagerWriter.flush();
            caseManagerWriter.close();
        } catch (IOException e) {
            Logger logger = Logger.getLogger("CreateCaseManager.createTest");
            logger.info("ERROR writing the file");
        }

    }

    /**
     * Method to close the file caseManager. It is called just one time, by
     * Reader.java.
     * 
     * @param caseManager
     */

    public static void closeCaseManager(File caseManager) {

        FileWriter caseManagerWriter;
        try {
            caseManagerWriter = new FileWriter(caseManager, true);
            caseManagerWriter.write("}\n");
            caseManagerWriter.flush();
            caseManagerWriter.close();
        } catch (IOException e) {
            Logger logger = Logger
                    .getLogger("CreateCaseManager.closeCaseManager");
            logger.info("ERROR: There is a mistake closing caseManager file.\n");
        }

    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy