private void AddNewVersionApp(ReformApp reformApp, AppListItem app, AppProject appProject)
        {
            try
            {
                var appitems = AppStoreUIService.GetAppsFromAppList <AppProject>(appProject.Id);
                foreach (var a in appitems)
                {
                    var versions = RedisService.GetAllSubModelIdsByType <App, AppVersion>(a.Id).ToIdsWithNoPrefix <AppVersion>();

                    if (!versions.Contains(app.versionCode.ToString()))
                    {
                        reformApp.NewVersionCount = AddNewVersionForApp(reformApp.NewVersionCount, app, a);
                    }
                    else
                    {
                        reformApp.DupVersionCount++;
                        LogHelper.WriteInfo(string.Format("Already has version {1} for app name {0}", app.name, app.versionCode), ConsoleColor.DarkYellow);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message + ex.StackTrace);
            }
        }
Exemple #2
0
        public void SetupTagsByCategoryId(QihooAppStoreCompleteApp appItem, AppProject appProject, App app)
        {
            var categoryName = GetCategoryNameById(appItem.CategoryId);

            switch (appItem.CategoryPId)
            {
            case "1":
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_SOFTWARE, appProject.Id);
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_TOT_10_SOFTWARE, appProject.Id);
                break;

            case "2":
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_GAME, appProject.Id);
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_TOT_10_GAMES, appProject.Id);
                break;

            default:
                break;
            }
            AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_LATEST, appProject.Id);
            AppStoreUIService.AddTagForApp(AppConfigKey.TAG_LIVE, app.Id);
            AppStoreUIService.AddTagForApp(AppConfigKey.TAG_VALID, app.Id);
            AppStoreUIService.AddTagForApp(categoryName, app.Id);
            AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_FROM_QIHOO, appProject.Id);
            AppStoreUIService.AddTagForAppProject(categoryName, appProject.Id);
        }
Exemple #3
0
        private Simulation()
        {
            AppProject app = AppProject.GetInstance();
            IShortBranchTreeGenerator graph = new DigraphBuilder();

            graph.buildRoutes();
            if (app.VccToGnd == null)
            {
                this.VccToGndView = graph.getVccToGndBranch();
            }
            else
            {
                this.VccToGndView = app.VccToGnd;
            }
            if (app.GndToCF == null)
            {
                this.CFToGndView = graph.getCFToGndBranch();
            }
            else
            {
                this.CFToGndView = app.GndToCF;
            }
            if (app.VccToCF == null)
            {
                this.CFToVccView = graph.getVccToCFBranch();
            }
            else
            {
                this.CFToVccView = app.VccToCF;
            }
            load();
        }
Exemple #4
0
        private ISet <TNode> getPowedNodes()
        {
            ISet <TNode>  cfs    = new HashSet <TNode>();
            ISet <string> labels = new HashSet <string>();
            Action <INotifyComponentChanged> action = p =>
            {
                labels.Add(p.getHeadNode().Equal);
                if (p.getTailNode() != null)
                {
                    labels.Add(p.getTailNode().Equal);
                }
            };

            addPowedLabels(vccToGndRoutes, action);
            addPowedLabels(cfToGndRoutes, action);
            addPowedLabels(cfToVccRoutes, action);
            AppProject app = AppProject.GetInstance();

            foreach (string label in labels)
            {
                if (label != "GND")
                {
                    var query = app.Equals[label].Where(p => p.PartType.Contains("接口连接器") && p.TNType == TerminalType.Normal);
                    foreach (var nd in query)
                    {
                        cfs.Add(nd);
                    }
                }
            }
            return(cfs);
        }
