package com.fp.general.security.rules; import com.fp.dto.rules.TransactionRule; import com.fp.dto.save.SaveBean; import com.fp.dto.save.SaveRequest; import com.fp.persistence.commondb.PersistenceHelper; import com.fp.persistence.pgeneral.menu.TgeneMenuLevel; import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; import com.fp.persistence.pgeneral.menu.TgeneMenuLevelKey; import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevel; import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelKey; import java.util.ArrayList; import java.util.List; import javax.persistence.Query; /** * Clase que se encarga de del mantenimiento de menu para que se vuelva mas simple su manejo * @author scastillo */ public class MaintenanceMenu extends TransactionRule { /** * Metodo que se ejecuta en modo normal * @param pSaveRequest * @return * @throws Exception */ @Override public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { List lmodifyMenuLevel = pSaveRequest.getSaveBeanModifiedRecords("TGENEMENULEVELDESC"); this.completeMenuLevel(pSaveRequest, lmodifyMenuLevel); List ldeleteMenuLevel = pSaveRequest.getSaveBeanDeletedRecords("TGENEMENULEVELDESC"); this.deleteMenuLevel(pSaveRequest, ldeleteMenuLevel); List lmodifyMenuSubLevel = pSaveRequest.getSaveBeanModifiedRecords("TGENEMENUSUBLEVELDESC"); this.completeMenuSubLevel(pSaveRequest, lmodifyMenuSubLevel); List ldeleteMenuSubLevel = pSaveRequest.getSaveBeanDeletedRecords("TGENEMENUSUBLEVELDESC"); this.deleteMenuSubLevel(pSaveRequest, ldeleteMenuSubLevel); return pSaveRequest; } /** * Metodo que se encarga de verificar los datos cuando estos son eliminados * @param pSaveRequest * @param lmodifyMenuLevel * @throws Exception */ private void completeMenuLevel(SaveRequest pSaveRequest, List lmodifyMenuLevel) throws Exception { if (lmodifyMenuLevel != null) { List lTgeneMenuLevel = new ArrayList(); for (int i = 0; i < lmodifyMenuLevel.size(); i++) { TgeneMenuLevelDesc tgeneMenuLevelDesc = (TgeneMenuLevelDesc) lmodifyMenuLevel.get(i); Integer presentationorder = new Integer(tgeneMenuLevelDesc.get("presentationorder").toString()); TgeneMenuLevelKey TgeneMenuLevelKey = new TgeneMenuLevelKey(); TgeneMenuLevelKey.setMenucode(tgeneMenuLevelDesc.getPk().getMenucode()); TgeneMenuLevelKey.setLevelcode(tgeneMenuLevelDesc.getPk().getLevelcode()); TgeneMenuLevel tgeneMenuLevel = TgeneMenuLevel.find(PersistenceHelper.getEntityManager(), TgeneMenuLevelKey); if (tgeneMenuLevel == null) { tgeneMenuLevel = new TgeneMenuLevel(); tgeneMenuLevel.setPk(TgeneMenuLevelKey); tgeneMenuLevel.setHavesublevel("Y"); tgeneMenuLevel.setPresentationorder(presentationorder); lTgeneMenuLevel.add(tgeneMenuLevel); } else { if (tgeneMenuLevel.getPresentationorder() != presentationorder) { tgeneMenuLevel.setPresentationorder(presentationorder); lTgeneMenuLevel.add(tgeneMenuLevel); } } } if (lTgeneMenuLevel.size() > 0) { pSaveRequest.putSaveBean("TGENEMENULEVEL", lTgeneMenuLevel, 1); } } } /** * * @param pSaveRequest * @param ldeleteMenuLevel * @throws Exception */ private void deleteMenuLevel(SaveRequest pSaveRequest, List ldeleteMenuLevel) throws Exception { if(ldeleteMenuLevel == null){ return; } List ldeleterecors = new ArrayList(); for (int i = 0; i < ldeleteMenuLevel.size(); i++) { TgeneMenuLevelDesc tgeneMenuLevelDesc = (TgeneMenuLevelDesc) ldeleteMenuLevel.get(i); TgeneMenuLevelKey TgeneMenuLevelKey = new TgeneMenuLevelKey(); TgeneMenuLevelKey.setMenucode(tgeneMenuLevelDesc.getPk().getMenucode()); TgeneMenuLevelKey.setLevelcode(tgeneMenuLevelDesc.getPk().getLevelcode()); TgeneMenuLevel tgeneMenuLevel = TgeneMenuLevel.find(PersistenceHelper.getEntityManager(), TgeneMenuLevelKey); if (tgeneMenuLevel != null) { ldeleterecors.add(tgeneMenuLevel); } } if(!ldeleterecors.isEmpty()){ SaveBean sb = (SaveBean)pSaveRequest.get("TGENEMENULEVEL"); if(sb!=null){ sb.setDeletedRecords(ldeleterecors); } } } /** * Metodo que completa y modificalos datos para subniveles * @param pSaveRequest * @param lmodifyMenuSubLevel * @throws Exception */ private void completeMenuSubLevel(SaveRequest pSaveRequest, List lmodifyMenuSubLevel) throws Exception { if (lmodifyMenuSubLevel != null) { List lTgeneMenuSubLevel = new ArrayList(); for (int i = 0; i < lmodifyMenuSubLevel.size(); i++) { TgeneMenuSubLevelDesc tgeneMenuSubLevelDesc = (TgeneMenuSubLevelDesc) lmodifyMenuSubLevel.get(i); Integer presentationorder = new Integer(tgeneMenuSubLevelDesc.get("presentationorder").toString()); TgeneMenuSubLevelKey tgeneMenuSubLevelKey = new TgeneMenuSubLevelKey(); tgeneMenuSubLevelKey.setMenucode(tgeneMenuSubLevelDesc.getPk().getMenucode()); tgeneMenuSubLevelKey.setLevelcode(tgeneMenuSubLevelDesc.getPk().getLevelcode()); tgeneMenuSubLevelKey.setSublevel(tgeneMenuSubLevelDesc.getPk().getSublevel()); TgeneMenuSubLevel tgeneMenuSubLevel = TgeneMenuSubLevel.find(PersistenceHelper.getEntityManager(), tgeneMenuSubLevelKey); if (tgeneMenuSubLevel == null) { tgeneMenuSubLevel = new TgeneMenuSubLevel(); tgeneMenuSubLevel.setPk(tgeneMenuSubLevelKey); tgeneMenuSubLevel.setPresentationorder(presentationorder); lTgeneMenuSubLevel.add(tgeneMenuSubLevel); } else { if (tgeneMenuSubLevel.getPresentationorder() != presentationorder) { tgeneMenuSubLevel.setPresentationorder(presentationorder); lTgeneMenuSubLevel.add(tgeneMenuSubLevel); } } } if (lTgeneMenuSubLevel.size() > 0) { pSaveRequest.putSaveBean("TGENEMENUSUBLEVEL", lTgeneMenuSubLevel, 1); } } } /** * * @param pSaveRequest * @param ldeleteMenuLevel * @throws Exception */ private void deleteMenuSubLevel(SaveRequest pSaveRequest, List ldeleteMenuSubLevel) throws Exception { if(ldeleteMenuSubLevel == null){ return; } List ldeleterecors = new ArrayList(); for (int i = 0; i < ldeleteMenuSubLevel.size(); i++) { TgeneMenuSubLevelDesc tgeneMenuSubLevelDesc = (TgeneMenuSubLevelDesc) ldeleteMenuSubLevel.get(i); TgeneMenuSubLevelKey TgeneMenuSubLevelKey = new TgeneMenuSubLevelKey(); TgeneMenuSubLevelKey.setMenucode(tgeneMenuSubLevelDesc.getPk().getMenucode()); TgeneMenuSubLevelKey.setLevelcode(tgeneMenuSubLevelDesc.getPk().getLevelcode()); TgeneMenuSubLevelKey.setSublevel(tgeneMenuSubLevelDesc.getPk().getSublevel()); TgeneMenuSubLevel tgeneMenuSubLevel = TgeneMenuSubLevel.find(PersistenceHelper.getEntityManager(), TgeneMenuSubLevelKey); PersistenceHelper.delete(tgeneMenuSubLevelDesc); if (tgeneMenuSubLevel != null) { PersistenceHelper.delete(tgeneMenuSubLevel); //ldeleterecors.add(tgeneMenuSubLevel); } } SaveBean sb = (SaveBean)pSaveRequest.get("TGENEMENUSUBLEVELDESC"); if(sb!=null){ sb.setDeletedRecords(new ArrayList<>()); } //if(!ldeleterecors.isEmpty()){ // SaveBean sb = (SaveBean)pSaveRequest.get("TGENEMENUSUBLEVEL"); // if(sb!=null){ // sb.setDeletedRecords(ldeleterecors); // } //} } /** * Metodo que se ejecuta en modo reverso * @param pSaveRequest * @return * @throws Exception */ @Override public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { return pSaveRequest; } }