private void saveDetails() { Error frmError = new Error(); UFLDetails ufl = new UFLDetails(); string errMsg = string.Empty; db myDb = new db(); ufl.GetHeaderValues(ws); // should we verify on save? ufl.HeaderMarkerRow = getHeaderMarkerRow(); ufl.HeaderAdditionalDetailRows = getHeaderAdditionalDetailsRows(); ufl.GetPiTags(ws); // Save, save, save ufl.SaveUFL(); // Update Row Id ws.Cells[8, 3] = ufl.UFLDetailId; frmError.ErrorMsg = "Successfully saved details."; frmError.Title = "Saved"; frmError.ShowDialog(); }
private bool verifyHeaderValues(UFLDetails ufl, ref string errMsg) { // Saves having to check for this dummy contents as well as string empty if (ufl.DateTimeFormat == "eg MM/dd/yyyy hh:mm:ss") { ufl.DateTimeFormat = String.Empty; } // valid header info if (ufl.Delimiter == String.Empty) { errMsg = "Please select a delimiter."; return(false); } if ((ufl.DateTimeFormat != String.Empty) && (ufl.DateFormat != String.Empty) && (ufl.TimeFormat != String.Empty)) { errMsg = "Please select either a DateTime Format or a Date and a Time Format."; return(false); } if (ufl.PiTowerName == String.Empty) { errMsg = "Please select a Tower Name."; return(false); } return(true); }
private void setHeaderAdditionalDetailsRows(UFLDetails ufl) { foreach (string row in ufl.HeaderAdditionalDetailRows) { if (row != "") { ws.Cells[row, 1] = "Additional Detail"; } } }
//private void getHeaderValues(UFLDetails ufl) //{ // ufl.Delimitor = (String)((Excel.Range)ws.Cells[2, 3]).Text; // ufl.DateTimeFormat = (String)((Excel.Range)ws.Cells[3, 3]).Text; // ufl.DateFormat = (String)((Excel.Range)ws.Cells[4, 3]).Text; // ufl.TimeFormat = (String)((Excel.Range)ws.Cells[5, 3]).Text; // ufl.PiTowerName = (String)((Excel.Range)ws.Cells[7, 3]).Text; // if(((Excel.Range)ws.Cells[8, 3]).Text.ToString()!="") // { // ufl.UFLDetailId = int.Parse(((Excel.Range)ws.Cells[8, 3]).Text.ToString()); // } //} //private void setHeaderValues(UFLDetails ufl) //{ // ws.Cells[2, 3] = ufl.Delimitor; // ws.Cells[3, 3] = ufl.DateTimeFormat; // ws.Cells[4, 3] = ufl.DateFormat; // ws.Cells[5, 3] = ufl.TimeFormat; // ws.Cells[7, 3] = ufl.PiTowerName; // ws.Cells[8, 3] = ufl.UFLDetailId; //} private void generateUFLClicked() { UFLDetails ufl = new UFLDetails(); List <String> iniTemplate = new List <string>(); Utils u = new Utils(); Error frmError = new Error(); string outFilename = string.Empty; db myDb = new db(); // get all the UFL details ufl.GetHeaderValues(ws); if (ufl.UFLDetailId <= 0) { frmError.ErrorMsg = "Please use 'Save Details to Database' before generating the UFL."; frmError.ShowDialog(); return; } if (ufl.DateTimeFormat.IndexOf("mm") != ufl.DateTimeFormat.LastIndexOf("mm")) { frmError.ErrorMsg = String.Format("Warning: It looks like the date format contains 'mm' twice.\n\nMonth should use 'MMM', minutes should us 'mm'."); frmError.Title = "Warning"; frmError.ShowDialog(); } ufl.HeaderMarkerRow = getHeaderMarkerRow(); ufl.HeaderAdditionalDetailRows = getHeaderAdditionalDetailsRows(); ufl.GetPiTags(ws); ufl.GetHeaderRowContents(ws); ufl.GetHeaderAdditionalDetailsRowsContents(ws); // load template iniTemplate = u.LoadTemplate(@"\\10.128.10.8\PIUFL\UFLFormat_template.ini"); u.FindAndReplace(ufl, iniTemplate); outFilename = String.Format(@"\\10.128.10.8\PIUFL\UFLFormat_{0}.ini", ufl.UFLDetailId.ToString().PadLeft(4, '0')); u.SaveTemplate(outFilename, iniTemplate); ufl.UpdateFileFormatDetails(); frmError.ErrorMsg = String.Format("Successfully generated UFL:\n\n {0}", outFilename); frmError.Title = "Generate UFL"; frmError.ShowDialog(); }
//private void getHeaderValues(UFLDetails ufl) //{ // ufl.Delimitor = (String)((Excel.Range)ws.Cells[2, 3]).Text; // ufl.DateTimeFormat = (String)((Excel.Range)ws.Cells[3, 3]).Text; // ufl.DateFormat = (String)((Excel.Range)ws.Cells[4, 3]).Text; // ufl.TimeFormat = (String)((Excel.Range)ws.Cells[5, 3]).Text; // ufl.PiTowerName = (String)((Excel.Range)ws.Cells[7, 3]).Text; // if(((Excel.Range)ws.Cells[8, 3]).Text.ToString()!="") // { // ufl.UFLDetailId = int.Parse(((Excel.Range)ws.Cells[8, 3]).Text.ToString()); // } //} //private void setHeaderValues(UFLDetails ufl) //{ // ws.Cells[2, 3] = ufl.Delimitor; // ws.Cells[3, 3] = ufl.DateTimeFormat; // ws.Cells[4, 3] = ufl.DateFormat; // ws.Cells[5, 3] = ufl.TimeFormat; // ws.Cells[7, 3] = ufl.PiTowerName; // ws.Cells[8, 3] = ufl.UFLDetailId; //} private void generateUFLClicked() { UFLDetails ufl = new UFLDetails(); List <String> iniTemplate = new List <string>(); Utils u = new Utils(); Error frmError = new Error(); string outFilename = string.Empty; db myDb = new db(); // get all the UFL details ufl.GetHeaderValues(ws); if (ufl.UFLDetailId <= 0) { frmError.ErrorMsg = "Please use 'Save Details to Database' before generating the UFL."; frmError.ShowDialog(); return; } if (ufl.DateTimeFormat.IndexOf("mm") != ufl.DateTimeFormat.LastIndexOf("mm")) { frmError.ErrorMsg = String.Format("Warning: It looks like the date format contains 'mm' twice.\n\nMonth should use 'MMM', minutes should us 'mm'."); frmError.Title = "Warning"; frmError.ShowDialog(); } ufl.HeaderMarkerRow = getHeaderMarkerRow(); ufl.HeaderAdditionalDetailRows = getHeaderAdditionalDetailsRows(); ufl.GetPiTags(ws); ufl.GetHeaderRowContents(ws); ufl.GetHeaderAdditionalDetailsRowsContents(ws); ufl.UpdateFileFormatDetails(); DateTime dateval = default(DateTime); int row = ufl.HeaderMarkerRow + 2; if (!ufl.HeaderMarkerRowContents.Contains("JulianDay")) { Excel.Range rng = ws.Cells[row, 2] as Excel.Range; string datevalstring = rng.Value.ToString(); dateval = DateTime.Parse(datevalstring); } else { //assemble date from julian date Excel.Range rng = ws.Cells[row, 4] as Excel.Range; string year = rng.Value.ToString(); rng = ws.Cells[row, 5] as Excel.Range; string doy = rng.Value.ToString(); rng = ws.Cells[row, 6] as Excel.Range; string hourmin = rng.Value.ToString(); dateval = u.JulianToDateTime(year, doy, hourmin); } string sensorError = ufl.CheckMappedSensors(ufl.UFLDetailId, dateval); if (sensorError.Length > 0) { frmError.ErrorMsg = sensorError; frmError.Title = "Save Sensor Mappings"; frmError.Height = 500; frmError.Width = 700; frmError.ShowDialog(); return; } frmError.ErrorMsg = "Successfully saved sensor mappings "; frmError.Title = "Save Sensor Mappings"; frmError.Width = 500; frmError.ShowDialog(); }
private void setHeaderMarkerRow(UFLDetails ufl) { ws.Cells[ufl.HeaderMarkerRow, 1] = "Header Match"; }
private void loadDetails() { Error frmError = new Error(); UFLDetails ufl = new UFLDetails(); UFLDetails oldUfl = new UFLDetails(); string errMsg = string.Empty; db myDb = new db(); Load frmLoad = new Load(); Excel.Range range = null; if (LoadDetailsDone) { frmLoad.ShowDialog(); ufl.UFLDetailId = frmLoad.UFLDetailId; if (ufl.UFLDetailId <= 0) { //frmError.ErrorMsg = "No UFL details could be found.\n\nHave you created a UFL Area and selected a unique id?"; //frmError.ShowDialog(); return; } oldUfl.GetPiTags(ws); // Clear PI Tags row if (oldUfl.PiTagRow > 0) { range = (Excel.Range)ws.get_Range("A" + oldUfl.PiTagRow, "A" + oldUfl.PiTagRow); range.EntireRow.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); } // Clear contents of col 1 range = (Excel.Range)ws.get_Range("A1", "A1"); range.EntireColumn.ClearContents(); //.Delete(Excel.XlDeleteShiftDirection.xlShiftUp); //insertCol(1); //myDb.loadUFL(ufl); ufl.LoadUFL(); ufl.SetHeaderValues(ref ws); setHeaderMarkerRow(ufl); setHeaderAdditionalDetailsRows(ufl); createPiTagsNamedRangeForSite(ufl.PiTowerName); insertPiTagsIntoHeaderRow(ufl.PiTagRow); ufl.SetPiTags(ref ws); frmError.ErrorMsg = String.Format("Successfully loaded details for {0} ({1}).", ufl.PiTowerName, ufl.UFLDetailId); frmError.Title = "Loaded"; frmError.ShowDialog(); } else { // Please select 'Insert PI Tag Header' first frmError.ErrorMsg = "Please use the menu option 'Add UFL Areas' first."; frmError.ShowDialog(); } }
public void FindAndReplace(UFLDetails ufl, List <String> iniTemplate) { int numberOfTags = ufl.PiTagList.Count; int fieldIndex = 22; for (int i = 0; i < iniTemplate.Count; i++) { //iniTemplate[i] = iniTemplate[i].Replace("{InputFileMask}", ufl.FileMask.ToString()); // Sometime the extension changes (decryption, extraction) so we look for * // Filemask is used to identify the file format however iniTemplate[i] = iniTemplate[i].Replace("{InputFileMask}", "*"); iniTemplate[i] = iniTemplate[i].Replace("{InputFolder}", ufl.Folder); iniTemplate[i] = iniTemplate[i].Replace("{FileFormat}", String.Format("f{0}_{1}", ufl.UFLDetailId.ToString().PadLeft(4, '0'), ufl.FileMask)); iniTemplate[i] = iniTemplate[i].Replace("{UFLFileFormatId}", ufl.UFLDetailId.ToString()); iniTemplate[i] = iniTemplate[i].Replace("{DateTimeFormat}", ufl.DateTimeFormat); if (iniTemplate[i].Equals("{FieldsTagVariables}")) { iniTemplate[i] = String.Empty; int tagNumber = 1; for (int j = 0; j < numberOfTags; j++) { if (ufl.DataType == "DAT") { // DAT only has one field iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}DAT\" ", fieldIndex++, tagNumber)); iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}DCL\" ", fieldIndex++, tagNumber)); iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}QCW\" ", fieldIndex++, tagNumber++)); } else if (ufl.DataType == "DPD") { iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}DPD\" ", fieldIndex++, tagNumber)); iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}QCP\" ", fieldIndex++, tagNumber)); iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}DCL\" ", fieldIndex++, tagNumber)); iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"TAG{1}QCW\" ", fieldIndex++, tagNumber++)); } } } else if (iniTemplate[i].Equals("{FieldsTagValues}")) { iniTemplate[i] = String.Empty; //int fieldIndex = 100; int tagNumber = 1; for (int j = 0; j < numberOfTags; j++) { iniTemplate.Insert(i++, String.Format("FIELD({0}).NAME = \"Value{1}\" ", fieldIndex, tagNumber++)); iniTemplate.Insert(i++, String.Format("FIELD({0}).TYPE = \"Number\" ", fieldIndex++)); } } else if (iniTemplate[i].Equals("{HeaderFilter}")) { StringBuilder filter = new StringBuilder(); string delim = ""; foreach (string tag in ufl.HeaderMarkerRowContents) { filter.Append(delim); filter.Append(tag); delim = ufl.DelimiterCode; } iniTemplate[i] = "Header.FILTER = C1==\"" + filter.ToString() + "\""; } else if (iniTemplate[i].Equals("{DefineTagNames}")) { iniTemplate[i] = String.Empty; for (int j = 0; j < numberOfTags; j++) { // Don't store N/A or TIME tags if ((ufl.PiTagList[j].ToString().ToUpper() != "N/A") && (ufl.PiTagList[j].ToString().ToUpper() != "DATETIME")) { if (ufl.DataType == "DAT") { iniTemplate.Insert(i++, String.Format("TAG{0}DAT=\"{1}.DAT.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); iniTemplate.Insert(i++, String.Format("TAG{0}DCL=\"{1}.DCL.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); iniTemplate.Insert(i++, String.Format("TAG{0}QCW=\"{1}.QCW.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); } else if (ufl.DataType == "DPD") { iniTemplate.Insert(i++, String.Format("TAG{0}DPD=\"{1}.DPD.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); iniTemplate.Insert(i++, String.Format("TAG{0}QCP=\"{1}.QCP.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); iniTemplate.Insert(i++, String.Format("TAG{0}DCL=\"{1}.DCL.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); iniTemplate.Insert(i++, String.Format("TAG{0}QCW=\"{1}.QCW.{2}\" ", j + 1, ufl.PiTowerName, ufl.PiTagList[j].ToString())); } } } } else if (iniTemplate[i].Equals("{DataFilter}")) { StringBuilder filter = new StringBuilder(); string delim = ""; for (int j = 0; j < ufl.PiTagList.Count; j++) { filter.Append(delim + "*"); delim = ufl.DelimiterCode; } //filter.Append("*" +ufl.Delimitor, 0, ufl.PiTagList.Count); iniTemplate[i++] = String.Format("Data.FILTER = C1==\"{0}\" ", filter.ToString()); for (int j = 0; j < numberOfTags; j++) { // Don't store N/A tags if (ufl.PiTagList[j].ToString().ToUpper() != "N/A") { // Record time value in a special tag if (ufl.PiTagList[j].ToString() == "DateTime") { iniTemplate.Insert(i++, string.Format("DATETIME = [\"{0}\"]", starsPick(ufl.PiTagList.Count, j + 1, ufl.DelimiterCode))); } else { iniTemplate.Insert(i++, string.Format("Value{0} = [\"{1}\"]", j + 1, starsPick(ufl.PiTagList.Count, j + 1, ufl.DelimiterCode))); } } } } else if (iniTemplate[i].Equals("{DataStoreInPi}")) { iniTemplate[i] = String.Empty; for (int j = 0; j < numberOfTags; j++) { // Don't store N/A or TIME tags if ((ufl.PiTagList[j].ToString().ToUpper() != "N/A") && (ufl.PiTagList[j].ToString().ToUpper() != "DATETIME")) { if (ufl.DataType == "DAT") { iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}DAT,,DATETIME,Value{0},,) ", j + 1)); iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}DCL,,DATETIME,Value{0},,) ", j + 1)); // Only store QCW values for AVG tags if (ufl.PiTagList[j].ToString().ToUpper().Contains("AVG")) { iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}QCW,,DATETIME,-9999,,) ", j + 1)); } } else if (ufl.DataType == "DPD") { iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}DPD,,DATETIME,Value{0},,) ", j + 1)); iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}DCL,,DATETIME,Value{0},,) ", j + 1)); // Only store QCP/QCW values for AVG tags if (ufl.PiTagList[j].ToString().ToUpper().Contains("AVG")) { iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}QCP,,DATETIME,-9999,,) ", j + 1)); iniTemplate.Insert(i++, String.Format("Result = StoreInPI(TAG{0}QCW,,DATETIME,-9999,,) ", j + 1)); } } } } } } }