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() }
                }));
            }
        }
Ejemplo n.º 2
0
        /// <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);
        }