Beispiel #1
0
 //--------------------------------------------------------------
 private void SetOption(TreeNode node, EModeComparaisonEO mode)
 {
     if (node != null)
     {
         COptionCorrespondanceEO option = (COptionCorrespondanceEO)node.Tag;
         option.ModeComparaison = mode;
         RedrawNode(node);
     }
 }
Beispiel #2
0
 //------------------------------------------
 public COptionCorrespondanceEO(CTypeEntiteOrganisationnelle typeEO, EModeComparaisonEO mode)
 {
     TypeEO            = typeEO;
     m_modeComparaison = mode;
 }
Beispiel #3
0
        //---------------------------------------------
        /// <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);
        }