[Gvsig_desarrolladores] Persistencia entre proyectos

Vicente Caballero vicente.caballero en iver.es
Mie Mayo 25 11:14:41 CEST 2005


Hola Jaume.

No se si te faltará algún atributo o no, pero la creación de una capa se 
debe de hacer en LayerFactory y para recuperarla tienes que añadir una 
condición más (en public void setXMLEntity(XMLEntity xml) throws 
XMLException de FLayers). Y como ejemplo te vendrá bien el caso de WMS:

else if (className.equals(FLyrWMS.class.getName())) {
     try {
      layer = LayerFactory.createLayer(s[i],
        StringUtilities.string2Rect(
         xml.getChild(i).getStringProperty("fullExtent")),
        new URL(xml.getChild(i).getStringProperty("host")),
        xml.getChild(i).getStringProperty("format"),
        xml.getChild(i).getStringProperty("layerQuery"),
        xml.getChild(i).getStringProperty("infoLayerQuery"),
        xml.getChild(i).getStringProperty("srs"));
     } catch (MalformedURLException e) {
      throw new XMLException(e);
     }
    }

En este caso no se utiliza el setXMLEntity() de FLyrWMS, se carga en FLayers 
todos los atributos de la capa que queremos recuperar, si necesitas 
inicializar la capa con más atributos de los que tienes pensado para el 
método createLayer de LayerFactory de dicha capa, puedes añadir el método 
setXMLEntity de la capa WCS y ejecutarlo desde el setXMLEntity de FLayers.
.
Espero que te ayude esto.
Un saludo:

 Vicente Caballero Navarro
  Equipo de desarrollo gvSIG
  http://www.gvsig.gva.es
  IVER Tecnologías de la Información
  C/ Salamanca 50-52. Valencia 46005
  Tel: 96 316 34 00

  Valencia - España

----- Original Message ----- 
From: "Jaume Dominguez" <jaume.dominguez en iver.es>
To: "Desarrolladors gvSIG" <gvsig_desarrolladores en runas.cap.gva.es>
Sent: Wednesday, May 25, 2005 10:31 AM
Subject: [Gvsig_desarrolladores] Persistencia entre proyectos


Hola, estoy intentando averiguar qué es exactamente lo que se debe de
hacer para guardar las propiedades de una capa cuando guardamos el
proyecto, para posteriormente recuperarla sin tener que pasarse por el
wizard y añadirla.

Estos son los métodos que IMAGINO que tengo que incluir en la clase
FLyrWCS. No se si estoy olvidando algo, que no he entendido el 
funcionamiento.

/**
* Devuelve el XMLEntity con la información necesaria para reproducir la
* capa.
*
* @return XMLEntity.
* @throws XMLException
*/
public XMLEntity getXMLEntity() throws XMLException {
XMLEntity xml = super.getXMLEntity();

xml.putProperty("wcs.fullExtent", StringUtilities.rect2String(fullExtent));
xml.putProperty("wcs.host", host.toExternalForm());
xml.putProperty("wcs.layerQuery", coverageQuery);
xml.putProperty("wcs.format", format);
xml.putProperty("wcs.srs", SRS);
xml.putProperty("wcs.time", time);
xml.putProperty("wcs.parameter", parameter);
xml.putProperty("wcs.label", label);
xml.putProperty("wcs.name", name);

return xml;
}

/**
* A partir del XMLEntity reproduce la capa.
*
  * @param xml XMLEntity
*
* @throws XMLException
* @throws DriverException
* @throws DriverIOException
*/
public void setXMLEntity(XMLEntity xml) throws XMLException {
super.setXMLEntity(xml);
fullExtent = StringUtilities.string2Rect(xml
.getStringProperty("wcs.fullExtent"));

try {
host = new URL(xml.getStringProperty("wcs.host"));
} catch (MalformedURLException e) {
throw new XMLException(e);
}

coverageQuery = xml.getStringProperty("wcs.layerQuery");
format = xml.getStringProperty("wcs.format");
SRS = xml.getStringProperty("wcs.srs");
time = xml.getStringProperty("wcs.time");
parameter = xml.getStringProperty("wcs.parameter");
label = xml.getStringProperty("wcs.label");
name = xml.getStringProperty("wcs.name");
}

¿Como se ve la cosa?


_______________________________________________
gvSIG_desarrolladores mailing list
gvSIG_desarrolladores en runas.cap.gva.es
http://runas.cap.gva.es/mailman/listinfo/gvsig_desarrolladores




Más información sobre la lista de distribución gvSIG_desarrolladores