示例#1
0
        //----------------------------------------------------------
        public CResultAErreur Serialize(C2iSerializer serializer)
        {
            int            nVersion = GetNumVersion();
            CResultAErreur result   = serializer.TraiteVersion(ref nVersion);

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

            //TESTDBKEYOK
            if (nVersion < 1)
            {
                serializer.ReadDbKeyFromOldId(ref m_keyConfigMapDatabase, typeof(CConfigMapDatabase));
            }
            else
            {
                serializer.TraiteDbKey(ref m_keyConfigMapDatabase);
            }
            if (serializer.Mode == ModeSerialisation.Lecture)
            {
                CConfigMapDatabase db = new CConfigMapDatabase(CContexteDonneeSysteme.GetInstance());
                //TESTDBKEYOK
                if (!db.ReadIfExists(m_keyConfigMapDatabase))
                {
                    m_generator = null;
                }
                else
                {
                    m_generator = db.MapGenerator;
                }
            }
            serializer.TraiteInt(ref m_nZOrder);
            serializer.TraiteBool(ref m_bIsVisible);
            List <KeyValuePair <string, object> > valeurs = new List <KeyValuePair <string, object> >();

            if (m_generator != null)
            {
                foreach (KeyValuePair <string, object> kv in m_generator.ValeursVariables)
                {
                    if (kv.Value != null && C2iSerializer.GetTypeSimple(kv.Value.GetType()) != C2iSerializer.EnumTypeSimple.Inconnu)
                    {
                        valeurs.Add(kv);
                    }
                }
            }
            int nNbValeurs = valeurs.Count();

            serializer.TraiteInt(ref nNbValeurs);
            switch (serializer.Mode)
            {
            case ModeSerialisation.Ecriture:
                foreach (KeyValuePair <string, object> kv in valeurs)
                {
                    string strIdVar = kv.Key;
                    object value    = kv.Value;
                    //TESTDBKEYOK
                    serializer.TraiteString(ref strIdVar);
                    result = serializer.TraiteObjetSimple(ref value);
                    if (!result)
                    {
                        return(result);
                    }
                }
                break;

            case ModeSerialisation.Lecture:
                if (m_generator != null)
                {
                    m_generator.ClearVariables();
                }
                for (int nVar = 0; nVar < nNbValeurs; nVar++)
                {
                    string strIdVar = "";
                    object value    = null;
                    if (nVersion < 1)
                    {
                        int nIdTemp = -1;
                        serializer.TraiteInt(ref nIdTemp);
                        strIdVar = nIdTemp.ToString();
                    }
                    else
                    {
                        serializer.TraiteString(ref strIdVar);
                    }

                    result = serializer.TraiteObjetSimple(ref value);
                    if (!result)
                    {
                        return(result);
                    }
                    if (m_generator != null)
                    {
                        m_generator.SetValeurChamp(strIdVar, value);
                    }
                }
                break;
            }
            return(result);
        }
示例#2
0
        //-----------------------------------------------------------
        public void ApplyConfig(
            CConfigWndMapView config,
            object source)
        {
            m_configAppliquee = config;
            CResultAErreur result = CResultAErreur.True;

            m_objetSource = source;
            CContexteEvaluationExpression contexteEval = new CContexteEvaluationExpression(source);

            if (config.FormuleLatitude != null)
            {
                result = config.FormuleLatitude.Eval(contexteEval);
                if (result && result.Data is double || result.Data is int)
                {
                    CenterLatitude = Convert.ToDouble(result.Data);
                }
            }
            if (config.FormuleLongitude != null)
            {
                result = config.FormuleLongitude.Eval(contexteEval);
                if (result && result.Data is double || result.Data is int)
                {
                    CenterLongitude = Convert.ToDouble(result.Data);
                }
            }
            if (config.FormuleZoomFactor != null)
            {
                result = config.FormuleZoomFactor.Eval(contexteEval);
                if (result && result.Data is double || result.Data is int)
                {
                    Zoom = Convert.ToDouble(result.Data);
                }
            }
            m_strPreserveStateKey = "";
            if (config.FormulePreserveStateKey != null)
            {
                result = config.FormulePreserveStateKey.Eval(contexteEval);
                if (result && result.Data != null)
                {
                    m_strPreserveStateKey = result.Data.ToString();
                }
            }

            foreach (CConfigCalqueMap calqueConf in config.ConfigsCalques)
            {
                CRuntimeConfigMapView runtime = null;
                //TESTDBKEYOK
                m_dicRuntimes.TryGetValue(calqueConf.KeyConfigMapDatabase, out runtime);
                if (runtime == null)
                {
                    runtime = new CRuntimeConfigMapView();
                    //TESTDBKEYOK
                    runtime.KeyConfigMapDatabase = calqueConf.KeyConfigMapDatabase;
                }
                if (runtime.Generator == null)
                {
                    CConfigMapDatabase configInDb = new CConfigMapDatabase(CContexteDonneeSysteme.GetInstance());
                    //TESTDBKEYOK
                    if (!configInDb.ReadIfExists(calqueConf.KeyConfigMapDatabase))
                    {
                        continue;//bizarre, mais ça peut arriver
                    }
                    runtime.Generator = configInDb.MapGenerator;
                }
                //TESTDBKEYOK
                m_dicRuntimes[runtime.KeyConfigMapDatabase] = runtime;
                runtime.IsVisible = true;
                runtime.Generator.ClearVariables();
                foreach (CFormuleNommee formule in calqueConf.ValeursVariablesFiltre)
                {
                    if (formule.Formule != null)
                    {
                        try
                        {
                            string strVal = formule.Id;
                            // TESTDBKEYOK
                            if (runtime.Generator.GetVariable(strVal) != null)
                            {
                                result = formule.Formule.Eval(contexteEval);
                                if (result)
                                {
                                    runtime.Generator.SetValeurChamp(strVal, result.Data);
                                }
                            }
                        }
                        catch { }
                    }
                }
                runtime.IsCalculated = false;
            }
            if (m_strPreserveStateKey != null && m_configAppliquee != null)
            {
                string strState = C2iRegistre.GetValueInRegistreApplication(c_strCleRegistre, m_strPreserveStateKey, "");
                if (strState != "")
                {
                    CStringSerializer serializer = new CStringSerializer(strState, ModeSerialisation.Lecture);
                    SerializeState(serializer);
                }
            }
            ShowLayers();
            if (config.FormuleLatitude == null || config.FormuleLongitude == null || config.FormuleZoomFactor == null)
            {
                AutoZoomAndCenter();
            }
        }