コード例 #1
0
        public static bool GetDataFromExcelFileSimple(string inputFile, out List <TermObj> lstTermObjs, out string msg)
        {
            // term guid not imported
            // terms flat in file, no heirarchy
            // can only import terms flat, and term labels for the imported term
            msg         = "";
            lstTermObjs = new List <TermObj>();

            try
            {
                using (ExcelPackage package = new ExcelPackage(new FileInfo(inputFile)))
                {
                    // get the first worksheet in the workbook
                    ExcelWorksheet worksheet = package.Workbook.Worksheets[1];

                    var loop = true;
                    int i    = 0;
                    while (loop)
                    {
                        i++;

                        // get first cell, being termname
                        var firstCell = worksheet.Cells[i, 1].Value.SafeTrim();

                        if (firstCell.IsNull())
                        {
                            loop = false;
                        }
                        else
                        {
                            var  termName = "";
                            Guid termId;
                            var  labels = new List <string>();
                            int  j;

                            if (GenUtil.IsGuid(firstCell))
                            {
                                j        = 3;
                                termId   = GenUtil.SafeToGuid(firstCell).Value;
                                termName = worksheet.Cells[i, 2].Value.SafeTrim();
                            }
                            else
                            {
                                j        = 2;
                                termId   = Guid.NewGuid();
                                termName = firstCell;
                            }

                            // make sure termname was found
                            if (!termName.IsNull())
                            {
                                // get labels (optional)
                                while (true)
                                {
                                    var cellj = worksheet.Cells[i, j].Value.SafeTrim();

                                    if (cellj.IsNull())
                                    {
                                        break;
                                    }
                                    else
                                    {
                                        labels.Add(cellj);
                                    }

                                    j++;
                                }

                                labels.RemoveAll(x => x.Trim().ToLower() == termName.Trim().ToLower());

                                lstTermObjs.Add(new TermObj()
                                {
                                    termId   = termId,
                                    termName = termName,
                                    labels   = labels
                                });
                            }
                        }
                    } // while
                }     // using
            }
            catch (Exception ex)
            {
                msg = ex.ToString();
            }

            return(msg == "");
        }
コード例 #2
0
        public static bool GetDataFromTextFileSimple(string sep, string importTermsPasteBox, string inputTextFile, out List <TermObj> lstTermObjs, out string msg)
        {
            // term guid not imported
            // terms flat in file, no heirarchy
            // can only import terms flat, and term labels for the imported term
            msg         = "";
            lstTermObjs = new List <TermObj>();
            var fileText = "";

            try
            {
                if (!importTermsPasteBox.IsNull())
                {
                    fileText = importTermsPasteBox.Trim();
                }
                else
                {
                    fileText = System.IO.File.ReadAllText(inputTextFile);
                }

                fileText = GenUtil.NormalizeEol(fileText);
                var lines = fileText.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries).Distinct().ToList();

                foreach (var line in lines)
                {
                    // extract termname and optional labels
                    var termId   = Guid.NewGuid();
                    var termName = "";
                    var labels   = new List <string>();

                    if (line.Contains(sep))
                    {
                        var parts = line.Split(new string[] { sep }, StringSplitOptions.RemoveEmptyEntries).Distinct();

                        if (GenUtil.IsGuid(parts.ElementAt(0)))
                        {
                            // guid is first item, termname must be second (thus 2 item minimum)
                            if (parts.Count() >= 2)
                            {
                                termId   = GenUtil.SafeToGuid(parts.ElementAt(0)).Value;
                                termName = parts.ElementAt(1).Trim();
                                labels   = parts.Skip(2).Where(x => x.Trim().Length > 0).Select(x => x.Trim()).Distinct().ToList();
                            }
                            else
                            {
                                // termname not found, don't import this line
                                termName = "";
                            }
                        }
                        else
                        {
                            termName = parts.ElementAt(0).Trim();
                            labels   = parts.Skip(1).Where(x => x.Trim().Length > 0).Select(x => x.Trim()).Distinct().ToList();
                        }

                        labels.RemoveAll(x => x.Trim().ToLower() == termName.Trim().ToLower());
                    }
                    else
                    {
                        termName = line.Trim();
                    }

                    if (!termName.IsNull())
                    {
                        lstTermObjs.Add(new TermObj()
                        {
                            termId   = termId,
                            termName = termName,
                            labels   = labels
                        });
                    }
                }
            }
            catch (Exception ex)
            {
                msg = ex.ToString();
            }

            return(msg == "");
        }
コード例 #3
0
        private static void GetDataAdvWorker(string sep, List <TermObjAdv> lstTermObjs, List <string> lines)
        {
            foreach (var line in lines)
            {
                var termParts = line.Split(new string[] { sep }, StringSplitOptions.RemoveEmptyEntries).AsEnumerable();

                int i       = 0;
                var curPath = "";

                foreach (var termPart in termParts)
                {
                    var curTermPart = termPart;

                    if (curTermPart.IsNull())
                    {
                        continue;
                    }

                    // breakup termpart into [guid]|name|[label0]|[label1]...
                    var termObj  = new TermObjAdv();
                    var termId   = Guid.NewGuid();
                    var termName = curTermPart.Trim();

                    var termSubParts = curTermPart.Split(new string[] { "|" }, StringSplitOptions.RemoveEmptyEntries).AsEnumerable();

                    if (termSubParts.Count() > 1)
                    {
                        int jStart = 0;

                        if (GenUtil.IsGuid(termSubParts.ElementAt(0)))
                        {
                            termId   = Guid.Parse(termSubParts.ElementAt(0).Trim());
                            termName = termSubParts.ElementAt(1).Trim();
                            jStart   = 2;
                        }
                        else
                        {
                            termName = termSubParts.ElementAt(0).Trim();
                            jStart   = 1;
                        }

                        for (int j = jStart; j < termSubParts.Count(); j++)
                        {
                            if (!termSubParts.ElementAt(j).IsNull())
                            {
                                termObj.labels.Add(termSubParts.ElementAt(j).SafeTrim());
                            }
                        }
                    }

                    // fix termname, extract reuse keyword
                    if (termName.ToLower().StartsWith("#reuse") || termName.ToLower().StartsWith("$reuse"))
                    {
                        termObj.isreused    = true;
                        termObj.reusebranch = termName.StartsWith("#reuseall") || termName.StartsWith("$reuseall");

                        termName = Regex.Replace(termName, Regex.Escape("#reuseall"), "", RegexOptions.IgnoreCase);
                        termName = Regex.Replace(termName, Regex.Escape("#reuse"), "", RegexOptions.IgnoreCase);
                        termName = Regex.Replace(termName, Regex.Escape("$reuseall"), "", RegexOptions.IgnoreCase);
                        termName = Regex.Replace(termName, Regex.Escape("$reuse"), "", RegexOptions.IgnoreCase);
                    }

                    // trim labels to unique list
                    termObj.labels = termObj.labels.Distinct().ToList();
                    // remove termname from labels
                    termObj.labels.RemoveAll(x => x.ToLower() == termName.ToLower());

                    curPath += termName + ";";

                    termObj.id       = termId;
                    termObj.termName = termName;
                    termObj.level    = i;
                    termObj.path     = curPath.TrimEnd(";".ToCharArray());

                    // add unique term paths only
                    if (!lstTermObjs.Any(x => x.path.ToLower() == termObj.path.ToLower()))
                    {
                        lstTermObjs.Add(termObj);
                    }

                    i++;
                } // foreach
            }     // foreach
        }