/** * */ package net.conselldemallorca.helium.ws.domini; import java.util.List; import javax.jws.WebService; import org.springframework.beans.factory.annotation.Autowired; import net.conselldemallorca.helium.core.extern.domini.DominiHelium; import net.conselldemallorca.helium.core.extern.domini.FilaResultat; import net.conselldemallorca.helium.core.extern.domini.ParellaCodiValor; //import net.conselldemallorca.helium.core.model.dto.InstanciaProcesDto; //import net.conselldemallorca.helium.core.model.dto.PersonaDto; //import net.conselldemallorca.helium.core.model.dto.TascaDto; //import net.conselldemallorca.helium.core.model.hibernate.Area; //import net.conselldemallorca.helium.core.model.hibernate.Camp; //import net.conselldemallorca.helium.core.model.hibernate.Camp.TipusCamp; //import net.conselldemallorca.helium.core.model.hibernate.CampRegistre; //import net.conselldemallorca.helium.core.model.hibernate.CampTasca; //import net.conselldemallorca.helium.core.model.hibernate.Carrec; //import net.conselldemallorca.helium.core.model.hibernate.Entorn; //import net.conselldemallorca.helium.core.model.service.EntornService; //import net.conselldemallorca.helium.core.model.service.ExpedientService; //import net.conselldemallorca.helium.core.model.service.OrganitzacioService; //import net.conselldemallorca.helium.core.model.service.PluginService; //import net.conselldemallorca.helium.core.model.service.TascaService; //import net.conselldemallorca.helium.core.util.GlobalProperties; import net.conselldemallorca.helium.v3.core.api.service.DissenyService; /** * Domini que implementa l'accés a dades internes de Helium * * @author Josep Gayà <josepg@limit.es> */ @WebService(endpointInterface = "net.conselldemallorca.helium.core.extern.domini.DominiHelium") public class DominiIntern implements DominiHelium { // private EntornService entornService; // private TascaService tascaService; // private ExpedientService expedientService; // private OrganitzacioService organitzacioService; // private PluginService pluginService; private DissenyService dissenyService; public List<FilaResultat> consultaDomini( String id, List<ParellaCodiValor> parametres) throws Exception { // Map<String, Object> parametersMap = getParametersMap(parametres); // if ("PERSONA_AMB_CODI".equals(id)) { // return personaAmbCodi(parametersMap); // } else if ("PERSONES_AMB_AREA".equals(id)) { // return personesAmbArea(parametersMap); // } else if ("PERSONA_AMB_CARREC_AREA".equals(id)) { // return personesAmbCarrecArea(parametersMap, true); // } else if ("PERSONES_AMB_CARREC_AREA".equals(id)) { // return personesAmbCarrecArea(parametersMap, false); // } else if ("AREES_AMB_PARE".equals(id)) { // return areesAmbPare(parametersMap); // } else if ("VARIABLE_REGISTRE".equals(id)) { // return variableRegistre(parametersMap); // } else if ("AREES_AMB_PERSONA".equals(id)) { // return areesAmbPersona(parametersMap); // } else if ("ROLS_PER_USUARI".equals(id)) { // return rolsPerUsuari(parametersMap); // } else if ("USUARIS_PER_ROL".equals(id)) { // return usuarisPerRol(parametersMap); // /* Per suprimir */ // } else if ("PERSONES_AMB_CARREC".equals(id)) { // return personesAmbCarrec(parametersMap); // } // return new ArrayList<FilaResultat>(); return dissenyService.consultaDominiIntern(id, parametres); } // @Autowired // public void setEntornService(EntornService entornService) { // this.entornService = entornService; // } // @Autowired // public void setTascaService(TascaService tascaService) { // this.tascaService = tascaService; // } // @Autowired // public void setExpedientService(ExpedientService expedientService) { // this.expedientService = expedientService; // } // @Autowired // public void setOrganitzacioService(OrganitzacioService organitzacioService) { // this.organitzacioService = organitzacioService; // } // @Autowired // public void setPluginService(PluginService pluginService) { // this.pluginService = pluginService; // } @Autowired public void seDissenyservice(DissenyService dissenyService) { this.dissenyService = dissenyService; } // private List<FilaResultat> personaAmbCodi(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // PersonaDto persona = pluginService.findPersonaAmbCodi((String)parametres.get("persona")); // if (persona != null) // resposta.add(novaFilaPersona(persona)); // return resposta; // } // private List<FilaResultat> personesAmbArea(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // for (String personaCodi: getPersonesPerArea((String)parametres.get("entorn"), (String)parametres.get("area"))) { // PersonaDto persona = pluginService.findPersonaAmbCodi(personaCodi); // if (persona != null) // resposta.add(novaFilaPersona(persona)); // } // return resposta; // } // private List<FilaResultat> personesAmbCarrecArea(Map<String, Object> parametres, boolean nomesUna) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // List<String> personaCodis = getPersonesPerAreaCarrec( // (String)parametres.get("entorn"), // (String)parametres.get("area"), // (String)parametres.get("carrec")); // if (personaCodis != null) { // for (String personaCodi: personaCodis) { // PersonaDto persona = pluginService.findPersonaAmbCodi(personaCodi); // if (persona != null) { // resposta.add(novaFilaPersona(persona)); // if (nomesUna) // break; // } // } // } // return resposta; // } // private List<FilaResultat> areesAmbPare(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // for (Area area: getAreesAmbPare((String)parametres.get("entorn"), (String)parametres.get("pare"))) { // resposta.add(novaFilaArea(area)); // } // return resposta; // } // @SuppressWarnings("unchecked") // private List<FilaResultat> variableRegistre(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // Long taskInstanceId = (Long)parametres.get("taskInstanceId"); // Long processInstanceId = (Long)parametres.get("processInstanceId"); // String variable = (String)parametres.get("variable"); // String filtreColumna = (String)parametres.get("filtreColumna"); // Object filtreValor = parametres.get("filtreValor"); // Object valor = null; // Object valorText = null; // Camp camp = null; // if (taskInstanceId != null) { // TascaDto tasca = tascaService.getByIdSenseComprovacio(taskInstanceId.toString()); // valor = tasca.getVariable(variable); // valorText = tasca.getVarsComText().get(variable); // for (CampTasca ct: tasca.getCamps()) { // if (ct.getCamp().getCodi().equals(variable)) { // camp = ct.getCamp(); // break; // } // } // } else if (processInstanceId != null) { // InstanciaProcesDto instanciaProces = expedientService.getInstanciaProcesById(processInstanceId.toString(), true, true, true); // valor = instanciaProces.getVariable(variable); // valorText = instanciaProces.getVarsComText().get(variable); // for (Camp c: instanciaProces.getCamps()) { // if (c.getCodi().equals(variable)) { // camp = c; // break; // } // } // } // if (valor != null && valor instanceof Object[] && camp.getTipus().equals(TipusCamp.REGISTRE)) { // Object[] registres = (Object[])valor; // List<String[]> registresText = (List<String[]>)valorText; // int indexFila = 0; // for (int i = 0; i < registres.length; i++) { // Object[] valors = (Object[])registres[i]; // String[] texts = registresText.get(i); // boolean incloureAquest = true; // if (filtreColumna != null) { // incloureAquest = false; // int indexColumna = 0; // for (CampRegistre campRegistre: camp.getRegistreMembres()) { // if (filtreColumna.equals(campRegistre.getMembre().getCodi())) { // if (valors[indexColumna] == null && filtreValor == null) // incloureAquest = true; // else if (valors[indexColumna] != null && valors[indexColumna].equals(filtreValor)) // incloureAquest = true; // else if (filtreValor != null && filtreValor.equals(valors[indexColumna])) // incloureAquest = true; // break; // } // } // } // if (incloureAquest) { // FilaResultat fila = new FilaResultat(); // fila.addColumna(new ParellaCodiValor("_index", indexFila++)); // int indexColumna = 0; // for (CampRegistre campRegistre: camp.getRegistreMembres()) { // fila.addColumna(new ParellaCodiValor("_valor_" + campRegistre.getMembre().getCodi(), valors[indexColumna])); // fila.addColumna(new ParellaCodiValor(campRegistre.getMembre().getCodi(), texts[indexColumna++])); // } // resposta.add(fila); // } // } // } // return resposta; // } // // private List<FilaResultat> areesAmbPersona(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // for (String grupCodi: getGrupsPerPersona((String)parametres.get("persona"))) { // FilaResultat fila = new FilaResultat(); // fila.addColumna(new ParellaCodiValor("codi", grupCodi)); // resposta.add(fila); // } // return resposta; // } // // private List<FilaResultat> usuarisPerRol(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // for (String personaCodi: organitzacioService.findCodisPersonaAmbJbpmIdGroup((String)parametres.get("rol"))) { // PersonaDto persona = pluginService.findPersonaAmbCodi(personaCodi); // if (persona != null) // resposta.add(novaFilaPersona(persona)); // } // return resposta; // } // // private List<FilaResultat> rolsPerUsuari(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // for (String rol: organitzacioService.findRolsJbpmIdMembre((String)parametres.get("persona"))) { // FilaResultat fila = new FilaResultat(); // fila.addColumna(new ParellaCodiValor("rol", rol)); // resposta.add(fila); // } // return resposta; // } // // /* Per suprimir */ // private List<FilaResultat> personesAmbCarrec(Map<String, Object> parametres) { // List<FilaResultat> resposta = new ArrayList<FilaResultat>(); // for (String personaCodi: getPersonesPerCarrec((String)parametres.get("entorn"), (String)parametres.get("carrec"))) { // PersonaDto persona = pluginService.findPersonaAmbCodi(personaCodi); // if (persona != null) // resposta.add(novaFilaPersona(persona)); // } // return resposta; // } // // private FilaResultat novaFilaPersona(PersonaDto persona) { // FilaResultat resposta = new FilaResultat(); // resposta.addColumna(new ParellaCodiValor("codi", persona.getCodi())); // resposta.addColumna(new ParellaCodiValor("nom", persona.getNom())); // resposta.addColumna(new ParellaCodiValor("llinatge1", persona.getLlinatge1())); // resposta.addColumna(new ParellaCodiValor("llinatge2", persona.getLlinatge2())); // resposta.addColumna(new ParellaCodiValor("dni", persona.getDni())); // resposta.addColumna(new ParellaCodiValor("sexe", persona.getSexe().name())); // resposta.addColumna(new ParellaCodiValor("email", persona.getEmail())); // resposta.addColumna(new ParellaCodiValor("nomSencer", persona.getNomSencer())); // return resposta; // } // // private FilaResultat novaFilaArea(Area area) { // FilaResultat resposta = new FilaResultat(); // resposta.addColumna(new ParellaCodiValor("codi", area.getCodi())); // resposta.addColumna(new ParellaCodiValor("nom", area.getNom())); // String pareCodi = (area.getPare() != null) ? area.getPare().getCodi() : null; // resposta.addColumna(new ParellaCodiValor("pareCodi", pareCodi)); // return resposta; // } // // private List<String> getPersonesPerArea(String entornCodi, String areaCodi) { // if (isHeliumIdentitySource()) { // Entorn entorn = entornService.findAmbCodi(entornCodi); // if (entorn != null) { // Area area = organitzacioService.findAreaAmbEntornICodi(entorn.getId(), areaCodi); // if (area != null) // return organitzacioService.findCodisPersonaAmbArea(area.getId()); // } // return new ArrayList<String>(); // } else { // return organitzacioService.findCodisPersonaAmbJbpmIdGroup(areaCodi); // } // } // // private List<String> getPersonesPerCarrec(String entornCodi, String carrecCodi) { // if (isHeliumIdentitySource()) { // List<String> resposta = new ArrayList<String>(); // Entorn entorn = entornService.findAmbCodi(entornCodi); // if (entorn != null) { // Carrec carrec = organitzacioService.findCarrecAmbEntornICodi(entorn.getId(), carrecCodi); // if (carrec != null) // resposta.add(carrec.getPersonaCodi()); // } // return resposta; // } else { // return organitzacioService.findCodisPersonaAmbJbpmIdCarrec(carrecCodi); // } // } // // private List<String> getPersonesPerAreaCarrec( // String entornCodi, // String areaCodi, // String carrecCodi) { // if (isHeliumIdentitySource()) { // Entorn entorn = entornService.findAmbCodi(entornCodi); // if (entorn != null) { // Carrec carrec = organitzacioService.findCarrecAmbEntornAreaICodi( // entorn.getId(), // areaCodi, // carrecCodi); // if (carrec != null) { // List<String> resposta = new ArrayList<String>(); // resposta.add(carrec.getPersonaCodi()); // return resposta; // } // } // return null; // } else { // return organitzacioService.findCodisPersonaAmbJbpmIdGroupCarrec(areaCodi, carrecCodi); // } // } // // private List<Area> getAreesAmbPare(String entornCodi, String areaCodi) { // Entorn entorn = entornService.findAmbCodi(entornCodi); // return organitzacioService.findAreaAmbPare(entorn.getId(), areaCodi); // } // // private List<String> getGrupsPerPersona(String personaCodi) { // if (isHeliumIdentitySource()) { // return organitzacioService.findAreesMembre(personaCodi); // } else { // return organitzacioService.findAreesJbpmIdMembre(personaCodi); // } // } // // private Map<String, Object> getParametersMap(List<ParellaCodiValor> parametres) { // Map<String, Object> resposta = new HashMap<String, Object>(); // if (parametres != null) { // for (ParellaCodiValor parella: parametres) // resposta.put(parella.getCodi(), parella.getValor()); // } // return resposta; // } // private boolean isHeliumIdentitySource() { // String organigramaActiu = GlobalProperties.getInstance().getProperty("app.jbpm.identity.source"); // return "helium".equalsIgnoreCase(organigramaActiu); // } }