close Warning: Can't synchronize with repository "(default)" (/var/svn/mms does not appear to be a Subversion repository.). Look in the Trac log for more information.

Opened 14 years ago

Last modified 14 years ago

#430 closed enhancement

Actualizar (o añadir) un DataSet de un modelo — at Version 4

Reported by: atorre Owned by:
Priority: critical Milestone: Release 0.6
Component: Edition Keywords: Model, DataSet, actualizar
Cc:

Description (last modified by Pedro Gea)

Hola MMS,
debería existir una opción de actualizar/sincronizar un DataSet de un modelo a partir de una actualización del DataSet o de una nueva versión.

Actualmente, si ya se se ha hecho un proceso de construcción del DataSet y, a partir de éste, se ha creado el modelo, cuando se quiere añadir una nueva variable, hay que generar el DataSet de nuevo con la nueva variable (obvio) y crear de nuevo el modelo a partir de éste.

Change History (4)

comment:1 Changed 14 years ago by atorre

Por si no está contemplado en lo anterior: estaría bien poder eliminar un DataSet o directamente poder Reemplazar.

comment:2 Changed 14 years ago by Pedro Gea

(In [2097]) Como una alternativa a la resolución del tique #430 se introduce un método ::SetData para las @Variable que permite fijar la caché de los datos de manera alternativa, en lugar de reevaluar la expresión.
El método puede facilitar cierta actualización del dataset, actualizando cada variable con llamadas del tipo:

  // Se localiza la variable relativa a 'nuevaVariable' y se le cambian los datos por la de ésta
  Real dataSet::GetVariable(nuevaVariable::GetIdentifier(?))::SetData(nuevaVariable::GetData(?));

Refs #430

comment:3 Changed 14 years ago by atorre

No sé cuántos métodos saldrán exactamente de este ticket pero uno podría ser el de actualizar los datos de las variables a partir de un nuevo DataSet. Sigue una función de usuario que hace eso:

NameBlock MMS_Est_ReplaceDataSet_VxV(NameBlock est, NameBlock dsNew)
{
  NameBlock model = est::GetModel(1);
  NameBlock ds = model::GetDataSet(1);
  Set ds_Stat = DataSet_VarStat(ds);
  Set EvalSet(dsNew::GetVariables(0), Real(NameBlock var)
  {
    Real ds::GetVariable(var::GetIdentifier(?))::SetData(var::GetData(?));
    Real 0
  });
  Set ds_Stat_Rep = DataSet_VarStat(ds);

  Set ds_Stats = [[ ds_Stat, ds_Stat_Rep ]];

  est
};

comment:4 Changed 14 years ago by Pedro Gea

Description: modified (diff)

Se han revisado los mecanismos de enlaces entre los objetos de MMS (#556) de modo que ahora es posible sustituir las variables del dataset y comprometer la estabilidad de un modelo.

Para otros mecanismos de edición, como sustituir un objeto por otro, fusionar dos objetos, etc. Véanse los tiques: #556 y #323

Note: See TracTickets for help on using tickets.