private void m_lnkElementGere_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            IObjetSPVAvecObjetTimos obj = m_AlarmInfo.GetElementGere(m_ctxDonnee) as IObjetSPVAvecObjetTimos;

            if (obj != null)
            {
                CObjetDonneeAIdNumeriqueAuto objTimos = obj.ObjetTimosSansGenerique as CObjetDonneeAIdNumeriqueAuto;
                if (objTimos != null)
                {
                    CReferenceTypeForm refTypeForm = CFormFinder.GetRefFormToEdit(objTimos.GetType());
                    if (refTypeForm != null)
                    {
                        IFormNavigable frm = refTypeForm.GetForm(objTimos) as IFormNavigable;
                        Navigateur.AffichePage(frm);
                    }
                }
            }
        }
Exemple #2
0
        /// ////////////////////////////////////////////////////////
        protected override CResultAErreur  MyExecute(CContexteExecutionAction contexte)
        {
            CResultAErreur result = CResultAErreur.True;

            List <Type> lstTypesAVerifier = new List <Type>();

            //Trouve tous les types héritant de CMappableTimos
            foreach (Assembly ass in sc2i.common.CGestionnaireAssemblies.GetAssemblies())
            {
                foreach (Type tp in ass.GetTypes())
                {
                    if (typeof(IObjetSPVAvecObjetTimos).IsAssignableFrom(tp))
                    {
                        lstTypesAVerifier.Add(tp);
                    }
                }
            }
            List <string> lstTablesDansOrdre = new List <string>();

            using (CContexteDonnee ctxTmp = new CContexteDonnee(contexte.IdSession, true, false))
            {
                foreach (Type tp in lstTypesAVerifier)
                {
                    string strTable = CContexteDonnee.GetNomTableForType(tp);
                    if (strTable != null)
                    {
                        ctxTmp.GetTableSafe(strTable);
                    }
                }
                foreach (DataTable table in ctxTmp.GetTablesOrderInsert())
                {
                    lstTablesDansOrdre.Add(table.TableName);
                }
            }
            foreach (string strNomTable in lstTablesDansOrdre)
            {
                Type   tp       = CContexteDonnee.GetTypeForTable(strNomTable);
                Type   tpParent = tp;
                Type[] generics = new Type[0];
                while (tpParent != null && generics.Length == 0)
                {
                    if (tpParent.IsGenericType && tpParent.GetGenericTypeDefinition() == typeof(CMappableAvecTimos <,>))
                    {
                        generics = tpParent.GetGenericArguments();
                    }
                    tpParent = tpParent.BaseType;
                }
                if (generics.Length == 0)
                {
                    continue;
                }

                IObjetSPVAvecObjetTimos obj = Activator.CreateInstance(tp, new object[] { contexte.ContexteDonnee }) as IObjetSPVAvecObjetTimos;
                Type typeTimos = obj.GetTypeObjetsTimos();
                //Lit tous les objets TIMOS
                CListeObjetsDonnees lstObjetsTimos = new CListeObjetsDonnees(contexte.ContexteDonnee, typeTimos);
                lstObjetsTimos.AssureLectureFaite();
                CListeObjetsDonnees lstObjetsSpv = new CListeObjetsDonnees(contexte.ContexteDonnee, obj.GetType());
                lstObjetsSpv.AssureLectureFaite();
                string strIdObjetTimosInObjetSpv = obj.GetChampIdObjetTimos();
                Type   tpMappable = typeof(CMappeurTimos <,>).MakeGenericType(generics);
                IMappeurTimosNonGenerique mappeur = Activator.CreateInstance(tpMappable) as IMappeurTimosNonGenerique;
                foreach (CObjetDonneeAIdNumerique objTimos in (CObjetDonneeAIdNumerique[])lstObjetsTimos.ToArray(typeof(CObjetDonneeAIdNumerique)))
                {
                    CObjetDonneeAIdNumerique objSpv = Activator.CreateInstance(tp, new object[] { contexte.ContexteDonnee }) as CObjetDonneeAIdNumerique;
                    if (!objSpv.ReadIfExists(new CFiltreData(strIdObjetTimosInObjetSpv + "=@1",
                                                             objTimos.Id), false))
                    {
                        mappeur.GetObjetSpvFromObjetTimosAvecCreationSansGenerique(objTimos);
                    }
                }
            }
            return(result);
        }