Exemple #5
0
        private void showRoute()
        {
            IsDoubleClick = false;
            AppProject pro = AppProject.GetInstance();
            TestBranch br  = null;

            if (source.Table.TableName == "地线导通测试")
            {
                br = pro.getGndBranch(SelectedIndex);
            }
            else if (source.Table.TableName == "110V导通测试")
            {
                br = pro.getVccBranch(SelectedIndex);
            }
            else if (source.Table.TableName == "普通导通测试")
            {
                br = pro.getNormalBranch(SelectedIndex);
            }
            else if (source.Table.TableName == "测试回路")
            {
                br = pro.getLoopBranch(SelectedIndex);
            }
            else if (source.Table.TableName == "逻辑测试")
            {
                br = pro.getLogicBranch(SelectedIndex);
            }
            if (br != null)
            {
                List <UIElement> elements = BranchFactory.convertToUIElement(br.Branch);
                Messenger.Default.Send <List <UIElement> >(elements, "ShowBranchPicture");
            }
            Console.WriteLine(source.Table.TableName);
        }
 /// <summary>
 /// 初始化搜索的起点和终点
 /// 并标记所有的Vcc起点
 /// </summary>
 private void init()
 {
     vccNodes = AppProject.GetSetTerminal(p => p.Type == NamesManage.Positive, nodes);
     gndNodes = AppProject.GetSetTerminal(p => p.Type == NamesManage.Negative, nodes);
     nodes.ForEach(p => p.HasIncluded    = false);
     vccNodes.ForEach(p => p.HasIncluded = true);
 }
Exemple #7
0
        public void SetupTags(BaiduAppDetail appItem, AppProject appProject, App app)
        {
            if (!string.IsNullOrEmpty(appItem.Type))
            {
                switch (appItem.Type)
                {
                case "soft":
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_SOFTWARE, appProject.Id);
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_TOT_10_SOFTWARE, appProject.Id);
                    break;

                case "game":
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_GAME, appProject.Id);
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_TOT_10_GAMES, appProject.Id);
                    break;

                default:
                    break;
                }

                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_LATEST, appProject.Id);
                AppStoreUIService.AddTagForAppProject(appItem.CategoryName, appProject.Id);

                AppStoreUIService.AddTagForApp(appItem.CategoryName, app.Id);
                AppStoreUIService.AddTagForApp(AppConfigKey.TAG_LIVE, app.Id);
                AppStoreUIService.AddTagForApp(AppConfigKey.TAG_VALID, app.Id);
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_FROM_BAIDU, appProject.Id);
            }
        }
Exemple #8
0
        public AppProject SetupAppList(AppProject appProject, out App app)
        {
            appProject = new AppProject();
            var appProjectId = RedisService.Add <AppProject>(appProject);

            app = new App();
            var appId = RedisService.Add <App>(app);

            AppSettingsForAppList appSetting = new AppSettingsForAppList()
            {
                Id             = appId,
                CreateDateTime = DateTime.Now
            };

            CustomProperty prop = new CustomProperty()
            {
                Id    = AppConfigKey.OS_ATTR_ID,
                Value = AppConfigKey.OS_ATTR_VALUE
            };

            RedisService.AddCustomPropertyFor <App, CustomProperty>(app.Id, prop);

            var lcdDetails = AppStoreUIService.GetElementDetailList(AppConfigKey.LCD_ATTR_ID);

            foreach (var lcd in lcdDetails)
            {
                SetLCD(app.Id, lcd.Value.ToString());
            }

            AppStoreUIService.SetAppForAppList <AppProject>(appProjectId, appSetting);

            return(appProject);
        }
        /// <summary>
        /// 列表显示所有的等效节点
        /// </summary>
        private void showLabels(string label)
        {
            ISet <TNode> nodes = AppProject.GetInstance().Equals[label];

            Messenger.Default.Send <Tuple <string, DataView> >(
                Tuple.Create <string, DataView>(label, addEqualCollection(nodes, label))
                , "DisplayTestBranch");
        }
Exemple #10
0
        public CFDisplay()
        {
            cfs = new Dictionary <TNode, CFPair>();
            AppProject app = AppProject.GetInstance();

            foreach (TNode node in app.CFNodes)
            {
                cfs[node] = new CFPair(node);
            }
        }
