/// <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; }