@RequestMapping(method = RequestMethod.GET, value = "/cargaFuenteInterna/{idUsuarioCreador}")
  public ResponseEntity<FuenteDto> CargaCatalogo(
      @PathVariable("idUsuarioCreador") Long idUsuarioCreador) {

    FuenteDto fuenteCatalogo;
    FuenteDto fuenteDto = new FuenteDto();
    fuenteDto.setEsCatalogoInterno((short) 1);
    Date data;
    String strData;
    try {

      strData = getServicioConfiguracionGeneral().getCatalogoData();
      data = UtilFecha.multiParse(strData);
      fuenteDto.setFechaRegistro(data);
      fuenteDto.setNombre(getServicioConfiguracionGeneral().getCatalogoNome());
      fuenteDto.setInfoConexion(getServicioConfiguracionGeneral().getCatalogoUrl());
      fuenteDto.setPassword(getServicioConfiguracionGeneral().getCatalogoPass());
      fuenteDto.setUsuario(getServicioConfiguracionGeneral().getCatalogoUser());
      fuenteDto.setId(0);
    } catch (Exception e) {
      log.error("Error excetion ERROR_PARAM_CONFIG ");
      fuenteDto.setNombre(ERROR_PARAM_CONFIG);
      return new ResponseEntity<FuenteDto>(fuenteDto, responseHeaders, HttpStatus.OK);
    }

    try {

      if (fuenteDto.getNombre().isEmpty()
          || fuenteDto.getInfoConexion().isEmpty()
          || data == null) {
        log.error("Error parametros vacions " + ERROR_PARAM_CONFIG + strData);
        fuenteDto.setNombre(ERROR_PARAM_CONFIG);
        return new ResponseEntity<FuenteDto>(fuenteDto, responseHeaders, HttpStatus.OK);
      } else {
        // comprobamos si existe la fuente con los datos del fichero de
        // configuraciĆ³n despliegue.properties en BD
        fuenteCatalogo = gestorCUFuente.existeFuenteCatalogo(fuenteDto);

        // sino existe la fuente la insertamos en la DB
        if (fuenteCatalogo == null || fuenteCatalogo.getId() == 0) {
          fuenteCatalogo = gestorCUFuente.gardaFuenteCatalogo(fuenteDto, idUsuarioCreador);
        }
      }
    } catch (Exception e) {
      log.error("Error segunda exception fuente vacia");
      return new ResponseEntity<FuenteDto>(new FuenteDto(), responseHeaders, HttpStatus.OK);
    }
    log.debug("EXITO al cargar la fuente: " + fuenteCatalogo.getNombre());
    return new ResponseEntity<FuenteDto>(fuenteCatalogo, responseHeaders, HttpStatus.OK);
  }
  @RequestMapping(
      method = RequestMethod.GET,
      value = "/mapaTablaFuente/{esquema}/{tabla}/{id}/{tipo}")
  public ResponseEntity<AtributosMapDto> mapaTablaFuente(
      @PathVariable("esquema") String esquema,
      @PathVariable("tabla") String tabla,
      @PathVariable("id") Long id,
      @PathVariable("tipo") String tipo,
      HttpServletRequest request) {
    String path;

    if (tipo.equals(TiposFuente.CSV.getId())) path = getServicioConfiguracionGeneral().getPathCsv();
    else if (tipo.equals(TiposFuente.GML.getId()))
      path = getServicioConfiguracionGeneral().getPathGml();
    else if (tipo.equals(TiposFuente.SHAPEFILE.getId()))
      path = getServicioConfiguracionGeneral().getPathShapefile();
    else path = null;

    String caracterSeparador = getServicioConfiguracionGeneral().getCaracterSeparadorCSV();
    String realPath = getPathRealAplicacion(request, path);
    ResponseEntity<AtributosMapDto> respuesta =
        new ResponseEntity<AtributosMapDto>(
            gestorCUFuente.obtenerMapaTablaFuenteExterna(id, esquema, tabla, realPath),
            responseHeaders,
            HttpStatus.OK);

    return respuesta;
  }
 @RequestMapping(method = RequestMethod.POST, value = "/ficheroGML")
 public ResponseEntity<EncapsuladorPOSTSW> guardarFicheroGML(
     @RequestBody EncapsuladorFileSW fich, HttpServletRequest request) {
   String path = getPathRealAplicacion(request, getServicioConfiguracionGeneral().getPathGml());
   EncapsuladorErroresSW errores = new EncapsuladorErroresSW();
   gestorCUFuente.guardaFichero(fich, path, errores, true);
   EncapsuladorPOSTSW<EncapsuladorFileSW> encapsulador =
       new EncapsuladorPOSTSW<EncapsuladorFileSW>(fich, errores);
   ResponseEntity<EncapsuladorPOSTSW> respuesta =
       new ResponseEntity<EncapsuladorPOSTSW>(encapsulador, HttpStatus.OK);
   return respuesta;
 }
  @RequestMapping(method = RequestMethod.GET, value = "/obtenerFichero/{id}/{tipo}")
  public ResponseEntity<EncapsuladorFileSW> obtenerFichero(
      @PathVariable("id") Long id, @PathVariable("tipo") String tipo, HttpServletRequest request) {
    String path;
    String caracterSeparador = getServicioConfiguracionGeneral().getCaracterSeparadorCSV();
    FuenteDto fuenteDto = gestorCUFuente.carga(id);
    String fich = "";
    if (tipo.equals(TiposFuente.CSV.getId())) {
      path = getServicioConfiguracionGeneral().getPathCsv();
      fich = fuenteDto.getFich_csv_gml();
    } else if (tipo.equals(TiposFuente.GML.getId())) {
      path = getServicioConfiguracionGeneral().getPathGml();
      fich = fuenteDto.getFich_csv_gml();
    } else if (tipo.equals(TiposFuente.SHAPEFILE.getId())) {
      path = getServicioConfiguracionGeneral().getPathShapefile();
      fich = fuenteDto.getFich_shp();
    } else {
      path = null;
      fich = "";
    }

    String realPath = getPathRealAplicacion(request, path);

    RandomAccessFile f = null;
    try {
      File file = new File(realPath + fuenteDto.getId() + "/" + fich);

      f = new RandomAccessFile(file, "r");
      byte[] contenido = new byte[(int) f.length()];
      f.read(contenido);

      EncapsuladorFileSW encapsuladorFich = new EncapsuladorFileSW();
      encapsuladorFich.setFich(contenido);
      encapsuladorFich.setNombre(fich);
      ResponseEntity<EncapsuladorFileSW> respuesta =
          new ResponseEntity<EncapsuladorFileSW>(encapsuladorFich, HttpStatus.OK);
      return respuesta;
    } catch (FileNotFoundException e) {
      log.error("Fichero: " + fich + " no encontrado para descarga");
      return new ResponseEntity<EncapsuladorFileSW>(new EncapsuladorFileSW(), HttpStatus.OK);
    } catch (Exception e) {
      log.error("Se ha producido un error al acceder al fichero: " + fich);
      return new ResponseEntity<EncapsuladorFileSW>(new EncapsuladorFileSW(), HttpStatus.OK);
    } finally {
      try {
        if (f != null) f.close();
      } catch (IOException e) {
        log.error("No se pudo cerrar la conexion con el fichero");
      }
    }
  }
 @RequestMapping(method = RequestMethod.POST, value = "/fuente/{idUsuarioCreador}")
 public ResponseEntity<EncapsuladorPOSTSW> guardar(
     @PathVariable("idUsuarioCreador") Long idUsuarioCreador,
     @RequestBody FuenteDto fuenteDto,
     HttpServletRequest request) {
   EncapsuladorErroresSW errores = new EncapsuladorErroresSW();
   String sistemaCoordenadas = getServicioConfiguracionGeneral().getCodigoCordenadas();
   fuenteDto = gestorCUFuente.garda(fuenteDto, idUsuarioCreador, errores, sistemaCoordenadas);
   EncapsuladorPOSTSW<FuenteDto> encapsulador =
       new EncapsuladorPOSTSW<FuenteDto>(fuenteDto, errores);
   ResponseEntity<EncapsuladorPOSTSW> respuesta =
       new ResponseEntity<EncapsuladorPOSTSW>(encapsulador, HttpStatus.OK);
   return respuesta;
 }
  @RequestMapping(method = RequestMethod.GET, value = "/tablasFuente/{id}/{tipo}")
  public ResponseEntity<EncapsuladorListSW<TablaFuenteDatosDto>> listaTablas(
      @PathVariable("id") Long id, @PathVariable("tipo") String tipo, HttpServletRequest request) {
    String path;

    if (tipo.equals(TiposFuente.CSV.getId())) path = getServicioConfiguracionGeneral().getPathCsv();
    else if (tipo.equals(TiposFuente.GML.getId()))
      path = getServicioConfiguracionGeneral().getPathGml();
    else if (tipo.equals(TiposFuente.SHAPEFILE.getId()))
      path = getServicioConfiguracionGeneral().getPathShapefile();
    else path = null;
    String realPath = getPathRealAplicacion(request, path);
    return new ResponseEntity<EncapsuladorListSW<TablaFuenteDatosDto>>(
        gestorCUFuente.listarTablasFuenteExterna(id, realPath), responseHeaders, HttpStatus.OK);
  }
  @RequestMapping(method = RequestMethod.GET, value = "/probarFuente/{id}/{tipo}")
  public ResponseEntity<EncapsuladorBooleanSW> probarFuente(
      @PathVariable("id") Long id, @PathVariable("tipo") String tipo, HttpServletRequest request) {
    String path;
    String caracterSeparador = getServicioConfiguracionGeneral().getCaracterSeparadorCSV();

    if (tipo.equals(TiposFuente.CSV.getId())) path = getServicioConfiguracionGeneral().getPathCsv();
    else if (tipo.equals(TiposFuente.GML.getId()))
      path = getServicioConfiguracionGeneral().getPathGml();
    else if (tipo.equals(TiposFuente.SHAPEFILE.getId()))
      path = getServicioConfiguracionGeneral().getPathShapefile();
    else path = null;

    String realPath = getPathRealAplicacion(request, path);
    return new ResponseEntity<EncapsuladorBooleanSW>(
        gestorCUFuente.probarFuente(id, realPath, caracterSeparador),
        responseHeaders,
        HttpStatus.OK);
  }
  @RequestMapping(method = RequestMethod.POST, value = "/borraFuente/{id}/{tipo}")
  public ResponseEntity<EncapsuladorPOSTSW> borrar(
      @PathVariable("id") Long id, @PathVariable("tipo") String tipo, HttpServletRequest request) {
    String path;

    if (tipo.equals(TiposFuente.CSV.getId())) path = getServicioConfiguracionGeneral().getPathCsv();
    else if (tipo.equals(TiposFuente.GML.getId()))
      path = getServicioConfiguracionGeneral().getPathGml();
    else if (tipo.equals(TiposFuente.SHAPEFILE.getId()))
      path = getServicioConfiguracionGeneral().getPathShapefile();
    else path = null;

    String realPath = getPathRealAplicacion(request, path);
    EncapsuladorErroresSW errores = new EncapsuladorErroresSW();
    EncapsuladorPOSTSW<FuenteDto> encapsulador =
        new EncapsuladorPOSTSW<FuenteDto>(gestorCUFuente.borra(id, realPath, errores), errores);
    ResponseEntity<EncapsuladorPOSTSW> respuesta =
        new ResponseEntity<EncapsuladorPOSTSW>(encapsulador, HttpStatus.OK);
    return respuesta;
  }
  @RequestMapping(method = RequestMethod.GET, value = "/listaFuentes")
  public ResponseEntity<EncapsuladorListSW<FuenteDto>> cargaTodos() {

    return new ResponseEntity<EncapsuladorListSW<FuenteDto>>(
        gestorCUFuente.cargaTodos(), responseHeaders, HttpStatus.OK);
  }
 @RequestMapping(method = RequestMethod.GET, value = "/fuente/{id}")
 public ResponseEntity<FuenteDto> cargaPorId(@PathVariable("id") Long id) {
   return new ResponseEntity<FuenteDto>(gestorCUFuente.carga(id), responseHeaders, HttpStatus.OK);
 }