Exemple #11
0
        public App SetupApp(BaiduAppDetail appItem, AppProject appProject, App app)
        {
            var originalApp  = CloneHelper.DeepClone <App>(app);
            var originalApp2 = RedisService.Get <App>(app.Id);

            app.AppNo             = appProject.AppNo;
            app.AppProjectId      = appProject.Id;
            app.UseGreaterVersion = true;
            ClientImageInfo lg = new ClientImageInfo
            {
                BelongsToAppId = app.Id,
                FileUrl        = Path.Combine(LogoDirRoot, GetFileNameFromUri(GetDownloadUrl(appItem.IconUrl))),
                TypeId         = AppConfigKey.CLIENT_IMAGE_TYPE_ID
            };

            RedisService.Add <ClientImageInfo>(lg);
            app.ClientLogos = new List <ClientImageInfo>
            {
                lg
            };

            ImageInfo lg2 = new ImageInfo
            {
                BelongsToAppId = app.Id,
                FileUrl        = Path.Combine(LogoDirRoot, GetFileNameFromUri(GetDownloadUrl(appItem.IconUrl)))
            };

            RedisService.Add <ImageInfo>(lg2);
            app.Logo = lg2;

            app.Name          = appItem.Name;
            app.OrderNumber   = appItem.Score;
            app.DownloadTimes = appItem.Score;
            app.Status        = 1;
            var screenShotlist = GetScreenShotlist(appItem);

            foreach (var s in screenShotlist)
            {
                ImageInfo ss = new ImageInfo
                {
                    BelongsToAppId = app.Id,
                    FileUrl        = Path.Combine(ScreenshotDirRoot, GetFileNameFromUri(GetDownloadUrl(s)))
                };
                RedisService.Add <ImageInfo>(ss);
                app.ScreenShot.Add(ss);
            }
            app.PlatformType = AppConfigKey.PLATFORM_TYPE_ID.ConfigValue().ToInt32();
            app.Summary      = appItem.Summary.Replace("<br/>", string.Empty).Replace("<br>", string.Empty);
            var changeLog = appItem.ChangeLog.Replace("<br/>", string.Empty).Replace("<br>", string.Empty).Replace("NULL", string.Empty);

            app.Summary = string.Format("{0}\r\n{1}", app.Summary, changeLog);
            RedisService.UpdateWithRebuildIndex <App>(originalApp2, app);

            return(app);
        }
 private void alignBranchNode(ISet <ShortBranchNode> expandNodes, BranchView view)
 {
     foreach (ShortBranchNode node in view.LabelToBranch.Values)
     {
         if (node == null)
         {
             continue;
         }
         var filterNodes = expandNodes.Where(p => node.EndName == p.EndName).ToList();
         if (filterNodes.Count == 0 || filterNodes.Count == 1)
         {
             continue;
         }
         double maxWidth = double.MinValue;
         foreach (ShortBranchNode br in filterNodes)
         {
             if (br.Uis[br.Uis.Count - 1].Pos.X > maxWidth)
             {
                 maxWidth = br.Uis[br.Uis.Count - 1].Pos.X;
             }
         }
         foreach (ShortBranchNode br in filterNodes)
         {
             double start = br.Uis[br.Uis.Count - 1].Pos.X;
             TNode  head  = br.Uis[br.Uis.Count - 1].Info.getHeadNode();
             TNode  tail  = br.Uis[br.Uis.Count - 1].Info.getTailNode();
             for (double x = start; x < maxWidth; x++)
             {
                 INotifyComponentChanged info = new ComponentViewModel(Tuple.Create <TNode, TNode>(head, tail), ComponentType.Blank);
                 TNodeUI ui = new TNodeUI(info, false, view.Observer);
                 ui.Pos = new Point(x + 1, br.Uis[br.Uis.Count - 1].Pos.Y);
                 br.Uis.Add(ui);
             }
             moveRight(br.Nodes, maxWidth - start);
         }
         double maxy = filterNodes.Max(p => p.Uis[p.Uis.Count - 1].Pos.Y);
         double miny = filterNodes.Min(p => p.Uis[p.Uis.Count - 1].Pos.Y);
         TNode  tm   = AppProject.GetInstance().Equals[node.EndName].First();
         INotifyComponentChanged _info = new ComponentViewModel(Tuple.Create <TNode, TNode>(tm, null), ComponentType.Blank);
         TNodeUI nui = new TNodeUI(_info, false, view.Observer);
         nui.Pos = new Point(node.Uis[node.Uis.Count - 1].Pos.X + 1, node.Uis[node.Uis.Count - 1].Pos.Y);
         List <TNodeUI> uis = new List <TNodeUI>()
         {
             nui
         };
         ShortBranchNode nnode = new ShortBranchNode(uis, node, node.EndName);
         foreach (ShortBranchNode nd in node.Nodes)
         {
             nnode.Nodes.Add(nd);
         }
         moveRight(node.Nodes, 1);
         node.Nodes.Clear();
         node.Nodes.Add(nnode);
     }
 }
