コード例 #1
0
        /// <summary>
        /// Load xml file and deserialize data
        /// </summary>
        /// <param name="xmlFileWithPath"></param>
        /// <returns></returns>
        public UIDatabaseDetails Load(string xmlFileWithPath)
        {
            UIDatabaseDetails RetVal = new UIDatabaseDetails();
            string FilePath = string.Empty;
            FileStream FS = null;

            try
            {
                if (!File.Exists(xmlFileWithPath))
                {
                    FilePath = Path.GetDirectoryName(xmlFileWithPath);

                    if (!Directory.Exists(FilePath))
                    {
                        Directory.CreateDirectory(FilePath);
                    }

                    (new UIDatabaseDetails()).Save(xmlFileWithPath);
                }

                FS = new FileStream(xmlFileWithPath, FileMode.Open);
                XmlSerializer Serializer = new XmlSerializer(typeof(UIDatabaseDetails));
                RetVal = (UIDatabaseDetails)Serializer.Deserialize(FS);
            }
            catch (Exception)
            {
            }
            finally
            {
                if (FS != null)
                {
                    FS.Flush();
                    FS.Close();
                }
            }

            return RetVal;
        }
コード例 #2
0
        /// <summary>
        /// Generate data xml files and enter db info in xml DatabaseDetails file.
        /// </summary>
        /// <param name="databasePath"></param>
        /// <param name="tempDatabaseFolderPath"></param>
        /// <param name="dbDetails"></param>
        /// <param name="dbDetailsXmlFileWithPath"></param>
        public bool GenerateXmlFilesNLog(string tempDatabaseFolderPath, UIDatabaseDetails uiDBDetails, string dbDetailsXmlFileWithPath, string xmlDataPath)
        {
            bool RetVal = false;
            string TmpDatabaseFilenameWithPath = string.Empty;
            string DbFileName = string.Empty;
            string XmlDataOutputFolderpath = string.Empty;
            string DataFolerName = string.Empty;
            UIDatabaseInfo CurrentDBInfo = null;
            XMLGenerator ObjXMLGenerator = null;
            CacheGenerator ObjCacheGenerator = null;
            string AvlDbName = string.Empty;
            int ProgressCount = 3;

            try
            {
                //-- raise event to display progress form
                this.RaiseDisplayProgressFormEvent();

                // increment progress bar value
                this.RaiseProgressChangedEvent(ProgressCount++, string.Empty, string.Empty, false);

                // check n create temp database folder
                if (!Directory.Exists(tempDatabaseFolderPath))
                {
                    Directory.CreateDirectory(tempDatabaseFolderPath);
                }

                // get database file and copy it into temp
                DbFileName = Path.GetFileName(this._DatabasePath);
                TmpDatabaseFilenameWithPath = Path.Combine(tempDatabaseFolderPath, DbFileName);

                // increment progress bar value
                this.RaiseProgressChangedEvent(ProgressCount++, string.Empty, string.Empty, false);

                //-- Get Available database name
                AvlDbName = GetAvailableDbName(this._DatabasePath);

                //-- Get all database details
                if (uiDBDetails.DatabaseInfo.Count > 0)
                {
                    // get current database info
                    CurrentDBInfo = uiDBDetails.DatabaseInfo.Find(delegate(UIDatabaseInfo p) { return p.DatabaseName == AvlDbName; });
                }

                // increment progress bar value
                this.RaiseProgressChangedEvent(ProgressCount++, string.Empty, string.Empty, false);

                if (CurrentDBInfo == null || CurrentDBInfo.LastModifiedDataNTime != File.GetLastWriteTime(this._DatabasePath).ToString() || CurrentDBInfo.IsXmlFilesGenerated == false)
                {
                    //-- Copy db into temp foler
                    File.Copy(this._DatabasePath, TmpDatabaseFilenameWithPath, true);

                    // increment progress bar value
                    this.RaiseProgressChangedEvent(ProgressCount++, string.Empty, string.Empty, false);

                    //-- Delete old database info entry if exists
                    if (CurrentDBInfo != null)
                    {
                        uiDBDetails.DatabaseInfo.Remove(CurrentDBInfo);
                    }

                    //-- Create current database info
                    CurrentDBInfo = new UIDatabaseInfo();
                    CurrentDBInfo.DatabaseName = AvlDbName;
                    CurrentDBInfo.DatabaseFilename = DbFileName;
                    CurrentDBInfo.LastModifiedDataNTime = File.GetLastWriteTime(this._DatabasePath).ToString();

                    //-- Set DatabaseInfo details
                    XmlDataOutputFolderpath = Path.Combine(tempDatabaseFolderPath, "data");
                    ObjXMLGenerator = new XMLGenerator(XmlDataOutputFolderpath, this._DatabasePath);
                    DataFolerName = Path.GetFileNameWithoutExtension(this._DatabasePath);

                    //-- add events
                    ObjXMLGenerator.ProgressChangedEvent += new ProgressChangedDelegate(ObjXMLGenerator_ProgressChangedEvent);

                    //-- Generate XML files
                    ObjXMLGenerator.GenerateDefaultXmlFiles(DataFolerName, "AreaName", "Immediate");

                    ProgressCount = 19;
                    // increment progress bar value
                    this.RaiseProgressChangedEvent(ProgressCount++, "Genetating cache", string.Empty, false);

                    // Genetating cache
                    ObjCacheGenerator = new CacheGenerator();

                    //-- add events
                    ObjCacheGenerator.ProgressChangedEvent += new ProgressChangedDelegate(ObjCacheGenerator_ProgressChangedEvent);
                    //-- Generate Cache in db
                    ObjCacheGenerator.GenerateCacheResults(TmpDatabaseFilenameWithPath);

                    ProgressCount = 37;
                    // increment progress bar value
                    this.RaiseProgressChangedEvent(ProgressCount++, string.Empty, string.Empty, false);

                    //-- update xml files generation status into DesktopDatabaseDetails.xml file
                    CurrentDBInfo.IsXmlFilesGenerated = true;

                    // add current db info into database details xml file
                    uiDBDetails.DatabaseInfo.Add(CurrentDBInfo);

                    // update database details xml file
                    uiDBDetails.Save(dbDetailsXmlFileWithPath);

                    // increment progress bar value
                    this.RaiseProgressChangedEvent(ProgressCount++, string.Empty, string.Empty, true);

                    RetVal = true;
                }
                else
                {
                    // do nothing
                }
            }
            catch (Exception)
            {
                throw;
            }

            return RetVal;
        }