public object translate(string text, string mode, SetOfTableList tables) { /* please check undefined case */ //String ans = ""; /* mode case */ if (mode.Equals("s") || mode.Equals("p")) { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get key */ int j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } string key = text.Substring(j, i - j - 1); //fixed /* get indexField */ /*j = i; * k = 1; * while (i < text.length() && k != 0) { * if (text.charAt(i) == '@') { * k--; * } * i++; * }*/ int indexField = int.Parse(text.Substring(i)); /// may use tryParse tableList table = tables.getTableList(tableName); if (table != null) { if (mode.Equals("s")) { return(table.searchField(key, indexField)); } else if (mode.Equals("p")) { return(table.searchPrefixField(key, indexField)); } } } else if (mode.Equals("T")) ////////////////////////////////////////////////////////////////////////// { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get a sequence of column */ int j = i; k = 1; int c = 0; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } else if (text[i] == '-') { c++; } i++; } int[] col = new int[c + 1]; string[] header = new string[c + 1]; string[] colWidth = null; string strtmp = text.Substring(j, i - j - 1); //fixed c = 0; k = 0; for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '-') { col[c] = int.Parse(strtmp.Substring(k, m - k)); /// may use tryParse fixed//fixed c++; k = m + 1; } } col[c] = int.Parse(strtmp.Substring(k)); /// may use tryParse /* get header */ /////////////////////////////////// j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (k == 0) // add column width { strtmp = text.Substring(j, i - j - 1); colWidth = new string[header.Length]; c = 0; k = 0; string strtmp2 = text.Substring(i); for (int m = 0; m < strtmp2.Length; m++) { if (strtmp2[m] == '-') { colWidth[c] = strtmp2.Substring(k, m - k); //fixed c++; k = m + 1; } } colWidth[c] = strtmp2.Substring(k); } else { strtmp = text.Substring(j); } /////////////////////////////////// c = 0; k = 0; //strtmp = text.Substring(i); for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '-') { header[c] = strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } header[c] = strtmp.Substring(k); tableList table = tables.getTableList(tableName); if (table != null) { tableListWord tlwtmp = new tableListWord(table, col); //// may be also add border tlwtmp.addHeader(header); if (colWidth != null) { tlwtmp.addColWidth(colWidth); } return(tlwtmp); ////////////////////////////////////// change } } else if (mode.Equals("e")) { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get indexField */ int j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } //String acol = text.substring(j, i-1); int indexField = int.Parse(text.Substring(j, i - j - 1)); /// may use tryParse//fixed /* get a sequence of element */ j = i; k = 1; int c = 0; while (i < text.Length && k != 0) { if (text[i] == '|') { if (i + 1 >= text.Length) { return(null); } else if (text[i + 1] == '|') { i++; } else if (text[i + 1] == '-') { i++; } else { return(null); } } else if (text[i] == '@') { k--; } else if (text[i] == '-') { c++; } i++; } string[] element = new string[c + 1]; string[] value = new string[c + 2]; string strtmp = text.Substring(j, i - j - 1); //fixed for (int z = 0; z <= c; z++) { element[z] = ""; value[z] = ""; } value[c + 1] = ""; c = 0; k = 0; for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '|') { if (m + 1 >= strtmp.Length) { return(null); } else if (strtmp[m + 1] == '|') { element[c] += strtmp.Substring(k, m - k) + "|"; m++; k = m + 1; } else if (strtmp[m + 1] == '-') { element[c] += strtmp.Substring(k, m - k) + "-"; m++; k = m + 1; } else { return(null); } } else if (strtmp[m] == '-') { element[c] += strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } element[c] += strtmp.Substring(k); /* get a sequence of value */ c = 0; k = 0; strtmp = text.Substring(i); for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '|') { if (m + 1 >= strtmp.Length) { return(null); } else if (strtmp[m + 1] == '|') { value[c] += strtmp.Substring(k, m - k) + "|"; m++; k = m + 1; } else if (strtmp[m + 1] == '-') { value[c] += strtmp.Substring(k, m - k) + "-"; m++; k = m + 1; } else { return(null); } } else if (strtmp[m] == '-') { value[c] += strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } if (c == value.Length - 1) { // there is else case value[c] += strtmp.Substring(k); } else if (c == value.Length - 2) { // non else case value[c] += strtmp.Substring(k); value[c + 1] = ""; } tableList table = tables.getTableList(tableName); if (table != null) { object[] tmps = table.getRow(0); if (indexField < tmps.Length && tmps[indexField] is string) { for (j = 0; j < element.Length; j++) { if (((string)tmps[indexField]).Equals(element[j])) { return(value[j]); } } return(value[j]); } } return(null); } else if (mode.Equals("E")) { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get key indexField */ int j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } //String acol = text.substring(j, i-1); int keyIndexField = int.Parse(text.Substring(j, i - j - 1)); /// may use tryParse//fixed /* get key */ j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } string key = text.Substring(j, i - j - 1); //fixed /* get indexField */ j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } int indexField = int.Parse(text.Substring(j, i - j - 1)); /// may use tryParse//fixed /* get a sequence of element */ j = i; k = 1; int c = 0; while (i < text.Length && k != 0) { if (text[i] == '|') { if (i + 1 >= text.Length) { return(null); } else if (text[i + 1] == '|') { i++; } else if (text[i + 1] == '-') { i++; } else { return(null); } } else if (text[i] == '@') { k--; } else if (text[i] == '-') { c++; } i++; } string[] element = new string[c + 1]; string[] value = new string[c + 3]; string strtmp = text.Substring(j, i - j - 1); //fixed for (int z = 0; z <= c; z++) { element[z] = ""; value[z] = ""; } value[c + 1] = ""; c = 0; k = 0; for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '|') { if (m + 1 >= strtmp.Length) { return(null); } else if (strtmp[m + 1] == '|') { element[c] += strtmp.Substring(k, m - k) + "|"; m++; k = m + 1; } else if (strtmp[m + 1] == '-') { element[c] += strtmp.Substring(k, m - k) + "-"; m++; k = m + 1; } else { return(null); } } else if (strtmp[m] == '-') { element[c] += strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } element[c] += strtmp.Substring(k); /* get a sequence of value */ c = 0; k = 0; strtmp = text.Substring(i); for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '|') { if (m + 1 >= strtmp.Length) { return(null); } else if (strtmp[m + 1] == '|') { value[c] += strtmp.Substring(k, m - k) + "|"; m++; k = m + 1; } else if (strtmp[m + 1] == '-') { value[c] += strtmp.Substring(k, m - k) + "-"; m++; k = m + 1; } else { return(null); } } else if (strtmp[m] == '-') { value[c] += strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } if (c == value.Length - 1) { // there is else case value[c] += strtmp.Substring(k); } else if (c == value.Length - 2) { // non else case value[c] += strtmp.Substring(k); value[c + 1] = ""; } else if (c == value.Length - 3) { // non else case value[c] += strtmp.Substring(k); value[c + 1] = ""; value[c + 2] = ""; } tableList table = tables.getTableList(tableName); if (table != null) { strtmp = (string)table.searchField(keyIndexField, key, indexField); if (strtmp != null) { for (j = 0; j < element.Length; j++) { if (strtmp.Equals(element[j])) { return(value[j]); } } return(value[j]); } else { return(value[value.Length - 1]); } } return(null); } else if (mode.Equals("c")) { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get indexField */ int indexField = int.Parse(text.Substring(i)); /// may use tryParse tableList table = tables.getTableList(tableName); if (table != null) { object[] tmps = table.getRow(0); if (indexField < tmps.Length && tmps[indexField] is string) { return((string)tmps[indexField]); } } } else if (mode.Equals("x")) { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get a sequence of output */ string[] output = new string[2]; string strtmp = text.Substring(i); int c = 0; k = 0; for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '-') { output[c] = strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } output[c] = strtmp.Substring(k); tableList table = tables.getTableList(tableName); if (table == null) { return(output[0]); } else { return(output[1]); } } else if (mode.Equals("X")) { /* get table name */ int i = 0; int k = 3; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } if (i == text.Length) { return(null); } string tableName = text.Substring(0, i - 1); /* get key */ int j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } string key = text.Substring(j, i - j - 1); //fixed /* get indexField */ j = i; k = 1; while (i < text.Length && k != 0) { if (text[i] == '@') { k--; } i++; } int indexField = int.Parse(text.Substring(j, i - j - 1)); /// may use tryParse//fixed /* get a sequence of output */ string[] output = new string[2]; string strtmp = text.Substring(i); int c = 0; k = 0; for (int m = 0; m < strtmp.Length; m++) { if (strtmp[m] == '-') { output[c] = strtmp.Substring(k, m - k); //fixed c++; k = m + 1; } } output[c] = strtmp.Substring(k); tableList table = tables.getTableList(tableName); if (table != null) { object tmp = table.searchField(indexField, key, indexField); if (tmp != null && tmp is string && key.Equals((string)tmp)) { return(output[1]); } } return(output[0]); } return(null); }
}// End of PM configuration // Function that set and get Database config file and insert to database. public void databaseConfigGen(string projectCode, string quarter) { string timeStamp = GetTimestamp(DateTime.Now); string tempPath = Path.Combine(System.AppDomain.CurrentDomain.BaseDirectory.ToString(), "TEMP", "DB_" + timeStamp); Directory.CreateDirectory(tempPath); string fileName = DBConfigUpload.FileName.ToString(); string filePath = Path.Combine(tempPath, fileName); DBConfigUpload.PostedFile.SaveAs(Path.Combine(tempPath, fileName)); string backupDatabaseFile = BackupDatabaseFile.FileName.ToString(); string backupDatabaseFilePath = Path.Combine(tempPath, backupDatabaseFile); BackupDatabaseFile.PostedFile.SaveAs(Path.Combine(tempPath, backupDatabaseFile)); string backupControlFile = BackupControlFile.FileName.ToString(); string backupControlFilePath = Path.Combine(tempPath, backupControlFile); BackupControlFile.PostedFile.SaveAs(Path.Combine(tempPath, backupControlFile)); string backupArcheiveFile = BackupArchieveFile.FileName.ToString(); string backupArcheiveFilePath = Path.Combine(tempPath, backupArcheiveFile); BackupArchieveFile.PostedFile.SaveAs(Path.Combine(tempPath, backupArcheiveFile)); string backupDBF, backupCFF, backupALF; string alertFile = AlertLogFile.FileName.ToString(); string alertFilePath = Path.Combine(tempPath, alertFile); AlertLogFile.PostedFile.SaveAs(Path.Combine(tempPath, alertFile)); using (TextReader reader = File.OpenText(backupDatabaseFilePath)) { backupDBF = reader.ReadToEnd(); } using (TextReader reader = File.OpenText(backupControlFilePath)) { backupCFF = reader.ReadToEnd(); } using (TextReader reader = File.OpenText(backupArcheiveFilePath)) { backupALF = reader.ReadToEnd(); } dbHelper.InsertBackupDatabase(projectCode, quarter, backupDBF, backupCFF, backupALF); string alertLog; List<object> alertObj = new List<object>(); using (TextReader reader = File.OpenText(alertFilePath)) { while ((alertLog = reader.ReadLine()) != null) { //if(alertLog.Contains("ora-")) // alertObj.Add(alertLog); dbHelper.InsertAlert(projectCode, quarter, alertLog); } } SetOfTableList tables = null; OracleInformation oracleInfo = new OracleInformation(); using (TextReader logFile = File.OpenText(filePath)) { tables = oracleInfo.readInputLog(logFile); } tableListWord tableWord; string binFolderPath = Server.MapPath("bin"); string path = binFolderPath + "/Debug/config/4_1.txt"; using (TextReader inFile = File.OpenText(path)) { tableWord = oracleInfo.readOutputTable(inFile, tables); List<object[]> database4_1Obj = new List<object[]>(); for (int k = 0; k < tableWord.getRowNumber(); k++) { if (tableWord.getRow(k)[0].Equals("Temp tablespace size")) { object[] obj1 = (object[])tableWord.getRows()[k]; tableListWord obj2 = (tableListWord)obj1[1]; List<object[]> database4_1_1Obj = new List<object[]>(); for (int z = 0; z < obj2.getRows().Count; z++) { object[] subDetail = (object[])obj2.getRows()[z]; database4_1_1Obj.Add(new object[] { subDetail[0].ToString(), subDetail[1].ToString()}); } dbHelper.InsertTempTableSize(projectCode, quarter, database4_1_1Obj); } else if (tableWord.getRow(k)[0].Equals("Tablespace size")) { object[] obj1 = (object[])tableWord.getRows()[k]; tableListWord obj2 = (tableListWord)obj1[1]; List<object[]> database4_1_2Obj = new List<object[]>(); for (int z = 0; z < obj2.getRows().Count; z++) { object[] subDetail = (object[])obj2.getRows()[z]; database4_1_2Obj.Add(new object[] { subDetail[0].ToString(), subDetail[1].ToString() }); } dbHelper.InsertTableSize(projectCode, quarter, database4_1_2Obj); } else { database4_1Obj.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1] }); } } dbHelper.InsertDatabaseConfiguration(projectCode, quarter, database4_1Obj); } path = binFolderPath + "/Debug/config/4_2.txt"; using (TextReader inFile = File.OpenText(path)) { tableWord = oracleInfo.readOutputTable(inFile, tables); List<object[]> database4_2Obj = new List<object[]>(); for (int k = 0; k < tableWord.getRowNumber(); k++) { database4_2Obj.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1] }); } dbHelper.InsertDatabaseParameter(projectCode, quarter, database4_2Obj); } tableList tableTmp = null; tableTmp = tables.getTableList("4_4@Database file@1"); if (tableTmp != null) { List<object[]> databaseFileList = new List<object[]>(); tableWord = new tableListWord(tableTmp); for (int k = 0; k < tableWord.getRowNumber(); k++) { databaseFileList.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2], tableWord.getRow(k)[3], tableWord.getRow(k)[4], tableWord.getRow(k)[5] }); } dbHelper.InsertDatabaseFile(projectCode, quarter, databaseFileList); } tableTmp = null; tableTmp = tables.getTableList("4_5@Temp file@1"); if (tableTmp != null) { List<object[]> tempFileList = new List<object[]>(); tableWord = new tableListWord(tableTmp); for (int k = 0; k < tableWord.getRowNumber(); k++) { tempFileList.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2], tableWord.getRow(k)[3], tableWord.getRow(k)[4], tableWord.getRow(k)[5] }); } dbHelper.InsertTempFile(projectCode, quarter, tempFileList); } tableTmp = null; tableTmp = tables.getTableList("4_6@Redo log file@1"); if (tableTmp != null) { List<object[]> redoLogList = new List<object[]>(); tableWord = new tableListWord(tableTmp); /// Convert B to MB (***warning: available only MB is string that represent integer) for (int k = 0; k < tableWord.getRowNumber(); k++) { object[] rowTmp = tableWord.getRow(k); if (rowTmp[2] is string) { rowTmp[2] = (float.Parse((string)(rowTmp[2])) / (1024 * 1024)).ToString(); redoLogList.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], rowTmp[2]}); } else { redoLogList.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2] }); } } dbHelper.InsertRedoLogFile(projectCode, quarter, redoLogList); } tableTmp = null; tableTmp = tables.getTableList("4_7@Controlfile@1"); if (tableTmp != null) { List<object> controlFileList = new List<object>(); tableWord = new tableListWord(tableTmp); for (int k = 0; k < tableWord.getRowNumber(); k++) { controlFileList.Add(tableWord.getRow(k)[0]); } dbHelper.InsertControlFile(projectCode, quarter, controlFileList); } tableTmp = null; tableTmp = tables.getTableList("4_8@Jobs@1"); if (tableTmp != null) { List<object[]> dailyList = new List<object[]>(); int[] indexA = { 1024, 3, 1024 }; tableWord = new tableListWord(tableTmp, indexA); for (int k = 0; k < tableWord.getRowNumber(); k++) { dailyList.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2] }); } dbHelper.InsertDiaryWorksheet(projectCode, quarter, dailyList); } path = binFolderPath + "/Debug/config/4_9.txt"; using (TextReader inFile = File.OpenText(path)) { tableWord = oracleInfo.readOutputTable(inFile, tables); List<object[]> monthLyList = new List<object[]>(); for (int k = 0; k < tableWord.getRowNumber(); k++) { monthLyList.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2] }); } dbHelper.InsertMonthlyWorksheet(projectCode, quarter, monthLyList); } ////////////////////////////////////////////////////////// O5 ////////////////////////////////////////////////////////// path = binFolderPath + "/Debug/config/5_1.txt"; using (TextReader inFile = File.OpenText(path)) { tableWord = oracleInfo.readOutputTable(inFile, tables); List<object[]> performanceReview = new List<object[]>(); for (int k = 0; k < tableWord.getRowNumber(); k++) { if (k == 0) { object[] obj1 = (object[])tableWord.getRows()[k]; tableListWord obj2 = (tableListWord)obj1[1]; List<object[]> hitRatioList = new List<object[]>(); for (int z = 0; z < obj2.getRows().Count; z++) { object[] subDetail = (object[])obj2.getRows()[z]; hitRatioList.Add(new object[] {subDetail[0].ToString(), subDetail[1].ToString()}); } dbHelper.InsertHitRatio(projectCode, quarter, hitRatioList); } else if (k == 1) { object[] obj1 = (object[])tableWord.getRows()[k]; tableListWord obj2 = (tableListWord)obj1[1]; List<object[]> pinRatioList = new List<object[]>(); for (int z = 0; z < obj2.getRows().Count; z++) { object[] subDetail = (object[])obj2.getRows()[z]; pinRatioList.Add(new object[] {subDetail[0].ToString(), subDetail[1].ToString(), subDetail[2].ToString() }); } dbHelper.InsertHitRatio(projectCode, quarter, pinRatioList); } else if (k == 14) { object[] obj1 = (object[])tableWord.getRows()[k]; tableListWord obj2 = (tableListWord)obj1[1]; List<object[]> undoList = new List<object[]>(); for (int z = 0; z < obj2.getRows().Count; z++) { object[] subDetail = (object[])obj2.getRows()[z]; undoList.Add(new object[] { subDetail[0].ToString(), subDetail[1].ToString(), subDetail[2].ToString() }); } dbHelper.InsertUndoSegmentsSize(projectCode, quarter, undoList); } else { performanceReview.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1] }); } } dbHelper.InsertPerformanceReview(projectCode, quarter, performanceReview); } // Table fress space. tableTmp = null; tableTmp = tables.getTableList("6_1@Table free space@1"); if (tableTmp != null) { tableWord = new tableListWord(tableTmp); List<object[]> list = new List<object[]>(); for (int k = 0; k < tableWord.getRowNumber(); k++) { list.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2], tableWord.getRow(k)[3], tableWord.getRow(k)[4] }); } dbHelper.InsertTablespaceFreespace(projectCode, quarter, list); } // Temptable and tablespace tableTmp = null; tableTmp = tables.getTableList("7_1@default tbs/temp per user@1"); if (tableTmp != null) { List<object[]> list = new List<object[]>(); tableWord = new tableListWord(tableTmp); for (int k = 0; k < tableWord.getRowNumber(); k++) { list.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2]}); } dbHelper.InsertTablespaceAndTempTablespace(projectCode, quarter, list); } // Database registration Insert. tableTmp = null; tableTmp = tables.getTableList("8_1@dba registry@1"); if (tableTmp != null) { List<object[]> list = new List<object[]>(); tableWord = new tableListWord(tableTmp); for (int k = 0; k < tableWord.getRowNumber(); k++) { list.Add(new object[] { tableWord.getRow(k)[0], tableWord.getRow(k)[1], tableWord.getRow(k)[2], tableWord.getRow(k)[3] }); } dbHelper.InsertDatabaseRegistry(projectCode, quarter, list); } // Growth Rate Insert. string currentAllocate, currentUsed, allocateGrowth, useGrowth; currentAllocate = currAlloc.Text; currentUsed = usedAlloc.Text; allocateGrowth = allocGrowth.Text; useGrowth = usedGrowth.Text; object[] growthRateList = new object[] { currentAllocate, currentUsed, allocateGrowth, useGrowth }; dbHelper.InsertDatabaseGrowthRate(projectCode, quarter, growthRateList); //Delete Folder temp. Directory.Delete(tempPath,true); }