View Javadoc
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  }