public static BiDataPack GetPack(String packname) { if (!datas.ContainsKey(packname)) { BiDataPack data = DataService.GetAllBiData(packname); datas.Add(packname, data); } return(datas[packname]); }
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(); }
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); }