240 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			240 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
// ========================================================================
 | 
						|
// Copyright 2006 - Volian Enterprises, Inc. All rights reserved.          
 | 
						|
// Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
 | 
						|
// ------------------------------------------------------------------------
 | 
						|
// $Workfile: $     $Revision: $                                           
 | 
						|
// $Author: $   $Date: $                                                   
 | 
						|
//                                                                         
 | 
						|
// $History: $                                                             
 | 
						|
// ========================================================================
 | 
						|
using System;
 | 
						|
using System.Drawing;
 | 
						|
using System.Collections;
 | 
						|
using System.ComponentModel;
 | 
						|
using System.Windows.Forms;
 | 
						|
using System.Data;
 | 
						|
using System.Data.OleDb;
 | 
						|
using System.Collections.Specialized;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System.Xml;
 | 
						|
using System.IO;
 | 
						|
using System.Text;
 | 
						|
using VEPROMS.CSLA.Library;
 | 
						|
 | 
						|
namespace Config
 | 
						|
{
 | 
						|
    public class ConfigFile
 | 
						|
    {
 | 
						|
        #region Log4Net
 | 
						|
        private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
 | 
						|
        #endregion
 | 
						|
        #region MigrateStrings
 | 
						|
        // the following lists are used for storing the element and attribute names
 | 
						|
		// for migrating of ini & cfg files. The names stored in these lists are 
 | 
						|
		// those that should be migrated. If not in this list, the data (either element
 | 
						|
		// or attribute name) is prefaced with a 'z'. At some point in the future, those
 | 
						|
		// names with a 'z' will be removed.
 | 
						|
		public List<string> listIni_EleName = new List<string>();
 | 
						|
		public List<string> listIni_AttrName = new List<string>();
 | 
						|
        private void SetIniEleName()
 | 
						|
		{
 | 
						|
			// veproms.ini
 | 
						|
			listIni_EleName.Add("graphics");
 | 
						|
			listIni_EleName.Add("color");
 | 
						|
			listIni_EleName.Add("print");
 | 
						|
			listIni_EleName.Add("startup");
 | 
						|
			listIni_EleName.Add("data integrity");
 | 
						|
			listIni_EleName.Add("wordprocessor");
 | 
						|
			listIni_EleName.Add("procedurelisttabstops");
 | 
						|
 | 
						|
			// proc.ini
 | 
						|
			listIni_EleName.Add("rodefaults");
 | 
						|
			listIni_EleName.Add("display");
 | 
						|
			listIni_EleName.Add("backgrounddefaults");
 | 
						|
			listIni_EleName.Add("unit");
 | 
						|
 | 
						|
			// roapp.ini
 | 
						|
			listIni_EleName.Add("roapp");
 | 
						|
 | 
						|
			// <user>.cfg
 | 
						|
			listIni_EleName.Add("spelldictionary");
 | 
						|
			// listIni_EleName.Add("wordprocessor"); - already in here.
 | 
						|
		}
 | 
						|
 | 
						|
		private void SetIniAttrName()
 | 
						|
		{
 | 
						|
			//veproms.ini
 | 
						|
			listIni_AttrName.Add("defaultext");
 | 
						|
			listIni_AttrName.Add("ro");
 | 
						|
			listIni_AttrName.Add("editbackground");
 | 
						|
			listIni_AttrName.Add("black");
 | 
						|
			listIni_AttrName.Add("blue");
 | 
						|
			listIni_AttrName.Add("green");
 | 
						|
			listIni_AttrName.Add("cyan");
 | 
						|
			listIni_AttrName.Add("red");
 | 
						|
			listIni_AttrName.Add("magenta");
 | 
						|
			listIni_AttrName.Add("brown");
 | 
						|
			listIni_AttrName.Add("lightgray");
 | 
						|
			listIni_AttrName.Add("darkgray");
 | 
						|
			listIni_AttrName.Add("ligthblue");
 | 
						|
			listIni_AttrName.Add("lightgreen");
 | 
						|
			listIni_AttrName.Add("lightcyan");
 | 
						|
			listIni_AttrName.Add("lightred");
 | 
						|
			listIni_AttrName.Add("lightmagenta");
 | 
						|
			listIni_AttrName.Add("yellow");
 | 
						|
			listIni_AttrName.Add("white");
 | 
						|
			listIni_AttrName.Add("underlinewidth");
 | 
						|
			listIni_AttrName.Add("verticalOffset");
 | 
						|
			listIni_AttrName.Add("strokewidth");
 | 
						|
			listIni_AttrName.Add("strokewidthbold");
 | 
						|
			listIni_AttrName.Add("messageboxtitle");
 | 
						|
			listIni_AttrName.Add("messagefile");
 | 
						|
			listIni_AttrName.Add("enableindexcheck");
 | 
						|
			listIni_AttrName.Add("wordwrap");
 | 
						|
			listIni_AttrName.Add("procedurenumbertab");
 | 
						|
			listIni_AttrName.Add("proceduretitletab");
 | 
						|
 | 
						|
			// proc.ini
 | 
						|
			listIni_AttrName.Add("setpoint");
 | 
						|
			listIni_AttrName.Add("graphics");
 | 
						|
			listIni_AttrName.Add("ropath");
 | 
						|
			listIni_AttrName.Add("display");
 | 
						|
			listIni_AttrName.Add("sectiontitle");
 | 
						|
			listIni_AttrName.Add("sectionnumber");
 | 
						|
			listIni_AttrName.Add("number");
 | 
						|
			listIni_AttrName.Add("othernumber");
 | 
						|
			listIni_AttrName.Add("name");
 | 
						|
			listIni_AttrName.Add("othername");
 | 
						|
			listIni_AttrName.Add("text");
 | 
						|
			listIni_AttrName.Add("othertext");
 | 
						|
			listIni_AttrName.Add("id");
 | 
						|
			listIni_AttrName.Add("otherid");
 | 
						|
			listIni_AttrName.Add("procedurenumber");
 | 
						|
 | 
						|
 | 
						|
			// roapp.ini
 | 
						|
			listIni_AttrName.Add("extention");  // NOTE MIS-SPELLING was in 16-bit program!
 | 
						|
 | 
						|
			// <user>.cfg
 | 
						|
			listIni_AttrName.Add("custom");
 | 
						|
			listIni_AttrName.Add("page");
 | 
						|
			listIni_AttrName.Add("toolbar");
 | 
						|
			listIni_AttrName.Add("paragraph");
 | 
						|
			listIni_AttrName.Add("ruler");
 | 
						|
			listIni_AttrName.Add("userphone1");
 | 
						|
			listIni_AttrName.Add("userphone2");
 | 
						|
			listIni_AttrName.Add("userloc1");
 | 
						|
			listIni_AttrName.Add("userloc2");
 | 
						|
        }
 | 
						|
        #endregion
 | 
						|
        #region LoadDataCode
 | 
						|
        public ConfigFile()
 | 
						|
        {
 | 
						|
        }
 | 
						|
        public void LoadUsrCfg(User user, string vepromspath)
 | 
						|
		{
 | 
						|
			string cfgpath = vepromspath + "\\config";
 | 
						|
			if (!Directory.Exists(cfgpath))
 | 
						|
			{
 | 
						|
				log.Info("No user cfgs found in config directory - did not migrate any user cfgs");
 | 
						|
				return;
 | 
						|
			}
 | 
						|
			DirectoryInfo di = new DirectoryInfo(cfgpath);
 | 
						|
			FileInfo[] fis = di.GetFiles("*.cfg");
 | 
						|
 | 
						|
			foreach (FileInfo fi in fis)
 | 
						|
			{
 | 
						|
				string cfgname = fi.Name.Substring(0, fi.Name.IndexOf("."));
 | 
						|
                if (cfgname.ToUpper() == user.UserID.ToUpper())
 | 
						|
                {
 | 
						|
                    // Get Users table fields by reading the cfg file into a buffer & looking
 | 
						|
                    // for the UserNetworkId and UserName fields.
 | 
						|
                    StreamReader myReader = new StreamReader(fi.FullName);
 | 
						|
                    string sLine;
 | 
						|
                    string UserLogin = null;
 | 
						|
                    string UserName = null;
 | 
						|
                    int indx = -1;
 | 
						|
                    while ((sLine = myReader.ReadLine()) != null && (UserLogin == null || UserName == null))
 | 
						|
                    {
 | 
						|
                        if (sLine.Length > 0 && sLine.Substring(0, 1) != ";")
 | 
						|
                        {
 | 
						|
                            if ((indx = sLine.ToLower().IndexOf("usernetworkid")) >= 0)
 | 
						|
                            {
 | 
						|
                                indx = sLine.IndexOf("=", indx + 13);
 | 
						|
                                UserLogin = sLine.Substring(indx + 1, sLine.Length - indx - 1).Trim();
 | 
						|
                            }
 | 
						|
                            else if ((indx = sLine.ToLower().IndexOf("username")) >= 0)
 | 
						|
                            {
 | 
						|
                                indx = sLine.IndexOf("=", indx + 8);
 | 
						|
                                UserName = sLine.Substring(indx + 1, sLine.Length - indx - 1).Trim();
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    }
 | 
						|
                    myReader.Close();
 | 
						|
 | 
						|
                    // get the xml to set the config field
 | 
						|
                    XmlDocument d = IniToXml(fi.FullName);
 | 
						|
                    user.Config = d == null ? null : d.InnerXml;
 | 
						|
                    user.UserLogin = UserLogin;
 | 
						|
                    user.UserName = UserName;
 | 
						|
                    user.CFGName = cfgname;
 | 
						|
                    break;
 | 
						|
                }
 | 
						|
			}
 | 
						|
		}
 | 
						|
 | 
						|
		public XmlDocument LoadSystemIni(string vepromspath)
 | 
						|
		{
 | 
						|
			string inipath = vepromspath + "\\veproms.ini";
 | 
						|
			if (!File.Exists(inipath))
 | 
						|
			{
 | 
						|
				log.InfoFormat("Did not migrate {0} - file not found", inipath);
 | 
						|
				return null;
 | 
						|
			}
 | 
						|
            XmlDocument d = IniToXml(inipath);
 | 
						|
			// see if default image file extension was set, if not make it TIF
 | 
						|
			XmlNode gr = d.SelectSingleNode("//Graphics");
 | 
						|
			XmlNode ext = null;
 | 
						|
			if (gr != null) ext = gr.SelectSingleNode("@defaultext");
 | 
						|
			if (ext == null)
 | 
						|
			{
 | 
						|
				// if the graphics node doesn't exist, make it.
 | 
						|
				if (gr == null)  
 | 
						|
				{
 | 
						|
					gr = d.CreateElement("Graphics");
 | 
						|
					d.DocumentElement.AppendChild(gr);
 | 
						|
				}
 | 
						|
				XmlAttribute xa = d.CreateAttribute("defaultext");
 | 
						|
				xa.Value = "TIF";
 | 
						|
				gr.Attributes.Append(xa);
 | 
						|
			}
 | 
						|
            return d;
 | 
						|
		}
 | 
						|
 | 
						|
		public XmlDocument LoadRoAppIni(string ropath)
 | 
						|
		{
 | 
						|
			string inipath = ropath + "\\roapp.ini";
 | 
						|
			// not an error if it does not exist - just return null.
 | 
						|
			if (!File.Exists(inipath)) return null;
 | 
						|
			
 | 
						|
			XmlDocument d = IniToXml(inipath);
 | 
						|
			
 | 
						|
			return d;
 | 
						|
		}
 | 
						|
 | 
						|
		public XmlDocument IniToXml(string path)
 | 
						|
		{
 | 
						|
			FileInfo fi = new FileInfo(path);
 | 
						|
			if (fi.Exists)
 | 
						|
			{
 | 
						|
				PrivateProfile ppCfg;
 | 
						|
				if (listIni_AttrName == null || listIni_AttrName.Count == 0) SetIniAttrName();
 | 
						|
				if (listIni_EleName == null || listIni_EleName.Count == 0) SetIniEleName();
 | 
						|
				ppCfg = new PrivateProfile(path, listIni_EleName, listIni_AttrName);
 | 
						|
				return ppCfg.XML();
 | 
						|
			}
 | 
						|
			return null;
 | 
						|
		}
 | 
						|
        #endregion
 | 
						|
    }
 | 
						|
} |