package com.fp.bpmlib.flow; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import com.fp.dto.Request; import com.fp.dto.save.SaveRequest; import com.fp.simple.flow.Asign; // TODO: Auto-generated Javadoc /** * Class RuleUtil encargada del manejo de las operaciones de una Regla. * * @author gfiallos */ public final class RuleUtil { /** * Crea una nueva instancia de rule util. */ private RuleUtil() { } /** El valor de message. */ private static ThreadLocal> message = new ThreadLocal>(); /** * Asign. * * @param pMaia the maia * @param pClass the class * @throws Exception la exception */ public static void asign(Map pMaia, String pClass) throws Exception { Asign asign = (Asign) Class.forName(pClass).newInstance(); asign.setRequest(RuleUtil.getRequest(pMaia)); RuleUtil.setAction(pMaia, "A"); if (!asign.isGroup()) { RuleUtil.setUser(pMaia, asign.getId()); } else { RuleUtil.setGroup(pMaia, asign.getId()); } } /** * Asign officer. * * @param pMaia the maia */ public static void asignOfficer(Map pMaia) { String officer = RuleUtil.getRequest(pMaia).getString("officer"); RuleUtil.setUser(pMaia, officer); RuleUtil.setAction(pMaia, "A"); } /** * Obtiene el valor de amount. * * @param pMaia the maia * @return Valor de amount */ public static BigDecimal getAmount(Map pMaia) { return RuleUtil.getRequest(pMaia).getBigDecimal("amount"); } /** * Obtiene el valor de financial amount. * * @param pMaia the maia * @return Valor de financial amount */ public static BigDecimal getFinancialAmount(Map pMaia) { return RuleUtil.getRequest(pMaia).getBigDecimal("financialamount"); } /** * Obtiene el valor de rate. * * @param pMaia the maia * @return Valor de rate */ public static BigDecimal getRate(Map pMaia) { return RuleUtil.getRequest(pMaia).getBigDecimal("rate"); } /** * Obtiene el valor de request. * * @param pMaia the maia * @return Valor de request */ public static Request getRequest(Map pMaia) { return (Request) pMaia.get("request"); } /** * Obtiene el valor de save request. * * @param pMaia the maia * @return Valor de save request */ public static SaveRequest getSaveRequest(Map pMaia) { return (SaveRequest) RuleUtil.getRequest(pMaia); } /** * Obtiene el valor de term. * * @param pMaia the maia * @return Valor de term */ public static Integer getTerm(Map pMaia) { return RuleUtil.getRequest(pMaia).getInteger("term"); } /** * Fija el valor de action. * * @param pMaia the maia * @param pAction the action */ public static void setAction(Map pMaia, String pAction) { pMaia.put("action", pAction); } /** * Fija el valor de action intermediate. * * @param pMaia the maia * @param pAction the action */ public static void setActionIntermediate(Map pMaia, String pAction) { pMaia.put("action", pAction); pMaia.put("internalCode", "Y"); } /** * Fija el valor de group. * * @param pMaia the maia * @param pGroup the group */ public static void setGroup(Map pMaia, String pGroup) { pMaia.put("groupId", pGroup); RuleUtil.toGroup(pGroup); } /** * Fija el valor de user. * * @param pMaia the maia * @param pUser the user */ public static void setUser(Map pMaia, String pUser) { pMaia.put("userId", pUser); } /** * Obtiene el valor de message. * * @return Valor de message */ private static Map getMessage() { Map msg = null; synchronized (RuleUtil.message) { msg = RuleUtil.message.get(); if (msg == null) { msg = new HashMap(); RuleUtil.message.set(msg); } } return msg; } /** * To user. * * @param pUser the user */ public static void toUser(String pUser) { Map msg = RuleUtil.getMessage(); @SuppressWarnings("unchecked") List user = (List) msg.get("user"); if (user == null) { user = new ArrayList(); msg.put("user", user); } user.add(pUser); } /** * To group. * * @param pGroup the group */ public static void toGroup(String pGroup) { Map msg = RuleUtil.getMessage(); @SuppressWarnings("unchecked") List group = (List) msg.get("group"); if (group == null) { group = new ArrayList(); msg.put("group", group); } group.add(pGroup); } /** * To field. * * @param pField the field */ public static void toField(String pField) { Map msg = RuleUtil.getMessage(); @SuppressWarnings("unchecked") List field = (List) msg.get("field"); if (field == null) { field = new ArrayList(); msg.put("field", field); } field.add(pField); } /** * To address. * * @param pField the field */ public static void toAddress(String pAddress) { Map msg = RuleUtil.getMessage(); @SuppressWarnings("unchecked") List laddress = (List) msg.get("address"); if (laddress == null) { laddress = new ArrayList(); msg.put("address", laddress); } if (!laddress.contains(pAddress)) { laddress.add(pAddress); } } /** * Fija el valor de subject template. * * @param pTemplate es el valor nuevo de subject template */ public static void setSubjectTemplate(Integer pTemplate) { Map msg = RuleUtil.getMessage(); msg.put("subject", pTemplate); } /** * Fija el valor de content template. * * @param pTemplate es el valor nuevo de content template */ public static void setContentTemplate(Integer pTemplate) { Map msg = RuleUtil.getMessage(); msg.put("content", pTemplate); } /** * Send mail. * * @param pRequest the request * @throws Exception la exception */ public static void sendMail(Request pRequest) throws Exception { Class c = Class.forName("com.fp.bpmlib.mail.MailCommand"); Map msg = RuleUtil.getMessage(); msg.put("request", pRequest); Constructor con = c.getConstructor(Map.class); Object obj = con.newInstance(msg); Method m = c.getMethod("send"); m.invoke(obj); } }