/// <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 static 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;
}