/** * */ package net.conselldemallorca.helium.webapp.mvc; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import net.conselldemallorca.helium.core.extern.domini.FilaResultat; import net.conselldemallorca.helium.core.extern.domini.ParellaCodiValor; import net.conselldemallorca.helium.core.model.hibernate.Entorn; import net.conselldemallorca.helium.core.model.service.DissenyService; import net.conselldemallorca.helium.webapp.mvc.util.BaseController; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; /** * Controlador per fer consultes als dominis de dins d'un * expedient * * @author Limit Tecnologies <limit@limit.es> */ @Controller public class ExpedientConsultaDominiController extends BaseController { private DissenyService dissenyService; @Autowired public ExpedientConsultaDominiController( DissenyService dissenyService) { this.dissenyService = dissenyService; } @RequestMapping(value = "/domini/consultaExpedient") public String consultaCamp( HttpServletRequest request, @RequestParam(value = "taskId", required = false) String taskId, @RequestParam(value = "processInstanceId", required = false) String processInstanceId, @RequestParam(value = "definicioProcesId", required = true) Long definicioProcesId, @RequestParam(value = "campCodi", required = true) String campCodi, @RequestParam(value = "q", required = false) String textInicial, @RequestParam(value = "tipus", required = true) String tipus, @RequestParam(value = "valors", required = false) String valors, ModelMap model) { Entorn entorn = getEntornActiu(request); if (entorn != null) { try { model.addAttribute( "camp", dissenyService.findCampAmbDefinicioProcesICodiSimple(definicioProcesId, campCodi)); List<FilaResultat> resultat = dissenyService.getResultatConsultaCamp( taskId, processInstanceId, definicioProcesId, campCodi, textInicial, getMapDelsValors(valors)); for (FilaResultat filaResultat: resultat) { for (ParellaCodiValor codiValor: filaResultat.getColumnes()) { if (codiValor.getValor() instanceof String) { String valor = (String)codiValor.getValor(); //codiValor.setValor(valor); // Per a evitar problemes amb caràcters estranys al codi (EXSANCI) codiValor.setValor(valor.replaceAll("\\p{Cntrl}", "").trim()); } } } model.addAttribute("resultat", resultat); } catch (Exception ex) { logger.error("Error en la consulta de domini pel camp " + campCodi, ex); } if (tipus.equals("select")) return "domini/consultaCampSelect"; else return "domini/consultaCampSuggest"; } else { missatgeError(request, getMessage("error.no.entorn.selec") ); return "redirect:/index.html"; } } private Map<String, Object> getMapDelsValors(String valors) { if (valors == null) return null; Map<String, Object> resposta = new HashMap<String, Object>(); String[] parelles = valors.split(","); for (int i = 0; i < parelles.length; i++) { String[] parts = parelles[i].split(":"); if (parts.length == 2) resposta.put(parts[0], parts[1]); } return resposta; } private static final Log logger = LogFactory.getLog(ExpedientConsultaDominiController.class); }