//-------------------------------------------------------------- private void SetOption(TreeNode node, EModeComparaisonEO mode) { if (node != null) { COptionCorrespondanceEO option = (COptionCorrespondanceEO)node.Tag; option.ModeComparaison = mode; RedrawNode(node); } }
//------------------------------------------ public COptionCorrespondanceEO(CTypeEntiteOrganisationnelle typeEO, EModeComparaisonEO mode) { TypeEO = typeEO; m_modeComparaison = mode; }
//--------------------------------------------- /// <summary> /// Retourne le filtre à appliquer à un élément pour obtenir tous les éléments /// ayant en commun les types d'EO demandés /// </summary> /// <param name="element"></param> /// <param name="typesCommuns"></param> /// <param name="bFillesSeulement">Indique que seules le EOS = ou filles sont prises en compte (true), /// ou seules les EOs parentes (false)</param> /// <returns></returns> public static CFiltreData GetFiltrePourTypeEosCommuns(IElementAEO element, List <COptionCorrespondanceEO> typesCommuns) { CFiltreData filtre = null; Dictionary <COptionCorrespondanceEO, Dictionary <string, EModeComparaisonEO> > tableEOS = new Dictionary <COptionCorrespondanceEO, Dictionary <string, EModeComparaisonEO> >(); foreach (CEntiteOrganisationnelle eo in CUtilElementAEO.GetToutesEOs(element)) { foreach (COptionCorrespondanceEO option in typesCommuns) { Dictionary <string, EModeComparaisonEO> dicoOption = null; if (tableEOS.ContainsKey(option)) { dicoOption = tableEOS[option]; } else { dicoOption = new Dictionary <string, EModeComparaisonEO>(); tableEOS[option] = dicoOption; } switch (option.ModeComparaison) { case EModeComparaisonEO.FillesUniquement: if (eo.TypeEntite == option.TypeEO) { dicoOption[eo.CodeSystemeComplet] = option.ModeComparaison; } else if (eo.TypeEntite.IsChildOf(option.TypeEO)) { dicoOption[eo.GetParent(option.TypeEO).CodeSystemeComplet] = option.ModeComparaison; } else if (option.TypeEO.IsChildOf(eo.TypeEntite)) { foreach (CEntiteOrganisationnelle eoFille in eo.GetChilds(option.TypeEO)) { dicoOption[eoFille.CodeSystemeComplet] = option.ModeComparaison; } } break; case EModeComparaisonEO.ParentsUniquement: case EModeComparaisonEO.BrancheComplete: CEntiteOrganisationnelle eoTmp = eo; string strLib = option.TypeEO.Libelle; while (eoTmp.TypeEntite.IsChildOf(option.TypeEO) && !eoTmp.TypeEntite.Equals(option.TypeEO)) { eoTmp = eoTmp.EntiteParente; } strLib = eoTmp.Libelle; if (eoTmp != null && eoTmp.TypeEntite.Equals(option.TypeEO)) { while (eoTmp != null) { dicoOption[eoTmp.CodeSystemeComplet] = option.ModeComparaison; eoTmp = eoTmp.EntiteParente; } } break; case EModeComparaisonEO.Egalite: if (eo.TypeEntite == option.TypeEO) { dicoOption[eo.CodeSystemeComplet] = option.ModeComparaison; } break; } } } if (tableEOS.Count > 0) { string strFiltreEO = ""; int nIndex = 1; filtre = new CFiltreData(""); foreach (Dictionary <string, EModeComparaisonEO> dico in tableEOS.Values) { if (dico.Count != 0) { strFiltreEO += "("; foreach (KeyValuePair <string, EModeComparaisonEO> entry in dico) { string strCodeEO = entry.Key; EModeComparaisonEO mode = entry.Value; strFiltreEO += CUtilElementAEO.c_champEO + " like @" + (nIndex++) + " or "; switch (mode) { case EModeComparaisonEO.FillesUniquement: filtre.Parametres.Add("%~" + strCodeEO + "%"); break; case EModeComparaisonEO.ParentsUniquement: case EModeComparaisonEO.Egalite: filtre.Parametres.Add("%~" + strCodeEO + "~%"); break; case EModeComparaisonEO.BrancheComplete: filtre.Parametres.Add("%~" + strCodeEO + "%"); break; } } strFiltreEO = strFiltreEO.Substring(0, strFiltreEO.Length - 4) + ") and "; } } if (strFiltreEO.Length > 0) { strFiltreEO = strFiltreEO.Substring(0, strFiltreEO.Length - 5); filtre.Filtre = strFiltreEO; } } return(filtre); }