public ActionResult GetFileInformation() { IOUtility iOUtility = new IOUtility(); TaskManager = (TaskManager)Session["TaskManager"]; TaskManager.Current().SetValid(false); GetFileInformationModel model = new GetFileInformationModel(); if (TaskManager.Bus[TaskManager.IS_TEMPLATE].ToString().Equals("true")) { TaskManager.Current().SetValid(true); } if (TaskManager.Bus.ContainsKey(TaskManager.FILE_READER_INFO)) { FileReaderInfo fri = (FileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO]; if (fri is ExcelFileReaderInfo) { ExcelFileReaderInfo efri = (ExcelFileReaderInfo)fri; if (efri.VariablesStartRow == 0) { TaskManager.Current().SetValid(false); model.ErrorList.Add(new Error(ErrorType.Other, "Header is not set.")); } if (efri.DataStartRow == 0) { TaskManager.Current().SetValid(false); model.ErrorList.Add(new Error(ErrorType.Other, "Data is not set.")); } if (model.ErrorList.Count == 0) { TaskManager.Current().SetValid(true); } } else { TaskManager.Current().SetValid(true); } } if (!TaskManager.Current().IsValid()) { model.StepInfo = TaskManager.Current(); model.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); model.FileInfoModel.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); model.ErrorList.Add(new Error(ErrorType.Other, "File Information not saved.")); if (TaskManager.Bus.ContainsKey(TaskManager.FILE_READER_INFO)) { if (iOUtility.IsSupportedAsciiFile(model.Extention)) { model.FileInfoModel = GetFileInfoModel((AsciiFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO], TaskManager.Bus[TaskManager.EXTENTION].ToString()); } if (iOUtility.IsSupportedExcelFile(model.Extention)) { model.FileInfoModel = GetFileInfoModel((ExcelFileReaderInfo)TaskManager.Bus[TaskManager.FILE_READER_INFO], TaskManager.Bus[TaskManager.EXTENTION].ToString()); } } model.FileInfoModel.Extention = TaskManager.Bus[TaskManager.EXTENTION].ToString(); return(PartialView(model)); } else { TaskManager.AddExecutedStep(TaskManager.Current()); TaskManager.GoToNext(); Session["TaskManager"] = TaskManager; ActionInfo actionInfo = TaskManager.Current().GetActionInfo; return(RedirectToAction(actionInfo.ActionName, actionInfo.ControllerName, new RouteValueDictionary { { "area", actionInfo.AreaName }, { "index", TaskManager.GetCurrentStepInfoIndex() } })); } }
/// <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(long datasetId, List <long> primaryKeys, string ext, string filename, string filepath, FileReaderInfo info, long datastructureId) { Hashtable hashtable = new Hashtable(); Hashtable test = new Hashtable(); List <string> testString = new List <string>(); List <string> primaryValuesAsOneString = new List <string>(); int packageSize = 1000; int position = 1; if (ext.Equals(".txt") || ext.Equals(".csv") || ext.Equals(".tsv")) { #region csv do { primaryValuesAsOneString = new List <string>(); using (DataStructureManager datastructureManager = new DataStructureManager()) { StructuredDataStructure sds = datastructureManager.StructuredDataStructureRepo.Get(datastructureId); AsciiFileReaderInfo afri = (AsciiFileReaderInfo)info; AsciiReader reader = new AsciiReader(sds, afri, new IOUtility()); reader.Position = position; Stream stream = reader.Open(filepath); // 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, 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>(); using (DataStructureManager datastructureManager = new DataStructureManager()) { StructuredDataStructure sds = datastructureManager.StructuredDataStructureRepo.Get(datastructureId); ExcelReader reader = new ExcelReader(sds, new ExcelFileReaderInfo()); reader.Position = position; Stream stream = reader.Open(filepath); // 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, 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 (Exception ex) { stream.Close(); return(false); } } } position = reader.Position + 1; stream.Close(); } } while (primaryValuesAsOneString.Count > 0); #endregion } return(true); }