예제 #1
0
파일: CGraphe.cs 프로젝트: ykebaili/Timos
 public void CreateGraphe(CSchemaReseau schema)
 {
     m_liens.Clear();
     m_noeuds.Clear();
     //Création des noeuds
     foreach (CSite site in schema.GetElementsLies <CSite>())
     {
         CSpvSite spvSite = CSpvSite.GetObjetSpvFromObjetTimos(site);
         if (spvSite != null)
         {
             if (GetNoeud(spvSite) == null)
             {
                 m_noeuds.Add(new CNoeud(spvSite));
             }
         }
     }
     foreach (CLienReseau lien in schema.GetElementsLies <CLienReseau>())
     {
         CSpvLiai spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(lien) as CSpvLiai;
         if (spvLiai != null)
         {
             CNoeud noeud1 = GetNoeud(spvLiai.SiteOrigine);
             CNoeud noeud2 = GetNoeud(spvLiai.SiteDestination);
             if (noeud1 != null && noeud2 != null)
             {
                 m_liens.Add(new CLien(spvLiai, noeud1, noeud2));
             }
         }
     }
 }
예제 #2
0
        public static void PropagerDependanceLien(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result)
        {
            DataTable dt = contexte.Tables[CElementDeSchemaReseau.c_nomTable];

            if (dt != null)
            {
                ArrayList rows = new ArrayList(dt.Rows);
                foreach (DataRow row in rows)
                {
                    if (row.RowState != DataRowState.Unchanged)
                    {
                        CElementDeSchemaReseau element = new CElementDeSchemaReseau(row);

                        switch (row.RowState)
                        {
                        case DataRowState.Added:
                        case DataRowState.Modified:
                            if (element != null && element.LienReseau != null &&
                                element.SchemaReseau != null && element.SchemaReseau.LienReseau != null)
                            {
                                //Il s'agit bien d'une liaison dans une liaisons
                                MajSpvLiaiLiaiC(element);
                            }
                            break;

                        case DataRowState.Deleted:
                            element.VersionToReturn = DataRowVersion.Original;
                            CLienReseau lienSupportant = element.LienReseau;
                            if (lienSupportant != null && lienSupportant.IsValide())
                            {
                                CSchemaReseau schema = element.SchemaReseau;
                                if (schema.Row.RowState == DataRowState.Deleted)
                                {
                                    schema.VersionToReturn = DataRowVersion.Original;
                                }
                                CLienReseau lienSupporte = schema.LienReseau;
                                if (lienSupporte != null && lienSupporte.IsValide())    //Il s'agit bien d'un élément support/supportant
                                {
                                    CSpvLiai liaiSupportant = CSpvLiai.GetSpvLiaiFromLienReseau(lienSupportant) as CSpvLiai;
                                    if (liaiSupportant != null)
                                    {
                                        liaiSupportant.UpdateSupportés();
                                    }
                                }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }
예제 #3
0
        public override sc2i.common.CResultAErreur MyInitChamps()
        {
            if (ObjetEdite is CLienReseau)
            {
                m_spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(ObjetEdite as CLienReseau) as CSpvLiai;
            }
            CResultAErreur result = base.MyInitChamps();

            if (!result)
            {
                return(result);
            }

            if (result && m_spvLiai != null)
            {
                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    m_spvLiai.SpvTypeAccessAlarm,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarmeBoucle),
                    m_spvLiai,
                    "SpvLiai");

                m_CablageAccesAlarm.InitFromListeObjets(
                    m_spvLiai.AlarmesCables,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    m_spvLiai,
                    "SpvLiai");
            }

            if (m_spvLiai == null)
            {
                CFiltreDataImpossible filtreImpossible = new CFiltreDataImpossible();
                CListeObjetsDonnees   listeVideAlarme  = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvTypeAccesAlarme));
                CListeObjetsDonnees   listeVideAccesc  = new CListeObjetsDonnees(ObjetEdite.ContexteDonnee, typeof(CSpvLienAccesAlarme));
                listeVideAlarme.Filtre = filtreImpossible;
                listeVideAccesc.Filtre = filtreImpossible;

                m_PanelTypeAccessAlarm.InitFromListeObjets(
                    listeVideAlarme,
                    typeof(CSpvTypeAccesAlarme),
                    typeof(CFormEditionTypeAccesAlarmeBoucle),
                    null,
                    "SpvLiai");

                m_CablageAccesAlarm.InitFromListeObjets(
                    listeVideAccesc,
                    typeof(CSpvLienAccesAlarme),
                    typeof(CFormEditionCablageAccesAlarmeBoucle),
                    null,
                    "SpvLiai");
            }
            return(result);
        }//MyInitChamps()
예제 #4
0
        private static CSpvLiai GetSpvLiai(DataRow row)
        {
            CSpvLiai    spvLiai;
            CLienReseau lienReseau = new CLienReseau(row);

            spvLiai = CSpvLiai.GetSpvLiaiFromLienReseau(lienReseau) as CSpvLiai;
            if (spvLiai == null)
            {
                spvLiai = CSpvLiai.GetSpvLiaiFromLienReseauAvecCreation(lienReseau);
            }
            // spvLiai.CopyFromLienReseau(lienReseau);
            spvLiai.CopyFromObjetTimos(lienReseau);
            return(spvLiai);
        }
예제 #5
0
        ////////////////////////////////////////////////////////////////////
        public static void PropagerCLienReseau(CContexteDonnee contexte, Hashtable tableData, ref CResultAErreur result)
        {
            ///Pour éviter de traiter plusieurs fois une liaisons lors d'une sauvegarde
            Dictionary <DataRow, bool> rowsDejaTraitees = (Dictionary <DataRow, bool>)tableData[typeof(CSpvLiaiServeur)];

            if (rowsDejaTraitees == null)
            {
                rowsDejaTraitees = new Dictionary <DataRow, bool>();
                tableData[typeof(CSpvLiaiServeur)] = rowsDejaTraitees;
            }

            DataTable dt = contexte.Tables[CLienReseau.c_nomTable];

            if (dt != null)
            {
                ArrayList rows = new ArrayList(dt.Rows);

                foreach (DataRow row in rows)
                {
                    if (row.RowState != DataRowState.Unchanged)
                    {
                        if (!rowsDejaTraitees.ContainsKey(row))
                        {
                            rowsDejaTraitees[row] = true;
                            switch (row.RowState)
                            {
                            case DataRowState.Added:
                            case DataRowState.Modified:
                                CLienReseau lienTimos = new CLienReseau(row);
                                //force la création du schéma pour qu'il se synchronise
                                lienTimos.GetSchemaReseauADessiner(true);
                                CSpvLiai lienSpv = CSpvLiai.GetSpvLiaiFromLienReseau(lienTimos) as CSpvLiai;

                                result = CSpvLiai.CanSupervise(lienTimos);
                                if (lienSpv != null)
                                {
                                    if (row.HasVersion(DataRowVersion.Original))
                                    {
                                        if (!row[CTypeLienReseau.c_champId].Equals(row[CTypeLienReseau.c_champId, DataRowVersion.Original]))
                                        {
                                            //CSpvTypliai typeLiai = CSpvTypliai.GetSpvTypliaiFromTypeLienReseau(lienTimos.TypeLienReseau) as CSpvTypliai;
                                            CSpvTypliai typeLiai = CSpvTypliai.GetObjetSpvFromObjetTimos(lienTimos.TypeLienReseau) as CSpvTypliai;
                                            if (typeLiai == null)
                                            {
                                                result = lienSpv.Delete(true);
                                                if (!result)
                                                {
                                                    result.EmpileErreur("Can not cancel supervision of link @1|20005", lienTimos.Libelle);
                                                    return;
                                                }
                                            }
                                            else
                                            {
                                                lienSpv.NomTypeLiaison = typeLiai.Libelle;
                                            }
                                        }
                                    }
                                    if (!result)
                                    {
                                        result.EmpileErreur(I.T("Invalide properties for supervised link @1|20004", lienTimos.Libelle));
                                        return;
                                    }
                                    if (lienSpv != null && lienSpv.IsValide())
                                    {
                                        //   lienSpv.CopyFromLienReseau(lienTimos);
                                        lienSpv.CopyFromObjetTimos(lienTimos);
                                    }
                                }
                                else
                                {
                                    if (result)
                                    {
                                        //Création de la liaison SPV
                                        CSpvLiai liai = GetSpvLiai(row);
                                    }
                                    else
                                    {
                                        //CSpvTypliai typeLiai = CSpvTypliai.GetSpvTypliaiFromTypeLienReseau(lienTimos.TypeLienReseau) as CSpvTypliai;

                                        /*CSpvTypliai typeLiai = CSpvTypliai.GetObjetSpvFromObjetTimos(lienTimos.TypeLienReseau) as CSpvTypliai;
                                         * if (typeLiai == null)*/
                                        result = CResultAErreur.True;
                                    }
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
        }