Пример #1
0
 public static List <string> ExtractNodeByPrefix(DBC_Row node, string prefix)
 {
     if (node == null || !node.HasFields)
     {
         return(null);
     }
     return(node.SelectFieldsByPrefix(prefix));
 }
Пример #2
0
        public static string[] ExtractStringArray(DBC_Row node, string nodeName, string[] defaultVal)
        {
            List <string> list = ExtractStringList(node, nodeName, defaultVal);

            if (null != list)
            {
                return(list.ToArray());
            }
            else
            {
                return(null);
            }
        }
Пример #3
0
        public static T[] ExtractNumericArray <T>(DBC_Row node, string nodeName, T[] defaultVal)
        {
            List <T> list = ExtractNumericList <T>(node, nodeName, defaultVal);

            if (null != list)
            {
                return(list.ToArray());
            }
            else
            {
                return(null);
            }
        }
Пример #4
0
        public static string ExtractString(DBC_Row node, string nodeName, string defaultVal)
        {
            string result = defaultVal;

            if (node == null || !node.HasFields || node.SelectFieldByName(nodeName) == null)
            {
                return(result);
            }
            string nodeText = node.SelectFieldByName(nodeName);

            if (!String.IsNullOrEmpty(nodeText))
            {
                result = nodeText;
            }
            return(result);
        }
Пример #5
0
        public static List <T> ExtractNumericList <T>(DBC_Row node, string nodeName, T defaultVal, bool isMust)
        {
            List <T> result = new List <T>();

            if (node == null || !node.HasFields || node.SelectFieldByName(nodeName) == null)
            {
                return(result);
            }
            string nodeText = node.SelectFieldByName(nodeName);

            if (!String.IsNullOrEmpty(nodeText))
            {
                result = Converter.ConvertNumericList <T>(nodeText);
            }
            return(result);
        }
Пример #6
0
        /**
         * @brief 返回文本,根据行、列号
         *
         * @param rowIndex
         * @param colIndex
         *
         * @return
         */
        public string GetField(int rowIndex, int colIndex)
        {
            if (rowIndex < 0 || rowIndex >= m_RowNum ||
                colIndex < 0 || colIndex >= m_ColumNum)
            {
                return("");
            }

            DBC_Row dbRow = GetRowByIndex(rowIndex);

            if (dbRow != null)
            {
                return(dbRow.SelectFieldByIndex(colIndex));
            }

            return("");
        }
        public bool CollectDataFromDBC(string file)
        {
            long t1       = TimeUtility.Instance.GetElapsedTimeUs();
            bool result   = true;
            DBC  document = new DBC();

            document.Load(HomePath.Instance.GetAbsolutePath(file));
            long t2 = TimeUtility.Instance.GetElapsedTimeUs();

            long t3 = TimeUtility.Instance.GetElapsedTimeUs();

            for (int index = 0; index < document.RowNum; index++)
            {
                try
                {
                    DBC_Row node = document.GetRowByIndex(index);
                    if (node != null)
                    {
                        TData data = new TData();
                        bool  ret  = data.CollectDataFromDBC(node);
                        if (ret && !m_DataContainer.ContainsKey(data.GetId()))
                        {
                            m_DataContainer.Add(data.GetId(), data);
                        }
                        else
                        {
                            string info = string.Format("DataTempalteMgr.CollectDataFromDBC collectData Row:{0} failed!", index);
                            LogUtil.Error(info);
                            LogUtil.CallStack();
                            result = false;
                        }
                    }
                }
                catch (System.Exception ex)
                {
                    LogUtil.Error("CollectData failed. file:{0} rowIndex:{1}\nException:{2}\n{3}", file, index, ex.Message, ex.StackTrace);
                }
            }
            long t4 = TimeUtility.Instance.GetElapsedTimeUs();

            //LogUtil.Info("text load {0} parse {1}, file {2}", t2 - t1, t4 - t3, file);
            return(result);
        }
Пример #8
0
        public static List <string> ExtractStringList(DBC_Row node, string nodeName, string[] defaultVal)
        {
            List <string> result = new List <string>();

            if (node == null || !node.HasFields)
            {
                return(result);
            }
            string nodeText = node.SelectFieldByName(nodeName);

            if (!String.IsNullOrEmpty(nodeText))
            {
                result = Converter.ConvertStringList(nodeText);
            }
            else if (null != defaultVal)
            {
                result.AddRange(defaultVal);
            }
            return(result);
        }
