package com.fitbank.bpm.common;

import java.io.Serializable;

import com.fitbank.common.Helper;
import com.fitbank.common.RequestData;
import com.fitbank.common.conectivity.HbSession;
import com.fitbank.common.exception.ExceptionHandler;
import com.fitbank.common.logger.FitbankLogger;
import com.fitbank.dto.GeneralResponse;
import com.fitbank.dto.management.Detail;

public class InitTransaction implements Serializable {

    private static final long serialVersionUID = 1L;

    public Detail execute(Detail pDetail) throws Exception {
        try {
            FitbankLogger.getLogger().debug(
                    "Inicia el proceso de la Transaccion " + pDetail.getMessageid() + " " + pDetail.getSubsystem()
                            + "/" + pDetail.getTransaction());

            RequestData.setSession(pDetail);
            GeneralResponse gr = new GeneralResponse(GeneralResponse.OK);
            gr.setCommitable(true);
            pDetail.setResponse(gr);
            Helper.setSession(HbSession.getInstance().getSession());
            Helper.beginTransaction();
        } catch (Exception e) {
            ExceptionHandler eh = new ExceptionHandler(e, pDetail.getLanguage());
            pDetail.setResponse(eh.manage());
        }
        return pDetail;
    }
}