Exemple #13
0
        public JsonResult SaveProject([FromBody] AppProject data)
        {
            //TODO add security tokens

            RequestResult result = new RequestResult();

            //TODO check if data is valid
            HttpContext.Session.Set("AppProjectData", data);

            result.Error = 0;

            return(new JsonResult(result));
        }
Exemple #14
0
        public AppProject SetupAppProject <T>(T appItem, AppProject appProject) where T : QihooAppStoreApp
        {
            var originalAppProject = CloneHelper.DeepClone <AppProject>(appProject);

            appProject.AppNo       = "qh360_" + appItem.Id;
            appProject.Creator     = appItem.Developer;
            appProject.LogoFile    = GetFileNameFromUri(appItem.IconURL);
            appProject.Name        = appItem.Name;
            appProject.PackageName = appItem.PackageName;
            appProject.Rate        = appItem.Rating.ToInt32();
            RedisService.UpdateWithRebuildIndex <AppProject>(originalAppProject, appProject);

            return(appProject);
        }
Exemple #15
0
        private TablikProject LoadProject(string projectCode, string projectSuffix, params string[] modules)
        {
            TestLib.CopyDir("Tablik", projectCode, projectCode + projectSuffix);
            var app    = new App("Constructor", new TestIndicator(), true);
            var proj   = new AppProject(app, TestLib.TestRunDir + @"Tablik\" + projectCode + projectSuffix);
            var tablik = proj.Tablik;

            tablik.LoadAllSignals();
            foreach (var module in modules)
            {
                tablik.AddModule(module);
            }
            return(tablik);
        }
Exemple #16
0
        public AppProject SetupAppProject(BaiduAppDetail appItem, AppProject appProject)
        {
            var originalAppProject = CloneHelper.DeepClone <AppProject>(appProject);

            appProject.AppNo       = "baidu_" + appItem.Id;
            appProject.Creator     = appItem.SourceName;
            appProject.LogoFile    = GetFileNameFromUri(GetDownloadUrl(appItem.IconUrl));
            appProject.Name        = appItem.Name;
            appProject.PackageName = appItem.PackageName;
            //appProject.Rate = appItem.Rating.ToInt32();
            RedisService.UpdateWithRebuildIndex <AppProject>(originalAppProject, appProject);

            return(appProject);
        }
Exemple #17
0
        /// <summary>
        /// 整理出可测的支路
        /// </summary>
        private void loadTestBranch()
        {
            List <LogicCircuit> testBranch = new List <LogicCircuit>();
            AppProject          app        = AppProject.GetInstance();

            foreach (var route in cfToVccRoutes)
            {
                bool needTest = route.Exists(p => p.CptType == ViewModel.ComponentType.ContactOpen);
                if (needTest)
                {
                    testBranch.Add(new LogicCircuit(route, route[route.Count - 1].getHeadNode(), route[0].getHeadNode().Equal));
                }
            }
            foreach (var route in vccToGndRoutes)
            {
                var cpt = route.FirstOrDefault(p => p.CptType == ViewModel.ComponentType.ContactOpen);
                if (cpt != null)
                {
                    int index = route.IndexOf(cpt);
                    for (int i = index + 1; i < route.Count; i++)
                    {
                        TNode cf = app.IsCFEqual(route[i].getHeadNode().Equal);
                        if (cf != null && cf.Equal != "GND")
                        {
                            testBranch.Add(new LogicCircuit(route.GetRange(0, i), cf, route[0].getHeadNode().Equal));
                            break;
                        }
                    }
                }
            }
            foreach (var route in cfToGndRoutes)
            {
                var cpt = route.LastOrDefault(p => p.CptType == ViewModel.ComponentType.ContactOpen);
                if (cpt != null)
                {
                    int index = route.IndexOf(cpt);
                    for (int i = index; i >= 0; i--)
                    {
                        TNode cf = app.IsCFEqual(route[i].getHeadNode().Equal);
                        if (cf != null && cf.Equal != "GND")
                        {
                            testBranch.Add(new LogicCircuit(route.GetRange(i, route.Count - i), cf, route[route.Count - 1].getHeadNode().Equal));
                            break;
                        }
                    }
                }
            }
            this.testBranch = testBranch.AsReadOnly();
        }
 private bool CanPowDown(string label)
 {
     if (string.IsNullOrEmpty(label))
     {
         return(false);
     }
     else
     {
         ISet <string>   pows  = Simulation.getInstance().getPows();
         HashSet <TNode> nodes = (HashSet <TNode>)AppProject.GetInstance().Equals[label];
         return(ModeManager.getAuthority().canOperate() &&
                (label.Equals("DC110V") || nodes.Any(p => p.PartType.StartsWith("接口连接器"))) &&
                pows.Contains(label));
     }
 }
        public void AppUpdate(AppProject appProject)
        {
            var apps = AppStoreUIService.GetAppsFromAppList <AppProject>(appProject.Id);

            if (apps != null)
            {
                foreach (var app in apps)
                {
                    var originalApp = RedisService.Get <TargetApp>(app.Id);
                    originalApp.CategoryId   = "1";
                    originalApp.CategoryName = "游戏";
                    originalApp.NameLowCase  = originalApp.Name.ToLower();
                    RedisService.UpdateWithRebuildIndex <TargetApp>(originalApp, originalApp);
                }
            }
        }
Exemple #20
0
                public static AppProject FromBaseObject(BaseObject baseObj)
                {
                    if (baseObj == null || baseObj.NativeObject == IntPtr.Zero)
                    {
                        return(null);
                    }
                    AppProject obj = baseObj as  AppProject;

                    if (object.Equals(obj, null))
                    {
                        obj = new AppProject(CreatedWhenConstruct.CWC_NotToCreate);
                        obj.BindNativeObject(baseObj.NativeObject, "AppProject");
                        obj.IncreaseCast();
                    }

                    return(obj);
                }
Exemple #21
0
        public AppProject AddNewApp(QihooAppStoreApp appItem, AppProject appProject)
        {
            try
            {
                var app = new App();

                appProject = SetupAppList(appProject, out app);
                appProject = SetupAppProject(appItem, appProject);
                app        = SetupApp(appItem, appProject, app);
                SetupTags(appItem, appProject, app);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message + ex.StackTrace);
                AppProjectDelete(appProject.Id);
                LogHelper.WriteInfo(string.Format("AppProjectId: {0} is delete.", appProject.Id));
            }
            return(appProject);
        }
