maia_modificado/.svn/pristine/09/0907e75f3ef214cd1199ea58f7a...

277 lines
10 KiB
Plaintext
Executable File

package com.fp.frontend.helper;
import java.security.MessageDigest;
import java.util.Map;
import javax.ejb.EJB;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import com.fp.dto.Request;
import com.fp.dto.Response;
import com.fp.facadeclient.ejb.FacadeBeanJsfRemote;
import com.fp.facadeclient.helper.ServiceLocatorJsf;
import com.fp.frontend.controller.security.LoginController;
/**
* Clase utilitaria que se encarga de ejecutar acciones en el core.
*
* @author Jorge Vaca.
* @version 2.1
*/
public class CallerHelper {
@EJB
private FacadeBeanJsfRemote fremote;
private final Request request;
public CallerHelper() throws Exception {
// se utiliza en el login
this.request = new Request();
}
/**
* Constructor de la clase utilitaria para realizar las peticiones hacia el core
*
* @param facesContext
* @throws Exception
*/
public CallerHelper(FacesContext facesContext) throws Exception {
LoginController logincontroler = (LoginController) facesContext.getExternalContext().getSessionMap().get("loginController");
Map<String, String[]> params = facesContext.getExternalContext().getRequestParameterValuesMap();
String m = "";
Integer t = 0;
Integer v = 0;
if ((params.get("m") == null) && (params.get("t") == null) ) {
// Object[] tran = (Object[])params.get("tran"); ejemplo de prametros de un dialogo en runtime ejemplo LOV.
m = logincontroler.getRequest().getTransactionModule();
t = logincontroler.getRequest().getTransactionCode();
v = logincontroler.getRequest().getTransactionVersion();
} else {
Object[] maux = params.get("m");
Object[] taux = params.get("t");
Object[] vaux = params.get("v");
m = (String) maux[0];
t = Integer.valueOf((String) taux[0]);
v = Integer.valueOf((String) vaux[0]);
logincontroler.getRequest().setTransactionModule(m);
logincontroler.getRequest().setTransactionCode(t);
logincontroler.getRequest().setTransactionVersion(v);
}
this.request = new Request();
try {
logincontroler.fijaRequestData(this.request, m, t, v);
} catch (NullPointerException e) {
Response r = new Response("BGEN-0000", "USUARIO NO HA INICIADO SESSION DE TRABAJO");
MessageHelper.setMessageError(r);
}
}
/**
* Metodo que ejecuta consultas, en el core de maia.
*
* @param request Request que contiene la metadata de consultas.
* @return Response
* @throws Throwable
*/
public Response executeQuery(Request request) throws Throwable {
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querybean");
Response resp = (Response) this.fremote.process(request);
return resp;
}
/**
* Metodo que ejecuta insert, update, delete, en el core de maia.
*
* @param request Request que contiene la metadata del mantenimiento
* @return Response
* @throws Throwable
*/
public Response executeSave(Request request) throws Throwable {
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("savebean");
Response resp = (Response) this.fremote.process(request);
return resp;
}
/**
* Metodo que ejecuta insert, update, delete, en el core de maia.
*
* @param request Request que contiene la metadata del mantenimiento
* @return Response
* @throws Throwable
*/
public boolean executeReport(Request request) throws Throwable {
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("reportbean");
Object resp = this.fremote.process(request);
return (Boolean)resp;
}
/**
* Metodo que ejecuta insert, update, delete, en el core de maia.
*
* @param request Request que contiene la metadata del mantenimiento
* @return Response
* @throws Throwable
*/
public Response login(Request request, String user, String password) throws Throwable {
request.setUser(user);
request.put("itemValue", this.getPasswordEncriptado(password));
request.setTransactionModule("1");
request.setTransactionCode(9998);
request.setTransactionVersion(1);
request.put("querytype", "T");
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
request.modifiedData().put("jsessionid", session.getId());
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean");
Response resp = (Response) this.fremote.process(request);
return resp;
}
/**
* Metodo que ejecuta insert, update, delete, en el core de maia.
*
* @param request Request que contiene la metadata del mantenimiento
* @return Response
* @throws Throwable
*/
public Response loginCas(Request request, String user, String password) throws Throwable {
request.put("itemValue", this.getPasswordEncriptado(password));
request.setTransactionModule("1");
request.setTransactionCode(9997);
request.setTransactionVersion(1);
request.put("querytype", "T");
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean");
Response resp = (Response) this.fremote.process(request);
return resp;
}
/**
* Metodo que ejecuta insert, update, delete, en el core de maia.
*
* @param request Request que contiene la metadata del mantenimiento
* @return Response
* @throws Throwable
*/
public Response logout(Request request) throws Throwable {
request.setTransactionModule("1");
request.setTransactionCode(9999);
request.setTransactionVersion(1);
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("savebean");
Response resp = (Response) this.fremote.process(request);
return resp;
}
/**
* Entrega el password encriptado.
* @param password Password a encriptar.
* @return String
* @throws Exception
*/
public String getPasswordEncriptado(String password) throws Exception {
if(password==null){
return null;
}
MessageDigest messageDigest = MessageDigest.getInstance("SHA-1");
messageDigest.reset();
messageDigest.update(password.getBytes());
String encriptado = toHexadecimal(messageDigest.digest());
return encriptado;
}
/**
* Metodo que ejecuta insert, update, delete, en el core de maia.
*
* @param request Request que contiene la metadata del mantenimiento
* @return Response
* @throws Throwable
*/
public Response menu(Request request) throws Throwable {
Request rq = new Request();
rq.setCompany(request.getCompany());
rq.setProfile(request.getProfile());
rq.setLanguage(request.getLanguage());
rq.setTransactionModule(null);
rq.setTransactionCode(null);
rq.setTransactionVersion(null);
rq.put("querytype", "P");
rq.put("queryalias", "MENU");
// siempre obtener una referencia al ejb de consulta del servicelocator.
this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean");
Response resp = (Response) this.fremote.process(rq);
return resp;
}
private static String toHexadecimal(byte[] digest) {
String hash = "";
for (byte aux : digest) {
int b = aux & 0xff;
if (Integer.toHexString(b).length() == 1) {
hash += "0";
}
hash += Integer.toHexString(b);
}
return hash;
}
/**
* Verifica el parametro de la pagina autoquery es Y.
*
* @return boolean
* @throws Exception
*/
public boolean isautoquery() throws Exception {
Map<String, String> m = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap();
if ((m.get("autoquery") != null) && "Y".equals(m.get("autoquery"))) {
return true;
}
return false;
}
/**
* Entrega el valor de un parametro del lov. Si no existe retorna null.
*
* @param parametername Nombre del parametro.
* @return String.
* @throws Exception
*/
public static String getLovParameter(String parametername) throws Exception {
Map<String, String[]> params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap();
String[] obj = params.get(parametername);
if (obj == null) {
return null;
}
return obj[0];
}
/**
* Entrega el valor de: request
*
* @return Request
*/
public Request getRequest() {
return this.request;
}
public Request getNewRequest(String module, Integer transaction, Integer version) throws Exception {
FacesContext facesContext = FacesContext.getCurrentInstance();
LoginController logincontroler = (LoginController) facesContext.getExternalContext().getSessionMap().get("loginController");
Request newRequest = new Request();
try {
logincontroler.fijaRequestData(newRequest, module, transaction, version);
} catch (NullPointerException e) {
Response r = new Response("BGEN-0000", "USUARIO NO HA INICIADO SESSION DE TRABAJO");
MessageHelper.setMessageError(r);
}
return newRequest;
}
}