package net.conselldemallorca.helium.webapp.dwr;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.conselldemallorca.helium.core.extern.domini.FilaResultat;
import net.conselldemallorca.helium.core.extern.domini.ParellaCodiValor;
import net.conselldemallorca.helium.core.model.service.DissenyService;
import org.springframework.beans.factory.annotation.Autowired;
public class DominiDwrService {
private DissenyService dissenyService;
@Autowired
public DominiDwrService(DissenyService dissenyService) {
this.dissenyService = dissenyService;
}
// Domini SQL sense paràmetres
// -----------------------------------------------------------------
public String ping(String domini ) throws Exception {
try{
Long dominiId = Long.parseLong(domini);
List<FilaResultat> resultat= dissenyService.consultaDomini(
null,
dominiId,
(Map<String, Object>)null);
StringBuilder sb = new StringBuilder();
for (FilaResultat fila: resultat) {
sb.append("[");
for (ParellaCodiValor parella: fila.getColumnes()) {
sb.append("(" + parella.getCodi() + ": " + parella.getValor() + ")");
sb.append(", ");
}
sb.append("],");
}
return sb.toString();
}catch (Exception e) {
return "Error consultant domini: "+e.getMessage();
}
}
// Domini SQL amb paràmetres
// -----------------------------------------------------------------
public String pingParams(String domini, String[] params ) throws Exception {
Map<String, Object> parametres= new HashMap<String, Object>();
int j=0;
for(int i=0;i<params.length/2;i++){
parametres.put(params[j].toString(), params[j+1].toString());
j+=2;
}
try{
Long dominiId = Long.parseLong(domini);
List<FilaResultat> resultat= dissenyService.consultaDomini(null, dominiId, parametres);
StringBuilder sb = new StringBuilder();
for (FilaResultat fila: resultat) {
sb.append("[");
for (ParellaCodiValor parella: fila.getColumnes()) {
sb.append("(" + parella.getCodi() + ": " + parella.getValor() + ")");
sb.append(", ");
}
sb.append("],");
}
return sb.toString();
}catch (Exception e) {
return "Error consultant domini: "+e.getMessage();
}
}
// Domini WS amb paràmetres
// -----------------------------------------------------------------
public String pingWSParams(String domini, String idWS, String[] params ) throws Exception {
Map<String, Object> parametres= new HashMap<String, Object>();
//convertim els valor que ens arriban
int s=0;
int j=0;
for(int n=0;n<params.length/3;n++){
if(params[s].contains("string")){
parametres.put(params[j+2],params[j+1].toString());
}
if(params[s].contains("int")){
parametres.put(params[j+2],Long.parseLong(params[j+1]));
}
if(params[s].contains("float")){
parametres.put(params[j+2],Double.parseDouble(params[j+1]));
}
if(params[s].contains("boolean")){
parametres.put(params[j+2],Boolean.parseBoolean(params[j+1]));
}
if(params[s].contains("date")){
String[] dataSplit = params[j+1].split("/");
Calendar data = new GregorianCalendar();
data.set(Integer.parseInt(dataSplit[2]),Integer.parseInt(dataSplit[1]),Integer.parseInt(dataSplit[0]));
parametres.put(params[j+2],data);
}
if(params[s].contains("price")){
String dat = params[j+1];
BigDecimal datBDecimal = new BigDecimal(new Double(dat));
parametres.put(params[j+2], datBDecimal);
}
s+=3;
j+=3;
}
try{
Long dominiId = Long.parseLong(domini);
List<FilaResultat> resultat= dissenyService.consultaDomini(null, dominiId, idWS, parametres);
StringBuilder sb = new StringBuilder();
for (FilaResultat fila: resultat) {
sb.append("[");
for (ParellaCodiValor parella: fila.getColumnes()) {
sb.append("(" + parella.getCodi() + ": " + parella.getValor() + ")");
sb.append(", ");
}
sb.append("],");
}
return sb.toString();
}catch (Exception e) {
return "Error consultant domini: "+e.getMessage();
}
}
// Domini WS sense paràmetres
// -----------------------------------------------------------------
public String pingWS(String domini, String idWS ) throws Exception {
try{
Long dominiId = Long.parseLong(domini);
List<FilaResultat> resultat= dissenyService.consultaDomini(null, dominiId, idWS);
StringBuilder sb = new StringBuilder();
for (FilaResultat fila: resultat) {
sb.append("[");
for (ParellaCodiValor parella: fila.getColumnes()) {
sb.append("(" + parella.getCodi() + ": " + parella.getValor() + ")");
sb.append(", ");
}
sb.append("],");
}
return sb.toString();
}catch (Exception e) {
return "Error consultant domini: "+e.getMessage();
}
}
}