/********************************************************************************************* * 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 { /// /// Support for the maintenance of the EOP ot ERG translation table /// (TRANSL.TBL) which holds the relationships between the EOPs and ERGs /// 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; } } }