public ImportDesiredVariables ( |
||
conn | ||
client | IDataClient | |
filename | string | |
tablename | string | |
return | bool |
/// <summary> /// Currently rebuilds the requested variables table every time /// </summary> /// <param name="conn"></param> /// <returns></returns> public DataTable GetRequestedVariables(DbConnection conn) { _log.Debug("Processing requested variables... "); DataTable dt = null; if (!string.IsNullOrEmpty(DesiredVariablesFilename)) { DesiredColumnsReader fileReader = new DesiredColumnsReader(); bool importSucceeded = fileReader.ImportDesiredVariables(conn, DbClient, this.DesiredVariablesFilename, DbConstants.TABLE_DesiredColumns); if (importSucceeded) { string getRequestedCount = string.Format( @"SELECT * FROM ""{0}"" ;", DbConstants.TABLE_DesiredColumns); DataTable desiredVars = DataClient.GetMagicTable(conn, DbClient, getRequestedCount); int numDesired = desiredVars.Rows.Count; _log.DebugFormat("Variable file {0} imported successfully", this.DesiredVariablesFilename); string getRequestedVariablesSQL = string.Format( @"SELECT columnMappings.CENSUS_TABLE_ID, columnMappings.COLNO, columnMappings.SEQNO, {0}.CUSTOM_COLUMN_NAME AS COLNAME FROM columnMappings, ""{0}"" WHERE columnMappings.CENSUS_TABLE_ID = {0}.CENSUS_TABLE_ID;", DbConstants.TABLE_DesiredColumns); dt = DataClient.GetMagicTable(conn, DbClient, getRequestedVariablesSQL); if ((dt == null) || (numDesired != dt.Rows.Count)) { _log.Warn("I couldn't find one or more of the variables you requested."); HashSet<string> foundVarsSet = new HashSet<string>(); if (dt != null) { foreach (DataRow dr in dt.Rows) { foundVarsSet.Add(dr["CENSUS_TABLE_ID"] as string); } } foreach (DataRow dr in desiredVars.Rows) { var varName = dr["CENSUS_TABLE_ID"] as string; if (!foundVarsSet.Contains(varName)) { _log.ErrorFormat("Could not find requested variable \"{0}\"", varName); } } _log.Debug("Processing requested variables... Done -- with errors"); //make tests pass if (dt.Rows.Count == 0) return null; return dt; } } else { _log.Warn("Processing requested variables... Failed!"); return null; } } else { _log.Debug("No variables file specified"); } _log.Debug("Processing requested variables... Done!"); return dt; }