예제 #1
0
        private void DoImport()
        {
            var exePath  = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
            var dataPath = string.Format("{0}\\Data", exePath);

            var data  = string.Format("{0}\\data.json", dataPath);
            var guide = string.Format("{0}\\guide.txt", dataPath);

            var fi = new FileInfo(guide);

            if (fi.Exists)
            {
                using (var stream = fi.OpenText())
                {
                    var text = stream.ReadToEnd();
                    stream.Close();

                    var lines = text.Split('\n');

                    var nodeRoot = new NodeRoot(eventAgg, this)
                    {
                        Name        = "ROOT",
                        Description = "just help instance..."
                    };
                    NodesExcel = new ObservableCollection <IFulltext>();
                    var masterDataNode = new NodeExcel(eventAgg, nodeRoot, this)
                    {
                        Name = "MasterData"
                    };
                    nodeRoot.Nodes = new ObservableCollection <IFulltext>();
                    nodeRoot.Nodes.Add(masterDataNode);
                    masterDataNode.Nodes = new ObservableCollection <IFulltext>();
                    NodesExcel.Add(masterDataNode);

                    NodeTab tab = null;

                    NodeDbTable dbTable = null;

                    foreach (var l in lines)
                    {
                        if (string.IsNullOrEmpty(l) || string.IsNullOrWhiteSpace(l))
                        {
                            continue;
                        }


                        if (l[0] == '#')
                        {
                            // starting... ->
                            tab = new NodeTab(eventAgg, masterDataNode, this)
                            {
                                Name = l.Substring(1, l.IndexOf('-') - 2), Description = l.Substring(l.IndexOf('-') + 2)
                            };
                            dbTable = new NodeDbTable(eventAgg, tab, this)
                            {
                                Name = l.Substring(1, l.IndexOf('-') - 2).Replace(" ", "")
                            };
                            tab.Nodes = new ObservableCollection <IFulltext>
                            {
                                dbTable
                            };
                            NodesExcel[0].Nodes.Add(tab);
                        }
                        else
                        {
                            var column = new NodeDbColumn(eventAgg, dbTable, this)
                            {
                                Name = (l.Substring(0, l.IndexOf('-') - 1)), Description = l.Substring(l.IndexOf('-') + 2)
                            };
                            if (tab.Nodes[0].Nodes == null)
                            {
                                tab.Nodes[0].Nodes = new ObservableCollection <IFulltext>();
                            }

                            tab.Nodes[0].Nodes.Add(column);
                        }
                    }
                }
            }
        }
예제 #2
0
        //public static List<Sprint> LoadSprints()
        //{
        //    var list = new List<Sprint>();
        //    var exePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
        //    var dataPath = string.Format("{0}\\Data", exePath);

        //    var data = string.Format("{0}\\sprints.json", dataPath);
        //    var fi = new FileInfo(data);

        //    using (var stream = fi.OpenText())
        //    {
        //        var json = stream.ReadToEnd();
        //        var rr = JsonConvert.DeserializeObject<Sprints>(json).List;
        //        list = rr;
        //    }

        //    return list;

        //}

        public static bool Load(ref ObservableCollection <UISprint> sprints, IEventAggregator evAgg, MainViewModel viewModel, DatabaseSchemaViewModel dataViewModel)
        {
            Logger.Logger.Log.Info("Loading sprints...");

            var ret = false;

            //var exePath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetEntryAssembly().Location);
            //var dataPath = string.Format("{0}\\Data", exePath);

            var data = FoldersHelper.DataPath; // string.Format("{0}\\sprints.json", dataPath);
            var di   = new DirectoryInfo(FoldersHelper.DataFolder);

            if (!di.Exists)
            {
                di.Create();
            }

            var fi = new FileInfo(data);

            try
            {
                using (var stream = fi.OpenText())
                {
                    var json = stream.ReadToEnd();
                    var rr   = JsonConvert.DeserializeObject <Sprints>(json);

                    foreach (var s in rr.List)
                    {
                        var nodeRoot = new NodeRoot(evAgg, viewModel);
                        var sprint   = new UISprint(evAgg, sprints, nodeRoot, viewModel, dataViewModel)
                        {
                            Guid = s.Guid, Number = s.Number, Name = s.Name, Version = s.Version
                        };
                        sprint.DbSchemaTables = DbSchemaHelper.ConvertDbSchemaTables(s.DbSchemaTables);
                        sprints.Add(sprint);

                        var result = new ObservableCollection <NodeExcel>();
                        nodeRoot.Nodes = result;
                        if (s.Excels == null)
                        {
                            continue;
                        }
                        foreach (var r in s.Excels)
                        {
                            var ne = new NodeExcel(evAgg, nodeRoot, viewModel)
                            {
                                Name = r.Name, Description = r.Description
                            };
                            result.Add(ne);
                            ne.Nodes = new ObservableCollection <NodeTab>();
                            if (r.Nodes == null)
                            {
                                continue;
                            }
                            foreach (var t in r.Nodes)
                            {
                                var nt = new NodeTab(evAgg, ne, viewModel)
                                {
                                    Name = t.Name, Description = t.Description
                                };
                                ne.Nodes.Add(nt);
                                nt.Nodes = new ObservableCollection <NodeDbTable>();
                                if (t.Nodes == null)
                                {
                                    continue;
                                }
                                foreach (var table in t.Nodes)
                                {
                                    var ntable = new NodeDbTable(evAgg, nt, viewModel)
                                    {
                                        Name = table.Name, Description = table.Description
                                    };
                                    nt.Nodes.Add(ntable);
                                    ntable.Nodes = new ObservableCollection <NodeDbColumn>();
                                    if (table.Nodes == null)
                                    {
                                        continue;
                                    }
                                    foreach (var c in table.Nodes)
                                    {
                                        var nc = new NodeDbColumn(evAgg, ntable, viewModel)
                                        {
                                            Name = c.Name, Description = c.Description
                                        };
                                        ntable.Nodes.Add(nc);
                                    }
                                }
                            }
                        }
                    }
                }
                ret = true;
                Logger.Logger.Log.Info("Loading sprints -> SUCCESS!");
                return(ret);
            }
            catch (Exception ex)
            {
                Logger.Logger.Log.Error("Error loading sprints...", ex);
                ret = false;

                Logger.Logger.Log.Info("Creating sprints ...");

                try
                {
                    using (var s = fi.CreateText())
                    {
                        var sss = "{ \"List\": [ { \"Number\": 0, \"Name\": \"Sprint 0\", \"Version\": \"0.0.0.0\" } ] }";
                        s.Write(sss);
                    }

                    Logger.Logger.Log.Info("Creating sprints -> SUCCESS!");
                    // again ->
                    return(Load(ref sprints, evAgg, viewModel, dataViewModel));
                }
                catch (Exception ex2)
                {
                    Logger.Logger.Log.Error("Error creating sprints data file...", ex2);
                }

                return(ret);
            }
        }