package com.test;

import com.fitbank.common.FileHelper;
import com.fitbank.common.helper.XMLParser;
import com.fitbank.common.logger.FitbankLogger;
import com.fitbank.dto.management.Detail;
import com.fitbank.processor.RequestProcessor;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.prefs.Preferences;
import javax.swing.JFileChooser;

public class Test {

    public static final String PREF_NAME = "in";

    public static Preferences preferences = Preferences.userNodeForPackage(
            Test.class);

    private static final String DIR_WINDOWS = "E:/fitbank/debug/";

    private static final String DIR_UNIX = "/media/DATA/fitbank/debug/";

    private String dir = "";

    String data = "";

    public Test() throws Exception {
        try {
            dir = Test.DIR_WINDOWS;
            data = FileHelper.readFile(dir + "in.xml");
            System.setProperty("fitbank.persistence.path", "E:/fitbank/fitbank/svndesarrollo/persistencia/");
        } catch (FileNotFoundException e) {
            FitbankLogger.getLogger().error("Ruta no reconocida. Usando ruta UNIX...", e);
            try {
                dir = Test.DIR_UNIX;
                data = FileHelper.readFile(dir + "in.xml");
                System.setProperty("fitbank.persistence.path", "/media/DATA/fitbank/svndesarrollo/persistencia/");
            } catch (Exception m) {
                FitbankLogger.getLogger().error("No se encontro el archivo de entrada", m);
                System.exit(0);
            }
        }
    }

    public Test(String dir, String data) {
        this.dir = dir;
        this.data = data;
    }

    public void process() throws Exception {
        XMLParser xml = new XMLParser(data);
        Detail detail = new Detail(xml);
        detail.setChannel("PC");
        detail.setMessageId(null);
        RequestProcessor rp = new RequestProcessor(null, detail);
        detail = rp.process();
        FileHelper.writeFile(dir + "out.xml", detail.toXml());
        System.out.println(detail.getResponse().getUserMessage());
    }

    public static void main(String[] args) {
        //FitbankLogger.initStandalone();
        try {
            File in = new File(preferences.get(PREF_NAME, ""));

            JFileChooser chooser = new JFileChooser();
            chooser.setCurrentDirectory(in);
            chooser.setSelectedFile(in);
            chooser.setDialogTitle("Escoja el Detail a procesar (Canelar, usa el detail por default)");

            //if (chooser.showOpenDialog(null) == JFileChooser.CANCEL_OPTION) {
                Test test = new Test();
                test.process();
                System.exit(0);
            //}

            /*in = chooser.getSelectedFile();
            preferences.put(PREF_NAME, in.getAbsolutePath());

            File parentDir = in.getParentFile();
            String data = FileHelper.readFile(in.toString());

            Test test = new Test(parentDir.getAbsolutePath(), data);
            test.process();*/
        } catch (Exception e) {
            FitbankLogger.getLogger().error("Error al ejecutar el proceso", e);
        }
    }

}