//----------------------------------------------- public void RegisterDbKey(CDbKey key) { if (key != null) { m_setKeys.Add(key); } }
//---------------------------------------------------- public void TraiteDbKey(ref CDbKey key) { CDbKey.SerializeKey(this, ref key); if (Mode == ModeSerialisation.Lecture) { TrackDbKeyReaded(key); } }
//---------------------------------------------------- public void TrackDbKeyReaded(string strUniversalId) { if (strUniversalId != null) { CDbKey key = CDbKey.GetNewDbKeyOnUniversalIdANePasUtiliserEnDehorsDeCDbKeyAddOn(strUniversalId); TrackDbKeyReaded(key); } }
//---------------------------------------------------- public void TrackDbKeyReaded(CDbKey key) { if (key != null) { foreach (CDbKeyReaderTracker tracker in m_listeDbKeyTrackers) { tracker.RegisterDbKey(key); } } }
//---------------------------------------------------- public static CDbKey GetNewDbKeyOnUniversalIdANePasUtiliserEnDehorsDeCDbKeyAddOn(string strIdUniversel) { CDbKey key = new CDbKey(strIdUniversel); //On ne doit pas stocker l'ancien ID //car sinon le hashcode n'est pas le bon, donc, on ne retrouve plus //la valeur dans un dictionnaire ! //C'est pour cela que les CDbkey old sont convertis en DbKey à UniversalID //à la lecture return(key); }
//---------------------------------------------------- internal static void ReadFromOldId(C2iSerializer ser, ref CDbKey key) { int nTmp = 0; ser.TraiteInt(ref nTmp); if (nTmp >= 0) { key = new CDbKey(nTmp); } return; }
//---------------------------------------------------- public void ReadDbKeyFromOldId(ref CDbKey key, Type typeObjet) { CDbKey.ReadFromOldId(this, ref key); if (key != null) { foreach (AfterReadOldDbKeyCompatibleDelegate f in m_listeTraitementsSupplementairesAfterReadOldId) { f(key, typeObjet); } TrackDbKeyReaded(key); } }
//---------------------------------------------------- public override bool Equals(object obj) { CDbKey obj2 = obj as CDbKey; if (obj2 != null) { if (obj2.m_strIdUniversel.Length > 0 && m_strIdUniversel.Length > 0) { return(obj2.m_strIdUniversel.Equals(m_strIdUniversel)); } else { if (m_nIdPourCompatibliteQuonNeDoitPlusUtiliser != null && obj2.m_nIdPourCompatibliteQuonNeDoitPlusUtiliser != null) { return(m_nIdPourCompatibliteQuonNeDoitPlusUtiliser.Equals(obj2.m_nIdPourCompatibliteQuonNeDoitPlusUtiliser)); } } } return(false); }
//----------------------------------------------- /// <summary> /// Crée une clé à partir d'une valeur serializable /// </summary> /// <param name="strValue"></param> /// <returns></returns> public static CDbKey CreateFromStringValue(string strValue) { if (strValue.ToUpper().StartsWith(c_IdInSerialize)) { try { int nTmp = Int32.Parse(strValue.Substring(c_IdInSerialize.Length)); return(CDbKey.GetNewDbKeyOnIdAUtiliserPourCeuxQuiNeGerentPasLeDbKey(nTmp)); } catch { return(null); } } if (strValue.Length < 10) //Si ça peut être juste un entier ! { int nId; if (Int32.TryParse(strValue, out nId)) { return(CDbKey.GetNewDbKeyOnIdAUtiliserPourCeuxQuiNeGerentPasLeDbKey(nId)); } } return(new CDbKey(strValue)); }
//---------------------------------------------------- internal static void SerializeKey(C2iSerializer ser, ref CDbKey key) { switch (ser.Mode) { case ModeSerialisation.Lecture: key = null; string strTmp = ""; ser.TraiteString(ref strTmp); if (strTmp.Length > 0) { key = CDbKey.CreateFromStringValue(strTmp); } break; case ModeSerialisation.Ecriture: string strTmpWrite = ""; if (key != null) { strTmpWrite = key.StringValue; } ser.TraiteString(ref strTmpWrite); break; } }