Package general

Source Code of general.Config

package general;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Properties;
import java.util.StringTokenizer;

import utils.Log;

import algorithms.DealingAlgorithm;
import algorithms.DivAlgorithm;
import algorithms.HandGA;

public class Config {
  private Properties configFile = new Properties();
  private static final Config INSTANCE = new Config();
  private static final String FILE_NAME = "config.prop";
  private static final String comments = "examples: \nhand=100\nalgorithms.HandGA:150,1000,0.2,0.8";

  public static Config getInstance()
  {
    return INSTANCE;
  }

  private Config() {
    try {
      configFile.load(new FileInputStream(FILE_NAME));
    } catch (IOException e) {
      //e.printStackTrace();
    }
  }

  public String getConfig(String key)
  {
    return configFile.getProperty(key,"");
  }

  public int getHands()
  {
    if (!configFile.containsKey("hands"))
      configFile.setProperty("hands", "100");

    return Integer.parseInt(configFile.getProperty("hands", "100"));
  }

  public void setHands(int num)
  { 
    configFile.setProperty("hands", "" + num)
  }

  public DealingAlgorithm getAlgorithm()
  {
    if (!configFile.containsKey("algorithm"))
      configFile.setProperty("algorithm",HandGA.class.getName()+":150,1000,0.2,0.8");

    int hands = this.getHands();
    String algoName = configFile.getProperty("algorithm");

    try {
      String name = "";
      String extra = "";
      StringTokenizer sT = new StringTokenizer(algoName,":");
      name = sT.nextToken();
      if (sT.hasMoreTokens())
        extra = sT.nextToken();
      Log.write("Loading algorithm |" + name + "|");
      DealingAlgorithm algo = (DealingAlgorithm)Class.forName(name).getConstructor(int.class).newInstance(hands);
      algo.extraConfig(extra);
      return algo;
    } catch (Exception ex)
    {
      ex.printStackTrace();
      return new DivAlgorithm(hands);
    }
  }
 
  public int getColsNumber()
  {
    if (!configFile.containsKey("cols"))
      configFile.setProperty("cols", "2");

    return Integer.parseInt(configFile.getProperty("cols"));
  }

  public void save()
  {
    try{
      FileOutputStream fileout = new FileOutputStream(FILE_NAME);
      this.configFile.store(fileout, comments);
    }
    catch (Exception ex)
    {
      ;
    }
  }
}
TOP

Related Classes of general.Config

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.