Package com.zinep.script

Source Code of com.zinep.script.TrnParser

package com.zinep.script;

import com.zinep.*;
import com.zinep.trans.Cambio;
import com.zinep.trans.Deposito;
import com.zinep.trans.Retiro;
import com.zinep.trans.Transaccion;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
*
* @author tomas
*/
public class TrnParser {

    public static final String ETIQUETA = "([a-zA-Z0-9]+)";
    public static final String NUMERO = "([0-9]+)";
    public static final String W = "\\s+"; // whitespace
    public static final String DEL = "\\s*"; // delimiter
    static final Pattern RETIRO = Pattern.compile(DEL + "Retiro"
            + W + "Cuenta"
            + W + "(USD|UYU)"
            + W + NUMERO
            + W + ETIQUETA
            + DEL);
    static final Pattern DEPOSITO = Pattern.compile(DEL + "Deposito"
            + W + "Cuenta"
            + W + "(USD|UYU)"
            + W + NUMERO
            + W + "(USD|UYU)"
            + DEL);
    static final Pattern CAMBIO = Pattern.compile(DEL + "Cambio"
            + W + NUMERO
            + W + "(USD|UYU)"
            + DEL);
    // Deposito Cuenta USD 1000 USD
    //Cliente cliente, Cuenta cuenta, Sucursal sucursal, Monto cantADepositar
   static final Pattern PRESTAMOPERSONAL = Pattern.compile(DEL +"PrestamoPersonal"
           + W + "Cuenta"
           + W + "(USD|UYU)"
           + W + NUMERO
           + W + "(USD|UYU)"
           + DEL);

    public Transaccion parse(Banco banco, Sucursal sucursal, Cliente cliente, String linea) {
        Pattern rTrn = Pattern.compile(DEL + ETIQUETA + "\\.*");
        Matcher m = rTrn.matcher(linea);
        if (!m.find()) {
            return null;
        }
        String id = m.group(1);

        Transaccion trn = null;
        if (id.equals("Retiro")) {
            if ((m = RETIRO.matcher(linea)).find()) {
                Moneda moneda = Moneda.valueOf(m.group(1));
                Cuenta cuenta = cliente.getCuenta(moneda);
                Monto monto = new Monto(Long.parseLong(m.group(2)), Moneda.valueOf(m.group(3)));
                trn = Retiro.crearRetiro(cliente, cuenta, sucursal, monto);
            }
        } else if (id.equals("Deposito")) {
            // TODO procesar deposito
            if ((m = DEPOSITO.matcher(linea)).find()) {
                System.out.println(m.group(0));
                Moneda moneda = Moneda.valueOf(m.group(1));
                Cuenta cuenta = cliente.getCuenta(moneda);
                Monto monto = new Monto(Long.parseLong(m.group(2)), Moneda.valueOf(m.group(3)));
                trn = Deposito.efectuarDeposito(cliente, cuenta, sucursal, monto);
            }
        } else if (id.equals("Cambio")) {
            // TODO procesar deposito
            if ((m = CAMBIO.matcher(linea)).find()) {
                Moneda moneda = Moneda.valueOf(m.group(1));
                Monto monto = new Monto(Long.parseLong(m.group(2)), Moneda.valueOf(m.group(3)));
                trn = Cambio.efectuarCambio(cliente, monto, moneda, sucursal);
//                System.out.println("?Cambio()
//                System.out.println("????????");
//                for (int i = 0; i < 4; i++) {
//                    System.out.println(m.group(i));
//                }
            }
        } else if (id.equals("PrestamoPersonal")){
            if((m = PRESTAMOPERSONAL.matcher(linea)).find()){
                Moneda moneda = Moneda.valueOf(m.group(1));
                Cuenta cuenta = cliente.getCuenta(moneda);
                Monto monto = new Monto(Long.parseLong(m.group(2)), Moneda.valueOf(m.group(3)));
                trn = Deposito.efectuarDeposito(cliente, cuenta, sucursal, monto);
            }
        } else {
            System.out.println("Transaccion no encontrada: " + id);
        }

        return trn;
    }
}
TOP

Related Classes of com.zinep.script.TrnParser

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.