public static void main(String[] args) {
		
		/*
		 * input parameters:
		 * 1.) algorithm type: which implementation
		 * 2.) inputFile number
		 * 3.) boundary: boundary for the generation (optional)
		 * 4.) show result (optional)
		 */
		if (args.length < 1) {
			System.err.println("Missing Argument(s)! [algorithm-type]");
			return;
		}
		
		StringSearchAlgorithm algorithm = AlgorithmTypeFactory.getInstance().getStringSearchAlgorithm(args[0]);
		
		if (algorithm == null) {
			System.err.println("No Algorithm found, please check the parameters");
			return;
		}
		
		int fileNumber = 0;

		if (args.length >= 2) {
			
			try {
				fileNumber = Integer.parseInt(args[1]);
			} catch (NumberFormatException e) {
				System.err.println("Wrong parameter value! File-Number must be an integer value!");
				return;
			}
		}
				
		if (args.length >= 3) {
			if (args[2].equals(Helper.SHOW_RESULT)) {
				showResult = true;
			} else {
				int nb = numberOfExecutions;
				
				try {
					nb = Integer.parseInt(args[2]);
				} catch (NumberFormatException e) {
					System.err.println("Wrong parameter value! Number-of-executions must be an integer value!"
									+ "\n"
									+ "Default ("
									+ numberOfExecutions
									+ ") value is used");
				}
				numberOfExecutions = nb;	
			}
		}
		
		if (args.length >= 4) {
			if (args[3].equals(Helper.SHOW_RESULT)) {
				showResult = true;
			}
		}
		
		//System.out.println("All arguments were read successfully");
		
		Testcase t = TestcaseFactory.getInstance().getTestcase(algorithm, fileNumber, numberOfExecutions, showResult);
		t.execute();
	}