예제 #1
0
        /// ///////////////////////////////////////
        public override bool Equals(object obj)
        {
            if (!(obj is CReferenceObjetDonnee))
            {
                return(false);
            }
            CReferenceObjetDonnee objRef = (CReferenceObjetDonnee)obj;

            if (objRef.m_typeObjet != m_typeObjet)
            {
                return(false);
            }
            if (m_keyObjet != null && objRef.DbKeyObjet != null)
            {
                return(m_keyObjet.Equals(objRef.DbKeyObjet));
            }
            if ((m_keyObjet == null) != (objRef.DbKeyObjet == null))
            {
                return(false);
            }

            if (objRef.m_cles.Length != m_cles.Length)
            {
                return(false);
            }
            for (int nCle = 0; nCle < m_cles.Length; nCle++)
            {
                if (!objRef.m_cles[nCle].Equals(m_cles[nCle]))
                {
                    return(false);
                }
            }
            return(true);
        }
예제 #2
0
        /// /// ///////////////////////////////////////
        public CReferenceObjetDonnee GetCloneReferenceObjetDonnee()
        {
            CReferenceObjetDonnee r = new CReferenceObjetDonnee();

            r.m_cles      = m_cles;
            r.m_keyObjet  = m_keyObjet;
            r.m_typeObjet = m_typeObjet;
            return(r);
        }
 //------------------------------------------------------
 public CReferenceObjetDonneeDragDropData(CReferenceObjetDonnee reference)
 {
     if (reference != null)
     {
         m_objets = new CReferenceObjetDonnee[] { reference }
     }
     ;
     else
     {
         m_objets = null;
     }
 }
예제 #4
0
 public bool RemoveObjet(CReferenceObjetDonnee objet)
 {
     foreach (CReferenceObjetDonneeAvecLibelle refe in m_listeObjets)
     {
         if (refe.ReferenceObjet != null &&
             refe.ReferenceObjet.Equals(objet))
         {
             m_listeObjets.Remove(refe);
             return(true);
         }
     }
     return(false);
 }
예제 #5
0
        public bool AddObjet(CReferenceObjetDonnee objet)
        {
            bool bExiste = false;

            foreach (CReferenceObjetDonneeAvecLibelle refe in m_listeObjets)
            {
                if (((CReferenceObjetDonnee)refe).Equals(objet))
                {
                    bExiste = true;
                    break;
                }
            }
            if (!bExiste)
            {
                m_listeObjets.Add(new CReferenceObjetDonneeAvecLibelle(objet));
                return(true);
            }
            return(false);
        }
예제 #6
0
        /// ///////////////////////////////////////////////
        public void AddObjetDonneeOption(CObjetDonnee objet)
        {
            CReferenceObjetDonnee refobj = new CReferenceObjetDonnee(objet);

            m_tableIdObjets[refobj] = true;
        }
예제 #7
0
 public CReferenceObjetDonneeAvecLibelle(CReferenceObjetDonnee reference)
 {
     m_reference = reference;
 }
예제 #8
0
        //----------------------------------------------------------------------------
        public static List <CObjetDonnee> GetObjets(
            IEnumerable <CReferenceObjetDonnee> lstReferences,
            CContexteDonnee contexte
            )
        {
            List <CObjetDonnee> lstObjets = new List <CObjetDonnee>();
            //Trie les références par type
            Dictionary <Type, List <CReferenceObjetDonnee> > dicTypeToDbKey = new Dictionary <Type, List <CReferenceObjetDonnee> >();

            foreach (CReferenceObjetDonnee reference in lstReferences)
            {
                if (reference.TypeObjet != null)
                {
                    if (reference.DbKeyObjet != null)
                    {
                        List <CReferenceObjetDonnee> lst = null;
                        if (!dicTypeToDbKey.TryGetValue(reference.TypeObjet, out lst))
                        {
                            lst = new List <CReferenceObjetDonnee>();
                            dicTypeToDbKey[reference.TypeObjet] = lst;
                        }
                        lst.Add(reference);
                    }
                    else
                    {
                        lstObjets.Add(reference.GetObjet(contexte));
                    }
                }
            }
            foreach (KeyValuePair <Type, List <CReferenceObjetDonnee> > kv in dicTypeToDbKey)
            {
                //Lecture par paquets de 200 éléments
                int nIndex       = 0;
                int nNb          = kv.Value.Count;
                int nNbParPaquet = 200;
                for (nIndex = 0; nIndex < nNb; nIndex += nNbParPaquet)
                {
                    StringBuilder bl   = new StringBuilder();
                    int           nMax = Math.Min(nIndex + nNbParPaquet, nNb);
                    for (int nRead = nIndex; nRead < nMax; nRead++)
                    {
                        CReferenceObjetDonnee rf = kv.Value[nRead];
                        {
                            bl.Append(rf.DbKeyObjet.GetValeurStringFiltre());
                            bl.Append(",");
                        }
                    }
                    if (bl.Length > 0)
                    {
                        bl.Remove(bl.Length - 1, 1);
                        CListeObjetsDonnees lst = new CListeObjetsDonnees(contexte, kv.Key);
                        lst.Filtre = new CFiltreData(CObjetDonnee.c_champIdUniversel + " in (" + bl.ToString() + ")");
                        foreach (CObjetDonnee objet in lst)
                        {
                            lstObjets.Add(objet);
                        }
                    }
                }
            }
            return(lstObjets);
        }