public static void AutoexecInit()
        {
            lock (typeof(CGestionnaireDonneesQowisio))
            {
                if (m_bAutoexecDone)
                {
                    return;
                }
                m_bAutoexecDone = true;
            }
            m_bTraitementEnCours = true;

            CTimosServeur.OnMajStructureBaseEvent += new EventHandler(CTimosServeur_OnMajStructureBaseEvent);


            string strAppData = AppDataPath;

            if (!Directory.Exists(strAppData))
            {
                Directory.CreateDirectory(strAppData);
            }
            C2iEventLog.WriteInfo(strAppData);

            // Récupère le nom du dernier fichier traité
            CDataBaseRegistrePourClient registreClient = new CDataBaseRegistrePourClient(0);


            CContexteDonneeServeur.AddTraitementAvantSauvegarde(new TraitementSauvegardeExterne(TraitementAvantSauvegardeExterne));
        }
示例#2
0
        //--------------------------------------------------------------------------------------
        public static CDictionnaireTypeEditeTypeFormPrefere GetInstance()
        {
            if (m_dictionnaire == null)
            {
                // Lit le registre
                CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(CSc2iWin32DataClient.ContexteCourant.IdSession);
                if (registre != null)
                {
                    byte[] data = registre.GetValeurBlob(c_cleRegistre);
                    if (data != null)
                    {
                        MemoryStream           flux       = new MemoryStream(data);
                        BinaryReader           lecteur    = new BinaryReader(flux);
                        CSerializerReadBinaire serializer = new CSerializerReadBinaire(lecteur);
                        CResultAErreur         result     = serializer.TraiteObject <CDictionnaireTypeEditeTypeFormPrefere>(ref m_dictionnaire);
                        lecteur.Close();
                        flux.Close();

                        if (result)
                        {
                            return(m_dictionnaire);
                        }
                    }
                }
                m_dictionnaire = new CDictionnaireTypeEditeTypeFormPrefere();
            }
            return(m_dictionnaire);
        }
示例#3
0
        public static int GetIdSymboleParDefaut(Type typeElement, CContexteDonnee contexte)
        {
            string strCle = GetCleRegistreSymboleDefaut(typeElement);
            CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(contexte.IdSession);
            int nId = (int)reg.GetValeurLong(strCle, -1);

            return(nId);
        }
示例#4
0
        public static void SetSymboleParDefaut(Type typeElement, CSymbole symbole)
        {
            if (symbole == null)
            {
                return;
            }
            string strCle = GetCleRegistreSymboleDefaut(typeElement);
            CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(symbole.ContexteDonnee.IdSession);

            reg.SetValeur(strCle, symbole.Id.ToString());
        }
        public static EOptionControleCoordonnees GetOptionType(int nIdSession, Type tpObjet)
        {
            if (tpObjet == typeof(CTypeSite))
            {
                tpObjet = typeof(CSite);
            }
            if (tpObjet == typeof(CTypeEquipement))
            {
                tpObjet = typeof(CEquipement);
            }
            long nVal = new CDataBaseRegistrePourClient(nIdSession).GetValeurLong("COORD_" + tpObjet.ToString(), (long)EOptionControleCoordonnees.IgnorerLesFilsSansCoordonnees);

            return((EOptionControleCoordonnees)nVal);
        }
