//------------------------------------------------------------------------------- internal void Expand(CCustomizableListItem item) { using (CWaitCursor waiter = new CWaitCursor()) { CSetupSmartImportItem si = item as CSetupSmartImportItem; if (si != null && si.ChildItems.Count() == 0) { CSetupSmartImportChampEntiteItem root = si as CSetupSmartImportChampEntiteItem; if (root != null) { CreateChilds(si, root.ValeursExemples, root.ConfigMappage); } CSetupSmartImportEntiteParentItem itemParent = si as CSetupSmartImportEntiteParentItem; if (itemParent != null) { CreateChilds( si, itemParent.ValeursParent, itemParent.MappageEntiteParente != null ? itemParent.MappageEntiteParente.ConfigEntiteParente : null); } CSetupSmartImportEntiteFilleItem itemFille = si as CSetupSmartImportEntiteFilleItem; if (itemFille != null) { CreateChilds(itemFille); } } if (si != null) { si.Expand(); } Refresh(); } }
//------------------------------------------------------------------------------- private void CreateChilds(CSetupSmartImportEntiteFilleItem itemFille) { int nIndex = itemFille.Index; int nColIndex = itemFille.ColorIndex; HashSet <CDbKey> keysDone = new HashSet <CDbKey>(); if (itemFille.ValeursDeFilles != null) { foreach (CValeursProprietes val in itemFille.ValeursDeFilles) { CMappageEntiteFille mappage = itemFille.MappageEntitesFilles != null? itemFille.MappageEntitesFilles.GetMappageForEntite(val.DbKeyObjet) : null; bool bCreate = true; if (HideNullSources) { bCreate = mappage != null && mappage.Source != null; } if (bCreate) { nColIndex++; if (CSetupSmartImportItem.GetCouleur(nColIndex) == itemFille.BackColor) { nColIndex++; } CSetupSmartImportChampEntiteItem item = new CSetupSmartImportChampEntiteItem( itemFille, val, mappage != null ? mappage.Source : null, mappage != null ? mappage.ConfigMappage : null, nColIndex); InsertItem(++nIndex, item, false); if (val.DbKeyObjet != null) { keysDone.Add(val.DbKeyObjet); } } } } if (itemFille.MappageEntitesFilles != null) { IEnumerable <CMappageEntiteFille> mapsFilles = itemFille.MappageEntitesFilles.MappagesEntitesFilles; foreach (CMappageEntiteFille mapFille in mapsFilles) { if (mapFille.Source != null && mapFille.ConfigMappage != null) { CConfigMappagesSmartImport conf = mapFille.ConfigMappage; if (conf.KeyEntite == null || !keysDone.Contains(conf.KeyEntite)) { nColIndex++; if (CSetupSmartImportItem.GetCouleur(nColIndex) == itemFille.BackColor) { nColIndex++; } CSetupSmartImportChampEntiteItem item = new CSetupSmartImportChampEntiteItem( itemFille, null, mapFille.Source, conf, nColIndex); InsertItem(++nIndex, item, false); if (conf.KeyEntite != null) { keysDone.Add(conf.KeyEntite); } } } } } }
//------------------------------------------------------------------------------- private void CreateChilds(CSetupSmartImportItem si, CValeursProprietes valeurs, CConfigMappagesSmartImport configMappage) { //Champs simples HashSet <CDefinitionProprieteDynamique> set = new HashSet <CDefinitionProprieteDynamique>(); if (valeurs != null) { foreach (CDefinitionProprieteDynamique prop in valeurs.GetDefinitionsSimples()) { if (prop != null) { set.Add(prop); } } } if (configMappage != null) { foreach (CMappageChampSimple mappage in configMappage.MappagesChampsSimples) { if (mappage.Propriete != null) { set.Add(mappage.Propriete); } } } List <CDefinitionProprieteDynamique> lst = new List <CDefinitionProprieteDynamique>(set.ToArray()); lst.Sort((x, y) => x.Nom.CompareTo(y.Nom)); int nIndex = si.Index; foreach (CDefinitionProprieteDynamique def in lst) { CMappageChampSimple mappageSimple = configMappage != null? configMappage.GetMappageSimpleFor(def) : null; bool bCreate = true; if (HideNullSources) { bCreate = mappageSimple != null && mappageSimple.Source != null; } if (bCreate) { CSetupSmartImportChampSimpleItem item = new CSetupSmartImportChampSimpleItem( si, def, valeurs != null ? valeurs.GetValeurSimple(def) : null, mappageSimple, si.ColorIndex); InsertItem(++nIndex, item, false); } } //Champs parents int nColorIndex = si.ColorIndex; set.Clear(); if (valeurs != null) { foreach (CDefinitionProprieteDynamique def in valeurs.GetDefinitionsParentes()) { if (def != null) { set.Add(def); } } } if (configMappage != null) { foreach (CMappageEntiteParente map in configMappage.MappagesEntitesParentes) { if (map.Propriete != null) { set.Add(map.Propriete); } } } lst = new List <CDefinitionProprieteDynamique>(set.ToArray()); lst.Sort((x, y) => x.Nom.CompareTo(y.Nom)); foreach (CDefinitionProprieteDynamique def in lst) { CMappageEntiteParente mappageParent = configMappage != null?configMappage.GetMappageParentFor(def) : null; bool bCreate = true; if (HideNullSources) { bCreate = mappageParent != null && mappageParent.Source != null; } if (bCreate) { nColorIndex++; if (CSetupSmartImportItem.GetCouleur(nColorIndex) == si.BackColor) { nColorIndex++; } CSetupSmartImportEntiteParentItem item = new CSetupSmartImportEntiteParentItem( si, def, valeurs != null ? valeurs.GetValeurParente(def) : null, mappageParent, nColorIndex); InsertItem(++nIndex, item, false); } } set.Clear(); if (valeurs != null) { foreach (CDefinitionProprieteDynamique def in valeurs.GetDefinitionsFilles()) { if (def != null) { set.Add(def); } } } if (configMappage != null) { foreach (CMappageEntitesFilles map in configMappage.MappagesEntitesFilles) { if (map.Propriete != null) { set.Add(map.Propriete); } } } lst = new List <CDefinitionProprieteDynamique>(set.ToArray()); lst.Sort((x, y) => x.Nom.CompareTo(y.Nom)); foreach (CDefinitionProprieteDynamique def in lst) { CMappageEntitesFilles mappageFilles = configMappage != null?configMappage.GetMappageFilleFor(def) : null; bool bCreate = true; if (HideNullSources) { bCreate = mappageFilles != null && mappageFilles.MappagesEntitesFilles.Count() > 0; } if (bCreate) { CSetupSmartImportEntiteFilleItem item = new CSetupSmartImportEntiteFilleItem( si, def, valeurs, mappageFilles, si.ColorIndex ); InsertItem(++nIndex, item, false); } } }