コード例 #1
0
        public static BiDataPack GetPack(String packname)
        {
            if (!datas.ContainsKey(packname))
            {
                BiDataPack data = DataService.GetAllBiData(packname);
                datas.Add(packname, data);
            }

            return(datas[packname]);
        }
コード例 #2
0
        public static void resetData(string tableName, BiDataPack pack)
        {
            String       line;
            StreamWriter sw = new StreamWriter(datapath + "/" + tableName + ".cfg", false, Encoding.UTF8);

            sw.WriteLine("[header]");
            for (int i = 0; i < pack.headers.Count; ++i)
            {
                line = pack.headers[i] + "\t" + pack.dataTypes[i] + "\t" + pack.dataSizes[i] + "\t" + pack.comment[i];
                sw.WriteLine(line);
            }
            sw.WriteLine();
            sw.WriteLine("[data]");
            //按照key顺序输出
            List <int> key1List = new List <int>();
            Dictionary <int, List <BiData> > key1Map = new Dictionary <int, List <BiData> >();

            foreach (BiData bi in pack.data.Keys)
            {
                if (!key1Map.ContainsKey(bi.a))
                {
                    key1Map.Add(bi.a, new List <BiData>());
                    key1List.Add(bi.a);
                }
                key1Map[bi.a].Add(bi);
            }
            key1List.Sort();
            for (int i = 0; i < key1List.Count; ++i)
            {
                int key1 = key1List[i];
                Dictionary <int, BiData> key2Map = new Dictionary <int, BiData>();
                List <int> key2List = new List <int>();
                foreach (BiData bi in key1Map[key1])
                {
                    key2List.Add(bi.b);
                    key2Map.Add(bi.b, bi);
                }
                key2List.Sort();
                for (int j = 0; j < key2List.Count; ++j)
                {
                    sw.WriteLine(String.Join("\t", pack.data[key2Map[key2List[j]]].ToArray()));
                }
            }
            sw.Close();

            pack.lines.Clear();
            StreamReader sr = new StreamReader(datapath + "/" + tableName + ".cfg", Encoding.UTF8);

            while ((line = sr.ReadLine()) != null)
            {
                pack.lines.Add(line);
            }
            sr.Close();
        }
コード例 #3
0
        public static BiDataPack GetAllBiData(string tableName)
        {
            BiDataPack pack = new BiDataPack(tableName);

            pack.lines.Clear();
            StreamReader sr       = new StreamReader(datapath + "/" + tableName + ".cfg", Encoding.UTF8);
            string       line     = "";
            bool         inHeader = false;
            bool         inData   = false;

            while ((line = sr.ReadLine()) != null)
            {
                pack.lines.Add(line);
                if (line == "[header]")
                {
                    inHeader = true;
                    inData   = false;
                }
                else if (line == "[data]")
                {
                    inHeader = false;
                    inData   = true;
                }
                else if (inHeader)
                {
                    string[] items = line.Split('\t');
                    if (items.Length >= 3)
                    {
                        pack.headers.Add(items[0]);
                        pack.dataTypes.Add(items[1]);
                        pack.dataSizes.Add(int.Parse(items[2]));
                    }
                    if (items.Length >= 4)
                    {
                        pack.comment.Add(items[3]);
                    }
                    else
                    {
                        pack.comment.Add("");
                    }
                }
                else if (inData)
                {
                    string[]      items   = line.Split('\t');
                    List <string> strList = items.ToList();

                    int    keyid = int.Parse(items[0]);
                    BiData dat   = new BiData(int.Parse(items[0]), int.Parse(items[1]));
                    pack.data.Add(dat, new List <string>(items));
                    if (pack.keys.ContainsKey(keyid))
                    {
                        pack.keys[keyid]++;
                    }
                    else
                    {
                        pack.keys.Add(keyid, 1);
                    }
                }
            }
            sr.Close();

            return(pack);
        }