Exemple #22
0
        public AppProject AddNewApp(BaiduAppDetail appItem, AppProject appProject, string appfileName)
        {
            try
            {
                var app = new App();

                appProject = SetupAppList(appProject, out app);
                appProject = SetupAppProject(appItem, appProject);
                app        = SetupApp(appItem, appProject, app);
                SetupAppVersion(appItem, app, appfileName);
                SetupTags(appItem, appProject, app);
            }
            catch (Exception ex)
            {
                LogHelper.WriteError(ex.Message + ex.StackTrace);
                AppProjectDelete(appProject.Id);
                LogHelper.WriteInfo(string.Format("AppProjectId: {0} is delete.", appProject.Id));
            }
            return(appProject);
        }
Exemple #23
0
        public void SetupTagsByCategoryName(QihooAppStoreApp appItem, AppProject appProject, App app)
        {
            if (!string.IsNullOrEmpty(appItem.CategoryName))
            {
                if (appItem.CategoryName.StartsWith(AppConfigKey.CATEGORY_SOFT_NAME, StringComparison.OrdinalIgnoreCase))
                {
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_SOFTWARE, appProject.Id);
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_TOT_10_SOFTWARE, appProject.Id);
                }
                else
                {
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_GAME, appProject.Id);
                    AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_TOT_10_GAMES, appProject.Id);
                }
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_LATEST, appProject.Id);
                AppStoreUIService.AddTagForAppProject(GetCategoryTagName(appItem.CategoryName), appProject.Id);

                AppStoreUIService.AddTagForApp(GetCategoryTagName(appItem.CategoryName), app.Id);
                AppStoreUIService.AddTagForApp(AppConfigKey.TAG_LIVE, app.Id);
                AppStoreUIService.AddTagForApp(AppConfigKey.TAG_VALID, app.Id);
                AppStoreUIService.AddTagForAppProject(AppConfigKey.TAG_FROM_QIHOO, appProject.Id);
            }
        }
