1 /**
2 * @(#)FitnessFunctionDriverFactory.java
3 * Copyright (C) 2008-2011 delhezi.com
4 *
5 * This class is released under the:
6 * GNU Lesser General Public License (LGPL) version 3 or later.
7 * http://www.gnu.org/copyleft/lesser.html
8 */
9 package com.delhezi.ga.fitnessfunction.drivers.factory;
10
11 import com.delhezi.ga.exception.GeneticAlgorithmException;
12 import com.delhezi.ga.fitnessfunction.drivers.IFitnessFunctionDriver;
13 import com.delhezi.ga.fitnessfunction.drivers.ScriptEngineDriver;
14 import java.util.logging.Level;
15 import java.util.logging.Logger;
16
17 /**
18 * Sparametryzowana metoda wytwórcza sterownika funkcji celu.
19 * @version 1.0 2009-06-10
20 * @author <a href="mailto:wojciech.wolszczak@delhezi.com">
21 * Wojciech Wolszczak</a>
22 */
23 public class FitnessFunctionDriverFactory {
24
25 /** Logger object. */
26 private static final Logger LOGGER =
27 Logger.getLogger(FitnessFunctionDriverFactory.class.getName());
28
29 /** Delhezi Error Code. */
30 private static final String DERC = "1-3.1.1-1-";
31
32 /** Class name. */
33 private static final String CLASS_NAME =
34 FitnessFunctionDriverFactory.class.getName();
35
36
37 /**
38 * Tworzy nowy obiekt sterownika finkcji celu i zwraca referencję do niego.
39 * @param scriptEnginName Nazwa silnika skryptów. Przykładowe wartości:
40 * [js, rhino, JavaScript, javascript,
41 * ECMAScript, ecmascript].
42 * @param scriptPath Bezwzględna ścieżka zakończona "/" do katalogu w
43 * którym składowane są skrytpy funkcji celu.
44 * @param scriptFile Naza pliku ze skrytem funkcji celu.
45 * @return Funkcja celu.
46 * @throws GeneticAlgorithmException Propagowany z funkcji
47 * ScriptEngineDriver klas implementujących silniki funkcji celu.
48 */
49 public static IFitnessFunctionDriver getFitnessFunctionEngineDriver(
50 final String scriptEnginName,
51 final String scriptPath,
52 final String scriptFile)
53 throws GeneticAlgorithmException {
54 LOGGER.entering(CLASS_NAME, "getFitnessFunctionEngineDriver",
55 new Object[] {scriptEnginName, scriptPath,
56 scriptFile });
57 IFitnessFunctionDriver driv =
58 new ScriptEngineDriver(scriptEnginName, scriptPath, scriptFile);
59 LOGGER.exiting(CLASS_NAME, "getFitnessFunctionEngineDriver", driv);
60 return driv;
61 }
62
63 /**
64 * Zwraca typ sterownika funkcji celu określony dla parametru.
65 * @param fitnessFunctionDriver Referencja do obiektu sterownika funkcji celu.
66 * @return Typ sterownika funkcji celu.
67 * @throws GeneticAlgorithmException DERC-1-3.1.1-1-2
68 * @since 1.0
69 */
70 public static FitnessFunctionDriverType getFitnessFunctionEngineDriverType(
71 final IFitnessFunctionDriver fitnessFunctionDriver)
72 throws GeneticAlgorithmException {
73 LOGGER.entering(CLASS_NAME, "getFitnessFunctionEngineDriverType",
74 fitnessFunctionDriver);
75
76 String pClassName = fitnessFunctionDriver.getClass().getName();
77
78 if (pClassName.equals("com.delhezi.ga.fitnessfunction.drivers.ScriptEngineDriver")) {
79 return FitnessFunctionDriverType.ScriptEngineDriver;
80 }
81
82 GeneticAlgorithmException e =
83 new GeneticAlgorithmException("DERC-" + DERC +
84 "2: Parametr fitnessFunctionDriver=" +
85 pClassName + " is not recognized.");
86 LOGGER.log(Level.WARNING, "getFitnessFunctionEngineDriverType", e);
87 throw e;
88 }
89 }