Cómo crear la persistencia de DynClasses en gvSIG 2.0

En el post anterior, descubrimos cómo definir y hacer uso de los DynObjects en gvSIG 2.0, pero no se documento la forma de hacer que la información que en ellos se contiene fuera persistente.

En este punto, continuamos profundizando en este mecanismo, continuando por los pasos marcados para llevar a cabo este proceso.

Persistencia de los DynObjects

  • Deberemos definir los atributos del objeto que queremos persistir. En nuestro caso, se persisten los siguientes atributos:
    public static void registerPersistenceDefinition(){
      PersistenceManager manager = ToolsLocator.getPersistenceManager();
      DynStruct definition = manager.getDefinition("ChartProperties");
      if(definition == null){
        definition = manager.addDefinition(AbstractChartProperties.class, "ChartProperties" , "description", null , null);
        definition.addDynFieldString("name").setMandatory(false);
        definition.addDynFieldString("title").setMandatory(true);
        definition.addDynFieldString("type").setMandatory(true);
        definition.addDynFieldObject("service").setClassOfValue(ChartService.class);
      } 
    }

    En apariencia es similar, pero contiene las siguientes diferencias:

    • La primera es fundamental: se define la estructura en dos métodos diferentes, ya que no siempre todo lo que se maneja en el DynObject, se quiere persistir.
    • Por otro lado, en lugar de una DynClass, se obtiene un DynStruct (obtenido del PersistenceManager, en lugar del _DynObjectManager)
    • Los DynStruct se definen en el namespace“Persistent”, por lo que no hay que indicarlo a la hora de buscar definción
      ... = manager.getDefinition("ChartProperties");
      ...

      y cambia ligeramente a la hora de añadir la definición al Manager

      ...
      definition = manager.addDefinition(AbstractChartProperties.class, "ChartProperties" , "description", null , null);
      ...

    Este método de registro de la persistencia de la DynClass también deberá ser llamado desde la librería correspondiente después de la definición.

  • Despues tendremos que hacer que nuestra clase implemente el interfaz Persistent.
    public interface ChartProperties extends DynObject, Persistent
  • Esto nos añadirá un par de métodos a implementar, para guardar los datos y recuperarlos, respectivamente:
    public void saveToState(PersistentState state) throws PersistenceException;
    
    public void loadFromState(PersistentState state) throws PersistenceException;

    Estos métodos son los encargados de persistir y recuperar los atributos de nuestra clase. En nuestro caso, se persisten los siguientes atributos:

    public void saveToState(PersistentState state) throws PersistenceException {
      state.set("name", this.getChartName());
      state.set("type", this.getChartType());
      state.set("title", this.getChartTitle());
    }
    
    public void loadFromState(PersistentState state)
            throws PersistenceException {
      this.setChartName(state.getString("name"));
      this.setChartType(state.getString("type"));
      this.setChartTitle(state.getString("title"));
    }
    

Con todo esto, ya disponemos de las herramientas suficientes para poder manejarnos con los DynObjects en gvSIG y disfrutar de los beneficios que nos aportan.

¡Suerte y a por ellos! 😉

This entry was posted in development, gvSIG Desktop, spanish. Bookmark the permalink.

One Response to Cómo crear la persistencia de DynClasses en gvSIG 2.0

  1. Pingback: DynObjects en gvSIG 2.0 | gvSIG blog

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s