Exemple #24
0
        public JsonResult GetProject()
        {
            RequestResult result = new RequestResult();

            AppProject projectdata = HttpContext.Session.Get <AppProject>("AppProjectData");

            result.Error = 0;
            if (projectdata != null)
            {
                //result.Error = 0;
                result.Data = projectdata;
            }
            else
            {
                result.Data = new AppProject {
                    title = "", description = "", fontColor = "rgba(195, 0, 47, 1)", fontSize10Em = 10
                };
                //result.Error = 1;
                //result.ErrorMessage = "No data found.";
            }

            return(new JsonResult(result));
        }
        /// <summary>
        /// 去除掉已经在VccToGnd中出现过的支路
        /// </summary>
        private ISet <ShortBranchNode> removeRedundentRoute(ISet <ShortBranchNode> nodes, ISet <ShortBranchNode> total)
        {
            List <List <ShortBranchNode> > routes = getAllRoutes(nodes);
            AppProject app = AppProject.GetInstance();

            if (app.VccToGnd == null)
            {
                app.VccToGnd = getVccToGndBranch();
            }
            ISet <ShortBranchNode>         allNodes = expandBranch(app.VccToGnd.Nodes);
            ISet <INotifyComponentChanged> allcpts  = new HashSet <INotifyComponentChanged>();

            foreach (ShortBranchNode brNode in allNodes)
            {
                foreach (TNodeUI nd in brNode.Uis)
                {
                    allcpts.Add(nd.Info);
                }
            }
            List <ShortBranchNode> bans = new List <ShortBranchNode>();

            foreach (List <ShortBranchNode> rt in routes)
            {
                List <INotifyComponentChanged> infos = new List <INotifyComponentChanged>();
                rt.ForEach(p => p.Uis.ForEach(ui => infos.Add(ui.Info)));
                infos.RemoveAt(infos.Count - 1);
                if (infos.All(p =>
                              allcpts.FirstOrDefault(cpt => ComponentViewModel.compare(cpt, p)) != null
                              ))
                {
                    bans.Add(rt[0]);
                    rt.ForEach(p => total.Remove(p));
                }
            }
            bans.ForEach(p => nodes.Remove(p));
            return(nodes);
        }