示例#6
0
        //--------------------------------------------------------------------------------------
        public static CResultAErreur SaveInstance()
        {
            CResultAErreur result = CResultAErreur.True;

            if (m_dictionnaire != null)
            {
                MemoryStream           flux       = new MemoryStream();
                BinaryWriter           writer     = new BinaryWriter(flux);
                CSerializerSaveBinaire serilaizer = new CSerializerSaveBinaire(writer);
                result = serilaizer.TraiteObject <CDictionnaireTypeEditeTypeFormPrefere>(ref m_dictionnaire);
                if (result)
                {
                    CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(CSc2iWin32DataClient.ContexteCourant.IdSession);
                    result = registre.SetValeurBlob(c_cleRegistre, flux.ToArray());
                }
                writer.Close();
                flux.Close();
            }
            return(result);
        }
        //------------------------------------------------------
        private static void SetSetupForWindow(CSessionClient session, Form form, CSetupVisibiliteControles setup)
        {
            string strKey = c_racineCleRegistre + form.GetType().ToString();
            CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(session.IdSession);

            if (setup == null)
            {
                reg.SetValeurBlob(strKey, new byte[0]);
            }
            else
            {
                MemoryStream           stream = new MemoryStream();
                BinaryWriter           writer = new BinaryWriter(stream);
                CSerializerSaveBinaire ser    = new CSerializerSaveBinaire(writer);
                CResultAErreur         result = setup.Serialize(ser);
                stream.Flush();
                reg.SetValeurBlob(strKey, stream.GetBuffer());
                writer.Close();
                stream.Close();
                stream.Dispose();
            }
        }
        //------------------------------------------------------
        private static CSetupVisibiliteControles GetSetupForWindow(CSessionClient session, Form frm)
        {
            CSetupVisibiliteControles setup = new CSetupVisibiliteControles();
            string strKey = c_racineCleRegistre + frm.GetType().ToString();
            //cherche le setup dans le registre
            CDataBaseRegistrePourClient reg = new CDataBaseRegistrePourClient(session.IdSession);

            byte[] bts = reg.GetValeurBlob(strKey);
            if (bts != null)
            {
                MemoryStream           stream = new MemoryStream(bts);
                BinaryReader           reader = new BinaryReader(stream);
                CSerializerReadBinaire ser    = new CSerializerReadBinaire(reader);
                CResultAErreur         result = setup.Serialize(ser);
                if (!result)
                {
                    setup = new CSetupVisibiliteControles();
                }
                reader.Close();
                stream.Close();
                stream.Dispose();
            }
            return(setup);
        }
        //----------------------------------------------------------------------------------
        /// <summary>
        ///
        /// </summary>
        /// <param name="target"></param>
        public static void OnTimerTraitement(object target)
        {
            CResultAErreur result = CResultAErreur.True;

            TimeSpan ts = DateTime.Now - m_lastDateDebutTraitementShort;

            if (m_bTraitementEnCours)
            {
                if (ts.TotalMinutes < 5)
                {
                    return;
                }
                else
                {
                    C2iEventLog.WriteErreur("CCamusatQowisioDataServeur : data processing >= 5 minutes");
                    return;
                }
            }

            m_bTraitementEnCours           = true;
            m_lastDateDebutTraitementShort = DateTime.Now;

            // Determine le mode du traitement SHORT/MEDIUM/FULL
            EModeTraitment modeTraitement = EModeTraitment.SHORT;

            ts = DateTime.Now - m_lastDateDebutTraitementMedium;
            if (ts.TotalMilliseconds >= c_nDelaiTraitementMedium)
            {
                modeTraitement = modeTraitement | EModeTraitment.MEDIUM;
                m_lastDateDebutTraitementMedium = DateTime.Now;
            }
            ts = DateTime.Now - m_lastDateDebutTraitementMedium;
            if (ts.TotalMilliseconds >= c_nDelaiTraitementFull)
            {
                modeTraitement = modeTraitement | EModeTraitment.FULL;
                m_lastDateDebutTraitementFull = DateTime.Now;
            }

            try
            {
                System.Threading.Thread.CurrentThread.Priority = System.Threading.ThreadPriority.Lowest;
                try
                {
                    m_sessionClient = CSessionClient.CreateInstance();
                    result          = m_sessionClient.OpenSession(new CAuthentificationSessionServer(),
                                                                  "Qowisio XML data processing",
                                                                  ETypeApplicationCliente.Service);
                    if (!result)
                    {
                        C2iEventLog.WriteErreur("Working session openning error for CCamusatQowisioDataServeur");
                        return;
                    }

                    try
                    {
                        //Récupère les fichiers FTP
                        string strFTPserver         = CCamusatQowisioServeurRegistre.FTPServer;
                        string strFTPuser           = CCamusatQowisioServeurRegistre.FTPUser;
                        string strFTPpassword       = CCamusatQowisioServeurRegistre.FTPPassword;
                        int    nFTPport             = CCamusatQowisioServeurRegistre.FTPPort;
                        string strIncomingDirectory = CCamusatQowisioServeurRegistre.FTPIncomingDirectory;

                        List <string> listeFichiersATraiter = new List <string>();
                        ArrayList     listFiles             = null;

                        string strLastFile = new CDataBaseRegistrePourClient(m_sessionClient.IdSession).GetValeurString(c_strCleDernierFichierTraité, "");

                        Sftp ftp = new Sftp(strFTPserver, strFTPuser, strFTPpassword);
                        try
                        {
                            ftp.Connect(); /* Open the FTP connection */


                            listFiles = ftp.GetFileList(strIncomingDirectory);
                            listFiles.Sort();
                            listFiles.Reverse();

                            /*
                             *                              // constitue la liste des fichiers à traiter
                             *                              listFiles.AddRange(ftp.GetFiles());
                             *                              listFiles.Sort(new CFtpFileInfoComparer());
                             *                              listFiles.Reverse();*/

                            foreach (string strFtpFile in listFiles)
                            {
                                if (strFtpFile.CompareTo(strLastFile) <= 0)
                                {
                                    break;
                                }
                                string strWorkFile = WorkDir + "\\" + strFtpFile;
                                if (strFtpFile.ToUpper().EndsWith("XML"))
                                {
                                    if (!File.Exists(strWorkFile))
                                    {
                                        ftp.Get(strIncomingDirectory + "/" + strFtpFile, strWorkFile);
                                        //ftp.GetFile(fileInfo.Name, strWorkFile, false); /* download /incoming/file.txt as file.txt to current executing directory, overwrite if it exists */
                                        //ftp.RemoveFile(fileInfo.Name);
                                    }
                                    listeFichiersATraiter.Insert(0, strFtpFile);
                                }
                            }
                            if (listeFichiersATraiter.Count > 0)
                            {
                                new CDataBaseRegistrePourClient(m_sessionClient.IdSession).SetValeur(c_strCleDernierFichierTraité, listeFichiersATraiter[listeFichiersATraiter.Count - 1]);
                            }


                            ftp.Close();
                        }
                        catch (Exception ex)
                        {
                            C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error openning FTP connection: " + ex.Message);
                        }
                        finally
                        {
                            ftp.Close();
                        }

                        // Traite la liste des fichiers à traiter
                        using (CContexteDonnee contexte = new CContexteDonnee(m_sessionClient.IdSession, true, false))
                        {
                            List <string> lstFichiersWork = new List <string>(Directory.GetFiles(WorkDir, "*.xml"));
                            lstFichiersWork.Sort();

                            //CCamusatQowisioDataServeur serveur = new CCamusatQowisioDataServeur(m_sessionClient.IdSession);
                            foreach (string strWorkFile in lstFichiersWork)
                            {
                                try
                                {
                                    string strNomFichier = Path.GetFileName(strWorkFile);

                                    // Traitement d'un fichier XML
                                    result = TraiteFichierQowisio(strWorkFile, contexte, modeTraitement);
                                    string strArchive = DoneDir + "\\" + strNomFichier;
                                    if (result)
                                    {
                                        MoveSafely(strWorkFile, ref strArchive);
                                    }
                                    else
                                    {
                                        strArchive = ErrorDir + "\\" + strNomFichier;
                                        MoveSafely(strWorkFile, ref strArchive);
                                        FileStream   stream = new FileStream(strArchive + ".Err", FileMode.CreateNew, FileAccess.Write);
                                        StreamWriter writer = new StreamWriter(stream);
                                        writer.Write(result.MessageErreur);
                                        writer.Close();
                                        stream.Close();
                                    }
                                }
                                catch (Exception e)
                                {
                                    C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error while processing file : " + strWorkFile + " - " + e.Message);
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                        C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error processing files : " + ex.Message);
                    }
                    finally
                    {
                        try
                        {
                            m_sessionClient.CloseSession();
                        }
                        catch { }
                    }
                }
                catch (Exception e)
                {
                    C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error in OnTimerTraitement : " + e.Message);
                }
            }
            catch (Exception ex)
            {
                C2iEventLog.WriteErreur("CCamusatQowisioDataServeur error in OnTimerTraitement : " + ex.Message);
            }
            finally
            {
                m_bTraitementEnCours = false;
            }
        }
示例#10
0
        /// ///////////////////////////////////////////////////////////
        public static CResultAErreur InitClientTimos(
            string strServeurUrl,
            int nTcpChannel,
            string strBindTo,
            IIndicateurProgression indicateurProgression)
        {
            CResultAErreur result = CResultAErreur.True;

            try
            {
                AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

                //SUPPRIMé journal d'évenements: sur les postes clients qui ne sont pas autorisés
                //à créer un journal d'évenements, ça bloque, et comme ce n'est pas
                //très important sur un poste client, il n'y a plus
                //de journal d'évenements TIMOS sur les postes clients.
                //C2iEventLog.Init("", "Client Timos", NiveauBavardage.VraiPiplette);

                m_strUrlServeurMain = strServeurUrl;
                m_nPortServeur      = nTcpChannel;
                result = CSC2iMultitiersClient.Init(m_nPortServeur, m_strUrlServeurMain, strBindTo);

                LifetimeServices.LeaseTime            = new TimeSpan(0, 5, 0);
                LifetimeServices.LeaseManagerPollTime = new TimeSpan(0, 5, 0);
                LifetimeServices.SponsorshipTimeout   = new TimeSpan(0, 3, 0);
                LifetimeServices.RenewOnCallTime      = new TimeSpan(0, 8, 0);

                /*LifetimeServices.LeaseTime = new TimeSpan(0, 0, 3);
                 * LifetimeServices.LeaseManagerPollTime = new TimeSpan(0, 0, 10);
                 * LifetimeServices.SponsorshipTimeout = new TimeSpan(0, 0, 10);
                 * LifetimeServices.RenewOnCallTime = new TimeSpan(0, 0, 5);*/

                /*if ( !result )
                 * {
                 *      //On ne parvient pas à contacter le serveur primaire, s'adresse au serveur secondaire
                 *      result = CSC2iMultitiersClient.Init (
                 *              m_nPortServeur,
                 *              m_strUrlServeurSecondaire);
                 *      if ( result )
                 *              CSessionClient.AfterOpenSession += new SessionEventHandler(AfterOpenSessionModeDeconnecte);
                 * }
                 * else
                 * {
                 *      if ( bAvecSynchronisation && m_strUrlServeurSecondaire != "")
                 *      {
                 *              //On a contacté le serveur primaire, tente une synchronisation
                 *              result = SynchroniseSecondaireToMain( indicateurProgression );
                 *              if ( !result )
                 *                      return result;
                 *              CSessionClient.BeforeClosingSession += new SessionEventHandler(BeforeCloseSessionModeConnecte);
                 *      }
                 * }*/
                if (!result)
                {
                    return(result);
                }


                C2iSponsor.EnableSecurite();
                //			System.Runtime.Remoting.RemotingConfiguration.Configure (strFichierConfig);
                //			sc2i.multitiers.client.C2iFactory.InitFromFile(strFichierConfig);

                AppDomain.CurrentDomain.Load("sc2i.data.client");
                AppDomain.CurrentDomain.Load("sc2i.data.dynamic");
                AppDomain.CurrentDomain.Load("timos.data");
                AppDomain.CurrentDomain.Load("sc2i.process");
                AppDomain.CurrentDomain.Load("sc2i.documents");
                AppDomain.CurrentDomain.Load("futurocom.sig");
                AppDomain.CurrentDomain.Load("data.hotel.client");

                #region Chargement des plugins

                CGestionnairePlugins.InitPlugins(AppDomain.CurrentDomain.BaseDirectory, "plg");
                // Initialilsation des plugins à partir de TIMOS_REGISTRY
                CDataBaseRegistrePourClient registre = new CDataBaseRegistrePourClient(0);
                string strFUT_CLT = registre.GetValeurString("FUT_CLT", "");
                if (strFUT_CLT.Trim() != string.Empty)
                {
                    List <string> listPluginFiles = new List <string>();
                    foreach (string strNomPlg in strFUT_CLT.Split(';'))
                    {
                        string strTmp = AppDomain.CurrentDomain.BaseDirectory + strNomPlg;
                        if (File.Exists(strTmp))
                        {
                            listPluginFiles.Add(strTmp);
                        }
                    }
                    CGestionnairePlugins.LoadPlugins(listPluginFiles.ToArray());
                }


                #endregion

                foreach (Assembly ass in AppDomain.CurrentDomain.GetAssemblies())
                {
                    CContexteDonnee.AddAssembly(ass);
                }

                AppDomain.CurrentDomain.AssemblyLoad += new AssemblyLoadEventHandler(OnLoadAssembly);

                CGestionnaireObjetsAttachesASession.OnAttacheObjet += new LinkObjectEventHandler(OnAttacheObjectASession);

                CAutoexecuteurClasses.RunAllAutoexecs();

                CVersionDonneesObjet.EnableJournalisation = true;

                // Création d'une Configuration SNMP par défaut
                // Redirige tout vers le Serveur Timos (entant que Proxy par défaut)
                CSnmpProxyConfiguration configurationDefaut = new CSnmpProxyConfiguration();
                CPlageIP plageToutes = new CPlageIP("255.255.255.255", 32);

                CSnmpProxy proxyDefaut = new CSnmpProxy(configurationDefaut.Database);
                proxyDefaut.CreateNew();
                string strIp   = strServeurUrl.Substring(strServeurUrl.IndexOf("//") + 2);
                string strPort = strIp.Substring(strIp.IndexOf(':') + 1);
                strIp = strIp.Substring(0, strIp.IndexOf(':'));
                try
                {
                    proxyDefaut.AdresseIP = new IP(strIp).ToIPAddress();
                }
                catch
                {
                    try
                    {
                        IPHostEntry entry = Dns.GetHostEntry(strIp);
                        if (entry != null)
                        {
                            foreach (IPAddress adr in entry.AddressList)
                            {
                                //Cherche une IP V4 dans les paramètres
                                string strIpTest = adr.ToString();
                                Regex  ex        = new Regex(@"\b\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\b");
                                if (ex.IsMatch(strIpTest))
                                {
                                    proxyDefaut.AdresseIP = adr;
                                    break;
                                }
                            }
                        }
                    }
                    catch { }
                }
                proxyDefaut.Port = Int32.Parse(strPort);
                proxyDefaut.AddPlage(plageToutes);

                CDataHotelClient.InitForUseProxy(m_strUrlServeurMain);

                CSnmpProxyConfiguration.SetDefaultInstance(configurationDefaut);
                CSnmpConnexion.ToutPasserParDesProxies = true;
            }
            catch (ReflectionTypeLoadException loadex)
            {
                result.EmpileErreur(new CErreurException(loadex));
                StringBuilder bl = new StringBuilder();
                foreach (Exception exSub in loadex.LoaderExceptions)
                {
                    bl.AppendLine(exSub.Message);
                    FileNotFoundException exFileNotFound = exSub as FileNotFoundException;
                    if (exFileNotFound != null && !string.IsNullOrEmpty(exFileNotFound.FusionLog))
                    {
                        bl.AppendLine("Not found : " + exFileNotFound.FusionLog);
                    }
                }
                result.EmpileErreur(bl.ToString());
            }
            catch (Exception e)
            {
                StringBuilder bl = new StringBuilder();
                ReflectionTypeLoadException lex = e as System.Reflection.ReflectionTypeLoadException;
                if (lex != null)
                {
                    foreach (Exception ee in lex.LoaderExceptions)
                    {
                        bl.Append(ee.Message.ToString());
                        bl.Append("\r\n");
                    }
                }
                else
                {
                    bl.Append(e.Message.ToString());
                }
                result.EmpileErreur(bl.ToString());
            }

            return(result);
        }