コード例 #1
0
ファイル: UploadWizardHelper.cs プロジェクト: payamad/Core
        /// <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);
        }