Exemple #26
0
 internal LauncherProject(AppProject project)
 {
     _project = project;
 }
        public BranchView getCFToGndBranch()
        {
            #region 将树状结构的节点放到一维集合中
            BranchView             rst   = getNodes(gndNodes[0].Equal, label => label == "DC110V");
            ISet <ShortBranchNode> brs   = rst.Nodes;
            ShortBranchNode        head  = brs.First().Parent;
            ISet <ShortBranchNode> total = expandBranch(brs);
            #endregion

            #region 过滤出所有总负到测试点的通路
            AppProject    pro    = AppProject.GetInstance();
            ISet <string> remain = new HashSet <string>();
            foreach (ShortBranchNode node in total)
            {
                if (node.Nodes.Count == 0)
                {
                    bool mark = false;
                    foreach (TNode tnode in pro.Equals[node.EndName])
                    {
                        if (tnode.PartType.StartsWith("接口连接器"))
                        {
                            mark = true;
                            break;
                        }
                    }
                    if (mark)
                    {
                        ShortBranchNode tp = node;
                        while (tp != null)
                        {
                            remain.Add(tp.EndName);
                            tp = tp.Parent;
                        }
                    }
                }
            }
            //先把叶节点中末端是测试点的标注出来
            bool next = true;
            while (next)
            {
                next = false;
                List <ShortBranchNode> temp = new List <ShortBranchNode>();
                foreach (ShortBranchNode node in total)
                {
                    if (node.Nodes.Count == 0)
                    {
                        bool mark = false;
                        foreach (TNode tnode in pro.Equals[node.EndName])
                        {
                            if (tnode.PartType.StartsWith("接口连接器"))
                            {
                                mark = true;
                                if (!node.Uis[node.Uis.Count - 1].Info.isCFNode())
                                {
                                    INotifyComponentChanged info = new ComponentViewModel(Tuple.Create <TNode, TNode>(tnode, null), ComponentType.Terminal);
                                    node.Uis.Add(new TNodeUI(info, false, rst.Observer));
                                }
                                break;
                            }
                        }
                        if (!mark)
                        {
                            if (!remain.Contains(node.EndName))
                            {
                                node.remove();
                                temp.Add(node);
                                next = true;
                            }
                            else
                            {
                                ShortBranchNode tp = node;
                                while (tp != null)
                                {
                                    remain.Add(tp.EndName);
                                    tp = tp.Parent;
                                }
                            }
                        }
                    }
                }
                foreach (ShortBranchNode node in temp)
                {
                    total.Remove(node);
                }
            }
            rst.Nodes = removeRedundentRoute(rst.Nodes, total);//去除冗余的支路
            #endregion

            #region 为短支路树计算位置信息
            ISet <ShortBranchNode> data = new HashSet <ShortBranchNode>(total.Where(p => p.Parent == head).ToList());
            CalculatePosition(data, 0, 0);
            if (rst.Type)
            {
                alignBranchNode(total, rst);
            }
            rst.Nodes = data;
            #endregion
            rst.GraphType = GraphType.CFToGndGraph;
            rst.GraphName = "测试点至总负布线图";
            return(rst);
        }
        /// <summary>
        /// 获得从总正出发,总负截止的所有拼接支路
        /// </summary>
        private BranchView getNodes(string headEqual, Func <string, bool> filter)
        {
            ComponentVMObserver _observer = new ComponentVMObserver();
            AppProject          pro       = AppProject.GetInstance();

            ((List <ShortBranch>)pro.Shorts).ForEach(p => p.HasIncluded = false);
            LinkedList <string> labels = new LinkedList <string>();
            IDictionary <string, ShortBranchNode> allLabels = new Dictionary <string, ShortBranchNode>();

            labels.AddLast(headEqual);

            ShortBranchNode head = new ShortBranchNode(null, null, headEqual);

            allLabels.Add(headEqual, head);

            #region 广度遍历得到短支路的树结构
            while (labels.First != null)
            {
                string label = labels.First.Value;
                labels.RemoveFirst();
                if (filter(label))
                {
                    continue;
                }
                TNodeUI item1 = null, item2 = null;
                foreach (ShortBranch br in pro.Shorts)
                {
                    if (!br.HasIncluded)
                    {
                        if (br.HeadEqualNum == label || br.TailEqualNum == label)
                        {
//                             if (br.HeadEqualNum == "Net203" || br.TailEqualNum == "Net203")
//                             {
//
//                             }
                            List <TNodeUI> uis     = new List <TNodeUI>();
                            List <TNode>   brNodes = br.Branch;
                            if (br.TailEqualNum == label)
                            {
                                brNodes.Reverse();
                            }
                            int i = 0;
                            while (i < brNodes.Count)
                            {
                                TNodeUI ui = null;
                                if (i + 1 < brNodes.Count && brNodes[i].Brother == brNodes[i + 1])
                                {
                                    ui = BranchFactory.convert(brNodes[i], brNodes[i + 1], _observer);
                                    if (i == 0)
                                    {
                                        item2 = ui;
                                    }
                                    uis.Add(ui);
                                    i += 2;
                                }
                                else
                                {
                                    ui = BranchFactory.convert(brNodes[i], null, _observer);
                                    if (i == 0)
                                    {
                                        item2 = ui;
                                    }
                                    uis.Add(ui);
                                    i++;
                                }
                                if (ui != null && item1 == null)
                                {
                                    item1 = ui;
                                }
                            }
                            ShortBranchNode bnode = new ShortBranchNode(uis, allLabels[label], brNodes[brNodes.Count - 1].Equal);
                            allLabels[label].Nodes.Add(bnode);
                            if (!allLabels.ContainsKey(brNodes[brNodes.Count - 1].Equal))
                            {
                                allLabels.Add(brNodes[brNodes.Count - 1].Equal, bnode);
                                labels.AddLast(brNodes[brNodes.Count - 1].Equal);
                            }
                            br.HasIncluded = true;
                        }
                    }
                }
            }
            #endregion

            #region 返回顶节点
//             ISet<ShortBranchNode> branchNodes = new HashSet<ShortBranchNode>();
//             foreach (ShortBranchNode brNode in allLabels.Values)
//             {
//                 if (brNode.Parent == head)
//                     branchNodes.Add(brNode);
//             }
            return(new BranchView(allLabels, head.Nodes, _observer));

            #endregion
        }
 /// <summary>
 /// 建立所有非重复路径
 /// </summary>
 public void buildRoutes()
 {
     nodes = AppProject.GetInstance().Nodes;
     init();
 }
Exemple #30
0
 public void SetupTags(QihooAppStoreCompleteApp appItem, AppProject appProject, App app)
 {
     SetupTagsByCategoryId(appItem, appProject, app);
 }