/// <summary> /// test unique of primary keys in a FileStream /// </summary> /// <remarks></remarks> /// <seealso cref=""/> /// <param name="taskManager"></param> /// <param name="datasetId"></param> /// <param name="primaryKeys"></param> /// <param name="ext"></param> /// <param name="filename"></param> /// <returns></returns> public bool IsUnique(TaskManager taskManager, long datasetId, List <long> primaryKeys, string ext, string filename) { Hashtable hashtable = new Hashtable(); Hashtable test = new Hashtable(); List <string> testString = new List <string>(); List <string> primaryValuesAsOneString = new List <string>(); TaskManager TaskManager = taskManager; int packageSize = 1000; int position = 1; if (ext.Equals(".txt") || ext.Equals(".csv")) { #region csv do { primaryValuesAsOneString = new List <string>(); AsciiReader reader = new AsciiReader(); reader.Position = position; Stream stream = reader.Open(TaskManager.Bus["FilePath"].ToString()); AsciiFileReaderInfo afri = (AsciiFileReaderInfo)TaskManager.Bus["FileReaderInfo"]; DataStructureManager datastructureManager = new DataStructureManager(); StructuredDataStructure sds = datastructureManager.StructuredDataStructureRepo.Get(Convert.ToInt64(TaskManager.Bus["DataStructureId"].ToString())); // get a list of values for each row // e.g. // primarky keys id, name // 1 [1][David] // 2 [2][Javad] List <List <string> > tempList = reader.ReadValuesFromFile(stream, filename, afri, sds, datasetId, primaryKeys, packageSize); // convert List of Lists to list of strings // 1 [1][David] = 1David // 2 [2][Javad] = 2Javad foreach (List <string> l in tempList) { string tempString = ""; foreach (string s in l) { tempString += s; } if (!String.IsNullOrEmpty(tempString)) { primaryValuesAsOneString.Add(tempString); } } // add all primary keys pair into the hasttable foreach (string pKey in primaryValuesAsOneString) { if (pKey != "") { try { hashtable.Add(Utility.ComputeKey(pKey), "pKey"); } catch { return(false); } } } position = reader.Position + 1; stream.Close(); } while (primaryValuesAsOneString.Count > 0); #endregion } if (ext.Equals(".xlsm")) { #region excel template do { //reset primaryValuesAsOneString = new List <string>(); ExcelReader reader = new ExcelReader(); reader.Position = position; Stream stream = reader.Open(TaskManager.Bus["FilePath"].ToString()); DataStructureManager datastructureManager = new DataStructureManager(); StructuredDataStructure sds = datastructureManager.StructuredDataStructureRepo.Get(Convert.ToInt64(TaskManager.Bus["DataStructureId"].ToString())); // get a list of values for each row // e.g. // primarky keys id, name // 1 [1][David] // 2 [2][Javad] List <List <string> > tempList = reader.ReadValuesFromFile(stream, filename, sds, datasetId, primaryKeys, packageSize); // convert List of Lists to list of strings // 1 [1][David] = 1David // 2 [2][Javad] = 2Javad foreach (List <string> l in tempList) { string tempString = ""; foreach (string s in l) { tempString += s; } if (!String.IsNullOrEmpty(tempString)) { primaryValuesAsOneString.Add(tempString); } } // add all primary keys pair into the hasttable foreach (string pKey in primaryValuesAsOneString) { if (pKey != "") { try { hashtable.Add(Utility.ComputeKey(pKey), pKey); } catch { stream.Close(); return(false); } } } position = reader.Position + 1; stream.Close(); } while (primaryValuesAsOneString.Count > 0); #endregion } return(true); }