Пример #9
0
        public static bool ExtractBool(DBC_Row node, string nodeName, bool defaultVal)
        {
            bool result = defaultVal;

            if (node == null || !node.HasFields || node.SelectFieldByName(nodeName) == null)
            {
                return(result);
            }
            string nodeText = node.SelectFieldByName(nodeName);

            if (!String.IsNullOrEmpty(nodeText))
            {
                if (nodeText.Trim().ToLower() == "true" || nodeText.Trim().ToLower() == "1")
                {
                    result = true;
                }
                if (nodeText.Trim().ToLower() == "false" || nodeText.Trim().ToLower() == "0")
                {
                    result = false;
                }
            }
            return(result);
        }
Пример #10
0
        public static T ExtractNumeric <T>(DBC_Row node, string nodeName, T defaultVal)
        {
            T result = defaultVal;

            if (node == null || !node.HasFields || node.SelectFieldByName(nodeName) == null)
            {
                return(result);
            }
            string nodeText = node.SelectFieldByName(nodeName);

            if (!String.IsNullOrEmpty(nodeText))
            {
                try
                {
                    result = (T)Convert.ChangeType(nodeText, typeof(T));
                }
                catch (System.Exception ex)
                {
                    LogUtil.Error("ExtractNumeric {0} {1} Exception:{2}/{3}", nodeName, nodeText, ex.Message, ex.StackTrace);
                    throw;
                }
            }
            return(result);
        }
Пример #11
0
        /**
         * @brief 从文本文件流中读取
         *
         * @param sr
         *
         * @return
         */
        private bool LoadFromStream_Text(StreamReader sr)
        {
            //--------------------------------------------------------------
            //临时变量
            List <string> vRet    = null;
            string        strLine = "";

            //读第一行,标题行
            strLine = sr.ReadLine();
            //读取失败,即认为读取结束
            if (strLine == null)
            {
                return(false);
            }

            vRet = ConvertStringList(strLine, new string[] { "\t" });
            if (vRet == null || vRet.Count == 0)
            {
                return(false);
            }
            m_Header = vRet;

            // 读第二行,类型行
            strLine = sr.ReadLine();
            // 读取失败,即认为读取结束
            if (strLine == null)
            {
                return(false);
            }

            vRet = ConvertStringList(strLine, new string[] { "\t" });
            if (vRet == null || vRet.Count == 0)
            {
                return(false);
            }
            m_Types = vRet;


            //--------------------------------------------------------------
            //初始化
            int nRecordsNum = 0;
            int nFieldsNum  = vRet.Count;

            //--------------------------------------------------------------
            //开始读取
            DBC_Row dbcRow = null;

            do
            {
                vRet   = null;
                dbcRow = null;

                //读取一行
                strLine = sr.ReadLine();
                //读取失败,即认为读取结束
                if (strLine == null)
                {
                    break;
                }

                //是否是注释行
                if (strLine.StartsWith("#"))
                {
                    continue;
                }

                //分解
                vRet = ConvertStringList(strLine, new string[] { "\t" });

                //列数不对
                if (vRet.Count == 0)
                {
                    continue;
                }
                if (vRet.Count != nFieldsNum)
                {
                    //补上空格
                    if (vRet.Count < nFieldsNum)
                    {
                        int nSubNum = nFieldsNum - vRet.Count;
                        for (int i = 0; i < nSubNum; i++)
                        {
                            vRet.Add("");
                        }
                    }
                }

                //第一列不能为空
                if (string.IsNullOrEmpty(vRet[0]))
                {
                    continue;
                }

                dbcRow      = new DBC_Row(this, nRecordsNum);
                dbcRow.Data = vRet;

                m_DataBuf.Add(dbcRow);

                nRecordsNum++;
            } while (true);

            //--------------------------------------------------------
            //生成正式数据库
            m_ColumNum = nFieldsNum;
            m_RowNum   = nRecordsNum;

            //--------------------------------------------------------
            //创建索引
            CreateIndex();

            return(true);
        }
Пример #12
0
 public static T ExtractNumeric <T>(DBC_Row node, string nodeName, T defaultVal, bool isMust)
 {
     return(ExtractNumeric <T>(node, nodeName, defaultVal));
 }
Пример #13
0
 public static bool ExtractBool(DBC_Row node, string nodeName, bool defaultVal, bool isMust)
 {
     return(ExtractBool(node, nodeName, defaultVal));
 }
Пример #14
0
 public static string ExtractString(DBC_Row node, string nodeName, string defaultVal, bool isMust)
 {
     return(ExtractString(node, nodeName, defaultVal));
 }