Package org.ggp.base.util.gdl.transforms.standalone

Source Code of org.ggp.base.util.gdl.transforms.standalone.StandaloneDeORer

package org.ggp.base.util.gdl.transforms.standalone;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.ggp.base.util.files.FileUtils;
import org.ggp.base.util.game.Game;
import org.ggp.base.util.gdl.grammar.Gdl;
import org.ggp.base.util.gdl.transforms.DeORer;
import org.ggp.base.validator.StaticValidator;
import org.ggp.base.validator.ValidatorException;


/**
* The standalone version of DeORer can be run as its own program. It
* takes a .kif file as input and generates a new .kif file with the
* modified output. The new filename is (original name)_DEORED.kif.
*
* The new file is not intended to be particularly legible; it is
* intended mainly for use by other programs.
*
* @author Alex Landau
*
*/
public class StandaloneDeORer {

  /**
   * @param args
   */
  public static void main(String[] args) {
    if(args.length < 1 || !args[0].endsWith(".kif")) {
      System.out.println("Please enter the path of a .kif file as an argument.");
      return;
    }

    String filename = args[0];
    Game theGame = Game.createEphemeralGame(Game.preprocessRulesheet(FileUtils.readFileAsString(new File(filename))));
    if (theGame.getRules() == null || theGame.getRules().size() == 0) {
      System.err.println("Problem reading the file " + filename + " or parsing the GDL.");
      return;
    }

    try {
      new StaticValidator().checkValidity(theGame);
    } catch (ValidatorException e) {
      System.err.println("GDL validation error: " + e.toString());
      return;
    }

    List<Gdl> transformedDescription = DeORer.run(theGame.getRules());

    String newFilename = filename.substring(0, filename.lastIndexOf(".kif")) + "_DEORED.kif";

    try {
      BufferedWriter out = new BufferedWriter(new FileWriter(new File(newFilename)));

      for(Gdl gdl : transformedDescription) {
        out.write(gdl.toString());
        out.newLine();
      }
      out.close();
    } catch (IOException e) {
      System.err.println("There was an error writing the translated GDL file " + newFilename + ".");
      e.printStackTrace();
    }
  }

}
TOP

Related Classes of org.ggp.base.util.gdl.transforms.standalone.StandaloneDeORer

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.