250 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			250 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /*********************************************************************************************
 | |
|  * Copyright 2003 - Volian Enterprises, Inc. All rights reserved.
 | |
|  * Volian Enterprises - Proprietary Information - DO NOT COPY OR DISTRIBUTE
 | |
|  * ------------------------------------------------------------------------------
 | |
|  * $Workfile: EopToErgRelations.cs $     $Revision: 1 $
 | |
|  * $Author: Jsj $   $Date: 11/12/04 10:33a $
 | |
|  *
 | |
|  * $History: EopToErgRelations.cs $
 | |
|  * 
 | |
|  * *****************  Version 1  *****************
 | |
|  * User: Jsj          Date: 11/12/04   Time: 10:33a
 | |
|  * Created in $/LibSource/VDB
 | |
|  * Class to support translation table maintenance.
 | |
|  *********************************************************************************************/
 | |
| using System;
 | |
| using System.IO;
 | |
| using System.Collections;
 | |
| using VDB;
 | |
| 
 | |
| namespace VDB_Set
 | |
| {
 | |
| 	/// <summary>
 | |
| 	/// Support for the maintenance of the EOP ot ERG translation table
 | |
| 	/// (TRANSL.TBL) which holds the relationships between the EOPs and ERGs
 | |
| 	/// </summary>
 | |
| 	public class EopToErgRelations
 | |
| 	{
 | |
| 		static string RelationshipFile = "TRANSL.TBL";
 | |
| 		private ArrayList _aryTransTable = null;
 | |
| 
 | |
| 		public ArrayList aryTransTable
 | |
| 		{
 | |
| 			get 
 | |
| 			{
 | |
| 				return _aryTransTable;
 | |
| 			}
 | |
| 
 | |
| 			set
 | |
| 			{
 | |
| 				_aryTransTable = value;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public EopToErgRelations()
 | |
| 		{
 | |
| 			_aryTransTable = new ArrayList();
 | |
| 			ReadTranslationTableFile();
 | |
| 		}
 | |
| 
 | |
| 		private void ReadTranslationTableFile()
 | |
| 		{
 | |
| 			string inbuf;
 | |
| 			TransFileRecord TranTblRec;
 | |
| 
 | |
| 			if (!File.Exists(RelationshipFile))
 | |
| 				return; // file not there to read
 | |
| 			StreamReader sr = new StreamReader(RelationshipFile);
 | |
| 			while ((inbuf = sr.ReadLine()) != null)
 | |
| 			{
 | |
| 				TranTblRec = new TransFileRecord(inbuf);
 | |
| 				_aryTransTable.Add(TranTblRec);
 | |
| 			}
 | |
| 			sr.Close();
 | |
| 		}
 | |
| 
 | |
| 		public void WriteTranslationTableFile()
 | |
| 		{
 | |
| 			StreamWriter sw = new StreamWriter(RelationshipFile,false);
 | |
| 			foreach (TransFileRecord tfr in _aryTransTable)
 | |
| 			{
 | |
| 				sw.Write(tfr.StringForFile());
 | |
| 			}
 | |
| 			sw.Close();
 | |
| 		}
 | |
| 
 | |
| 		// Add to the end of the passed in list either info from the read-in
 | |
| 		// translation file (TRANSL.TBL) or a new (empty) record.
 | |
| 		public void AddToTranslationList(SetRecordObj SetRecObj, ArrayList NewList)
 | |
| 		{
 | |
| 			bool found = false;
 | |
| 			for (int i = 0; !found && i < _aryTransTable.Count; i++)
 | |
| 			{
 | |
| 				TransFileRecord tfr = (TransFileRecord)_aryTransTable[i];
 | |
| 				string tfrUpper = tfr.EOPFile.ToUpper();
 | |
| 				string NewUpper = SetRecObj.DatabaseTable.ToUpper();
 | |
| 
 | |
| 				if (tfrUpper.Equals(NewUpper))
 | |
| 				{
 | |
| 					NewList.Add(tfr);
 | |
| 					found=true;
 | |
| 				}
 | |
| 			}
 | |
| 			if (!found)
 | |
| 			{
 | |
| 				TransFileRecord newrec = new TransFileRecord();
 | |
| 				newrec.EOPFile = SetRecObj.DatabaseTable;
 | |
| 				NewList.Add(newrec);
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		// Assign the ERG information (passed in as RecObj) to the currently
 | |
| 		// slected EOP
 | |
| 		public bool ChangeTranslationListItem(int EOPidx, object RecObj)
 | |
| 		{
 | |
| 			bool changedFlag = false;
 | |
| 			SetRecordObj SetRecObj = (SetRecordObj)RecObj;
 | |
| 			TransFileRecord tfr = (TransFileRecord)_aryTransTable[EOPidx];
 | |
| 			if (tfr.ERGFile == null || 
 | |
| 				!tfr.ERGFile.Equals(SetRecObj.DatabaseTable) ||
 | |
| 				!tfr.ERGProcNum.Equals(SetRecObj.ProcNumber))
 | |
| 			{
 | |
| 				changedFlag = true;
 | |
| 				tfr.ERGFile = SetRecObj.DatabaseTable;
 | |
| 				tfr.ERGProcNum = SetRecObj.ProcNumber;
 | |
| 				_aryTransTable[EOPidx] = tfr;
 | |
| 			}
 | |
| 			return changedFlag;
 | |
| 		}
 | |
| 
 | |
| 		// For a given procecure number, find the position in the translation
 | |
| 		// table list.
 | |
| 		public int FindEOPInList(String EopFileName)
 | |
| 		{
 | |
| 			bool found = false;
 | |
| 			int rtval = -1;
 | |
| 			int cnt = _aryTransTable.Count;
 | |
| 			TransFileRecord tfr;
 | |
| 			string uEopFileName = EopFileName.ToUpper();
 | |
| 
 | |
| 			for (int i = 0; !found && i < cnt; i++)
 | |
| 			{
 | |
| 				tfr = (TransFileRecord)_aryTransTable[i];
 | |
| 				string uListEopName = tfr.EOPFile.ToString().ToUpper();
 | |
| 
 | |
| 				if (uListEopName.Equals(uEopFileName))
 | |
| 				{
 | |
| 					rtval = i;
 | |
| 					found = true;
 | |
| 				}
 | |
| 			}
 | |
| 			return rtval;
 | |
| 		}
 | |
| 
 | |
| 		// For a given position in the Translation table, get the corresponding
 | |
| 		// position in the ERGList array
 | |
| 		public int FindInERGList(int idx, ArrayList ERGList)
 | |
| 		{
 | |
| 			int rtval = 0;
 | |
| 			bool found = false;
 | |
| 			TransFileRecord tfr = (TransFileRecord)_aryTransTable[idx];
 | |
| 			if (tfr.ERGFile == null)
 | |
| 				return 0; // return not selected
 | |
| 			string uERGFileName = tfr.ERGFile.ToUpper();
 | |
| 			SetRecordObj SetRec;
 | |
| 			string uErgListFName;
 | |
| 			int cnt = ERGList.Count;
 | |
| 	
 | |
| 			for (int i=0; !found && i < cnt; i++)
 | |
| 			{
 | |
| 				SetRec = (SetRecordObj)ERGList[i];
 | |
| 				uErgListFName = SetRec.DatabaseTable.ToUpper();
 | |
| 				if (uErgListFName.Equals(uERGFileName))
 | |
| 				{
 | |
| 					rtval = i;
 | |
| 					found = true;
 | |
| 				}
 | |
| 			}
 | |
| 			return rtval;
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	// This class is used to hold the information of a record in the 
 | |
| 	// Translation table (TRANSL.TBL)
 | |
| 	class TransFileRecord
 | |
| 	{
 | |
| 		private string _EOPFile;
 | |
| 		private string _ERGFile;
 | |
| 		private string _ERGProcNum;
 | |
| 
 | |
| 		public string EOPFile 
 | |
| 		{
 | |
| 			get 
 | |
| 			{
 | |
| 				return _EOPFile;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				_EOPFile = value;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public string ERGFile
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return _ERGFile;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				_ERGFile = value;
 | |
| 			}
 | |
| 		}
 | |
| 		
 | |
| 		public string ERGProcNum
 | |
| 		{
 | |
| 			get
 | |
| 			{
 | |
| 				return _ERGProcNum;
 | |
| 			}
 | |
| 			set
 | |
| 			{
 | |
| 				_ERGProcNum = value;
 | |
| 			}
 | |
| 		}
 | |
| 
 | |
| 		public TransFileRecord()
 | |
| 		{
 | |
| 		_EOPFile = null;
 | |
| 		_ERGFile = null;
 | |
| 		_ERGProcNum = null;
 | |
| 		}
 | |
| 
 | |
| 		// "inbuf" is a line read from the TRANSL.TBL file.
 | |
| 		// parse out the the EOP's database file name, the ERG's 
 | |
| 		// database file name, and the ERG's procedure number
 | |
| 		public TransFileRecord(string inbuf)
 | |
| 		{
 | |
| 			int stidx, len;
 | |
| 			stidx = 0;
 | |
| 			len = inbuf.IndexOf(",");
 | |
| 			_EOPFile = inbuf.Substring(stidx,len);
 | |
| 			stidx = len+1;
 | |
| 			len = inbuf.IndexOf(",",stidx) - stidx;
 | |
| 			_ERGFile = inbuf.Substring(stidx,len);
 | |
| 			stidx = stidx + len +1;
 | |
| 			_ERGProcNum = inbuf.Substring(stidx);
 | |
| 		}
 | |
| 
 | |
| 		// Create a string of the EOP database name, ERG database name, and
 | |
| 		// ERG procedure number for saving in the TRANSL.TBL file
 | |
| 		public string StringForFile()
 | |
| 		{
 | |
| 			string outbuf;
 | |
| 			outbuf = _EOPFile + "," + _ERGFile + "," + _ERGProcNum + "\n";
 | |
| 			return outbuf;
 | |
| 		}
 | |
| 	} 
 | |
| 
 | |
| }
 |