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 13 years ago

Last modified 13 years ago

#902 closed doubt

Guadado de Data Set — at Version 1

Reported by: mruiz Owned by: Pedro Gea
Priority: major Milestone: Release 0.6
Component: Persistence Keywords:
Cc:

Description (last modified by Pedro Gea)

Hola,
tengo dos conjunto de data set con nombres iguales, con diferentes versiones (1.0 y 2.0), que quiero juntar en un solo data set (cada conjunto), de forma que tenga 2 data set.
La secuencia es la siguiente:

  //Seleccionamos los datas set que queremos juntar de una versión:
  Set sCatDS_Repo = Select(OptCob.Repo::GetDataSetsCatalog(?),
  Real(NameBlock c)
  {
    And(TextFind(c::name, sPortTxt),
        TextFind(c::name, "Row"),
        Not(TextFind(c::name, "Cov")),
        Not(TextFind(c::name, "All")),
        Not(TextFind(c::name, "Hou")),
        (c::version == DS.Version))
  });

  //Cargamos el primer DataSet
  NameBlock ds_1 = MMS::Container::GetObject_Load(
  "DataSet",
  [[
    Text DataSetName = (sCatDS_Repo[1])::name,
    Text DataSetVersion = (sCatDS_Repo[1])::version
  ]],
  OptCob.Repo);
  Text nameDs1 = ds_1::GetIdentifier(?);

  //Hacemos una copia para usarlo como DataSet 'Padre'
  NameBlock dsFat = ds_1::Duplicate(?);
  //Text nameDsFat = Sub(nameDs1, 1, TextFind(nameDs1, "Row")-1)+"All";
  Real posRow = TextFind(nameDs1, "Row");
  Text nameDsFat = Sub(nameDs1, 1, posRow+3) +"All";//_Cov.All;//Revisar
  Real existDS = OptCob.Repo::FindDataSet(nameDsFat);
  Real If(Not(existDS), -1, OptCob.Repo::RemoveDataSet(nameDsFat));
  Real dsFat::SetName(nameDsFat);

  //Vamos uniendo el resto de DataSets al 'Padre'
  Set sJoin = For(2, Card(sCatDS_Repo), Real(Real n)
  {
    //Real n = 2;
    NameBlock dsSne = sCatDS_Repo[n];
    Text dsName = dsSne::name;
    Text dsVer = dsSne::version;
    WriteLn("\tAñadiendo el DataSet "+ dsName +"...\t"+ Time);
  
    Set sInfoDSn =
    [[
      Text DataSetName = dsName,
      Text DataSetVersion = dsVer //de momento el DS es siempre v1.0.
    ]];
    NameBlock ds_n = MMS::Container::GetObject_Load("DataSet", sInfoDSn,
                                                    OptCob.Repo);

    Real join = dsFat::JoinDataSet(ds_n);
    //Real dsFat::SetAttribute("_cov", "All");
    Real MMS::Container::RemoveDataSet(sInfoDSn); 
    join
  });
  Real dsFat::SetAttribute("_row", "All");

Text ver = dsFat::GetVersion(?);

  WriteLn("Guardando el DataSet padre ("+ nameDsFat +")...\t"+ Time);
  Real save = dsFat::Save_AtRepository(OptCob.Repo, "Default");

con esto tendríamos el data set padre de una versión.
Si repetimos este proceso para la segunda versión, cuando hace SAve_AtRepository guarda el data set padre con la segunda versión pero desaparece el de la primera versión.
Si volvemos a repetir este proceso con la primera versión de data set, al guardar el padre desaparece la 2 versión.
Es como si al tener el mismo nombre machacase la versión anterior y le pusiese la nueva versión.

Saludos

Change History (1)

comment:1 Changed 13 years ago by Pedro Gea

Component: GeneralPersistence
Description: modified (diff)
Milestone: Release 0.6
Status: newaccepted
Type: defectdoubt
Note: See TracTickets for help on using tickets.