package net.conselldemallorca.helium.webapp.dwr; import java.util.ArrayList; import java.util.List; import net.conselldemallorca.helium.core.model.hibernate.Camp; import net.conselldemallorca.helium.core.model.hibernate.ConsultaCamp.TipusConsultaCamp; import net.conselldemallorca.helium.core.model.service.DissenyService; import net.conselldemallorca.helium.core.util.ExpedientCamps; import net.conselldemallorca.helium.core.util.GlobalProperties; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.MessageSource; import org.springframework.context.MessageSourceAware; import org.springframework.context.NoSuchMessageException; /** * Servei DWR per a la gestiĆ³ dels camps associats al processos. * * @author Limit Tecnologies <limit@limit.es> */ public class CampsProcesDwrService implements MessageSourceAware { private DissenyService dissenyService; private MessageSource messageSource; @Autowired public CampsProcesDwrService(DissenyService dissenyService) { this.dissenyService = dissenyService; } public List<Object[]> llistaCampsPerProces(Long consultaId, String defprocJbpmKey, String stipus) { List<Object[]> llista = new ArrayList<Object[]>(); if (defprocJbpmKey == null || defprocJbpmKey.length() == 0) { Object[] obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_ID; obj[1] = getMessage("etiqueta.exp.id"); obj[2] = null; llista.add(obj); obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_NUMERO; obj[1] = getMessage("etiqueta.exp.numero"); obj[2] = null; llista.add(obj); obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_TITOL; obj[1] = getMessage("etiqueta.exp.titol"); obj[2] = null; llista.add(obj); /*obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_COMENTARI; obj[1] = getMessage("etiqueta.exp.comentari"); obj[2] = null; llista.add(obj); obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_INICIADOR; obj[1] = getMessage("etiqueta.exp.iniciador"); obj[2] = null; llista.add(obj); obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_RESPONSABLE; obj[1] = getMessage("etiqueta.exp.responsable"); obj[2] = null; llista.add(obj);*/ obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_DATA_INICI; obj[1] = getMessage("etiqueta.exp.data_ini"); obj[2] = null; llista.add(obj); obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_ESTAT; obj[1] = getMessage("etiqueta.exp.estat"); obj[2] = null; llista.add(obj); if (isGeorefActiu()) { if (isGeorefAmbReferencia()) { obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_GEOREF; obj[1] = getMessage("comuns.georeferencia.codi"); obj[2] = null; llista.add(obj); } else { obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_GEOX; obj[1] = getMessage("comuns.georeferencia.coordenadaX"); obj[2] = null; llista.add(obj); obj = new Object[3]; obj[0] = ExpedientCamps.EXPEDIENT_CAMP_GEOY; obj[1] = getMessage("comuns.georeferencia.coordenadaY"); obj[2] = null; llista.add(obj); } } } else { TipusConsultaCamp tipus = stipus.equals(TipusConsultaCamp.FILTRE.name()) ? TipusConsultaCamp.FILTRE : TipusConsultaCamp.INFORME; List<Camp> list = dissenyService.findCampsProces(consultaId, defprocJbpmKey); List<Camp> listExistents = dissenyService.findCampsPerCampsConsulta(consultaId, tipus, false); for (Camp c : list) { boolean exist = false; for (Camp campExistent: listExistents) { if (c.getCodi().equals(campExistent.getCodi())) { exist = true; break; } } if (!exist) { String text = c.getCodi() + " / " + c.getEtiqueta(); text += " (v." + c.getDefinicioProces().getVersio() + ")"; text += " - " + c.getTipus(); Object[] obj = new Object[3]; obj[0] = c.getCodi(); obj[1] = text; obj[2] = c.getDefinicioProces().getVersio(); llista.add(obj); } } } return llista; } public void setMessageSource(MessageSource messageSource) { this.messageSource = messageSource; } public void goToCampTasca(Long IdTasca, int pos) { dissenyService.goToCampTasca(IdTasca, pos); } public void goToCampRegistreMembres(Long IdCampRegistre, int pos) { dissenyService.goToCampRegistreMembres(IdCampRegistre, pos); } public void goToEnumeracioValors(Long IdTasca, int pos) { dissenyService.goToEnumeracioValors(IdTasca, pos); } public void goToSignaturaTasca(Long signaturaId, int pos) { dissenyService.goToSignaturaTasca(signaturaId, pos); } public void goToCampEstat(Long estatId, int pos) { dissenyService.goToCampEstat(estatId, pos); } public void goToCampConsLlistat(Long consultaId, int pos) { dissenyService.goToCampConsLlistat(consultaId, pos); } public void goToCampAgrupacio(Long tipusExpId, int pos) { dissenyService.goToCampAgrupacio(tipusExpId, pos); } public void goToCampAgrupacioLlista(Long estatId, int pos) { dissenyService.goToCampAgrupacioLlista(estatId, pos); } public void goToConsultaCamp(Long consultaId, int pos) { dissenyService.goToConsultaCamp(consultaId, pos); } public void goToCampValidacio(Long consultaId, int pos) { dissenyService.goToCampValidacio(consultaId, pos); } public void goToValors(Long consultaId, int pos) { dissenyService.goToValors(consultaId, pos); } public void goToDocumentTasca(Long documentId, int pos) { dissenyService.goToDocumentTasca(documentId, pos); } public void updateCampTasca(Long IdTasca,Long campId, boolean readFrom, boolean writeTo, boolean required, boolean readOnly) { dissenyService.addCampTasca(IdTasca, campId, readFrom, writeTo, required, readOnly); } public void updateDocumentsTasca(Long IdTasca,Long campId, boolean required, boolean readOnly) { dissenyService.addDocumentTasca(IdTasca, campId, required, readOnly); } protected String getMessage(String key) { return getMessage(key, null); } protected String getMessage(String key, Object[] vars) { try { return messageSource.getMessage( key, vars, null); } catch (NoSuchMessageException ex) { return "???" + key + "???"; } } private boolean isGeorefActiu() { return "true".equalsIgnoreCase(GlobalProperties.getInstance().getProperty("app.georef.actiu")); } private boolean isGeorefAmbReferencia() { return "ref".equalsIgnoreCase(GlobalProperties.getInstance().getProperty("app.georef.tipus")); } }