//---------------------------------------------------- public int Compare(IElementDeGantt elt1, IElementDeGantt elt2) { int nResult = 0; if (m_propriete == null) { if (elt1 != null && elt2 != null) { nResult = elt1.IndexTri.CompareTo(elt2.IndexTri); } if (nResult == 0) { nResult = elt1.DateDebut.CompareTo(elt2.DateDebut); } } else { if (!m_bOptimiseurSet) { m_optimiseur = CInterpreteurProprieteDynamique.GetOptimiseur(elt1.GetType(), m_propriete.NomPropriete); m_bOptimiseurSet = true; } try { object val1 = null; object val2 = null; if (m_optimiseur != null) { val1 = m_optimiseur.GetValue(elt1); val2 = m_optimiseur.GetValue(elt2); } else { val1 = CInterpreteurProprieteDynamique.GetValue(elt1, m_propriete); val2 = CInterpreteurProprieteDynamique.GetValue(elt2, m_propriete); } if (val1 == val2) { if (m_parametreSuivant != null) { return(m_parametreSuivant.Compare(elt1, elt2)); } return(0); } nResult = 0; if (val1 is IComparable) { nResult = ((IComparable)val1).CompareTo(val2); } } catch { } } if (m_bDecroissant) { nResult = -nResult; } return(nResult); }
/// ///////////////////////////////////////////////////////// protected object GetValeurChamp(object source, CDefinitionProprieteDynamique propriete) { CDefinitionProprieteDynamiqueVariableFormule defFormule = propriete as CDefinitionProprieteDynamiqueVariableFormule; if (defFormule != null) { return(GetValeurVariable(defFormule)); } if (source != null && m_bUseOptimiseurs) { Type tp = source.GetType(); string strKey = tp.ToString() + "/" + propriete.NomPropriete; IOptimiseurGetValueDynamic optimiseur = null; bool bDejaCherche = false; if (m_dicOptimiseurs.TryGetValue(strKey, out optimiseur)) { bDejaCherche = true; } if (!bDejaCherche) { optimiseur = CInterpreteurProprieteDynamique.GetOptimiseur(tp, propriete.NomPropriete); m_dicOptimiseurs[strKey] = optimiseur; } if (optimiseur != null) { return(optimiseur.GetValue(source)); } } CResultAErreur result = CInterpreteurProprieteDynamique.GetValue(source, propriete, m_cache); if (result) { return(result.Data); } if (m_oldInterpreteur != null) { return(m_oldInterpreteur.GetValue(source, propriete)); } return(null); }
public override object GetValeur(object obj, CCacheValeursProprietes cacheValeurs, CRestrictionUtilisateurSurType restriction) { IApplatisseurProprietes applatisseur = obj as IApplatisseurProprietes; if (applatisseur != null) { obj = applatisseur.GetObjetParDefaut(); } if (m_strCleRestriction == "") { if (m_champOrigine is CDefinitionProprieteDynamiqueChampCustom) { CDbKey keyChamp = ((CDefinitionProprieteDynamiqueChampCustom)m_champOrigine).DbKeyChamp; CChampCustom champ = new CChampCustom(CContexteDonneeSysteme.GetInstance()); if (champ.ReadIfExists(keyChamp)) { m_strCleRestriction = champ.CleRestriction; } } else if (m_champOrigine != null) { m_strCleRestriction = m_champOrigine.NomProprieteSansCleTypeChamp; } } if (restriction != null && m_strCleRestriction != "" && (restriction.GetRestriction(m_strCleRestriction) & ERestriction.Hide) == ERestriction.Hide) { return(null); } if (!m_bOptimFaite && obj != null) { m_bOptimFaite = true; if (obj is CObjetDonnee) { m_strChampOrigineOptim = ""; PropertyInfo info = obj.GetType().GetProperty(m_champOrigine.NomProprieteSansCleTypeChamp); //Il faut absolument stocker le type, car si //Le champ vient d'une interface, tous les éléments ne sont pas forcement //du même type, et ne proviennent pas forcement du même champ m_typeOptim = obj.GetType(); if (info != null) { object[] attribs = info.GetCustomAttributes(typeof(AccesDirectInterditAttribute), true); if (attribs.Length == 0) { attribs = info.GetCustomAttributes(typeof(TableFieldPropertyAttribute), true); if (attribs != null && attribs.Length > 0) { m_strChampOrigineOptim = ((TableFieldPropertyAttribute)attribs[0]).NomChamp; } } } } if (m_strChampOrigineOptim == "") { m_optimiseur = CInterpreteurProprieteDynamique.GetOptimiseur(obj.GetType(), m_champOrigine.NomPropriete); } } if (m_strChampOrigineOptim != "" && obj is CObjetDonnee && obj.GetType() == m_typeOptim) { return(((CObjetDonnee)obj).Row[m_strChampOrigineOptim]); } else if (m_optimiseur != null) { return(m_optimiseur.GetValue(obj)); } else { return(CInterpreteurProprieteDynamique.GetValue(obj, ChampOrigine, cacheValeurs).Data); } }