/// /////////////////////////////////////////////////////////////// private CResultAErreur ReadObjetEtDependances(CObjetDonneeAIdNumeriqueAuto source) { CResultAErreur result = CResultAErreur.True; //Charge tous les parents et tous les fils foreach (CInfoRelation relation in CContexteDonnee.GetListeRelationsTable(source.GetNomTable())) { //Relation parente if (relation.TableFille == source.GetNomTable()) { CObjetDonneeAIdNumeriqueAuto parent = (CObjetDonneeAIdNumeriqueAuto)source.GetParent(relation.ChampsFille[0], CContexteDonnee.GetTypeForTable(relation.TableParente)); if (parent != null) { parent.AssureData(); } } else { if (relation.Composition) { CListeObjetsDonnees liste = source.GetDependancesListe(relation.TableFille, relation.ChampsFille[0]); foreach (CObjetDonneeAIdNumeriqueAuto objetFils in liste) { objetFils.AssureData(); ReadObjetEtDependances(objetFils); } } } } return(result); }
/// /////////////////////////////////////////////////////////////// /// <summary> /// Remplit l'objet à importer avec les données du XML. /// LA fonction ne fait pas de sauvegarde, et ne s'occupe pas du mode d'édition. /// C'est l'appelant qui doit s'en charger /// </summary> /// <param name="strNomFichier"></param> /// <param name="nIdSession"></param> /// <param name="objetAImporter"></param> /// <returns></returns> public CResultAErreur ImportXml( DataSet ds, int nIdSession, CObjetDonneeAIdNumeriqueAuto objetAImporter, IInterfaceImportObjetDonnee interfaceImport) { CResultAErreur result = CResultAErreur.True; try { DataTable tableSource = ds.Tables[objetAImporter.GetNomTable()]; if (tableSource == null || tableSource.Rows.Count == 0) { result.EmpileErreur(I.T("The import file does not contain the table @1|174", objetAImporter.GetNomTable())); return(result); } foreach (DataTable table in ds.Tables) { DataColumn col = new DataColumn(c_colIsMappe, typeof(bool)); col.DefaultValue = false; table.Columns.Add(col); } ReadObjetEtDependances(objetAImporter); DataRow rowSource = tableSource.Rows[0]; result = ImporteObjet(rowSource, objetAImporter, interfaceImport); } catch (Exception e) { result.EmpileErreur(new CErreurException(e)); } return(result); }