Пример #1
0
        public Group()
        {
            InstanceId = IDUtils.NewGuid();
            Id         = IDUtils.NewGuid();
            this.studyUnitRelPathNames = new List <string>();
            ConceptSchemeCompareTable  = new CompareTable()
            {
                CompareType = CompareTable.CompareTypes.ConceptScheme
            };
            ConceptCompareTable = new CompareTable()
            {
                CompareType = CompareTable.CompareTypes.Concept
            };
            VariableCompareTable = new CompareTable()
            {
                CompareType = CompareTable.CompareTypes.Variable
            };
            PurposeId       = IDUtils.NewGuid();
            ComparisonId    = IDUtils.NewGuid();
            SharedStudyUnit = new StudyUnit(); //Variables to be shared within the group
            SharedStudyUnit.Abstract.Title = SHARED_STUDY_UNIT_TITLE;
            Organization organization = new Organization();
            Member       member       = new Member();

            member.OrganizationId = organization.Id;
            SharedStudyUnit.AddMember(member);
            SharedStudyUnit.AddOrganization(organization);

            SharedStudyUnit.Samplings.Add(new Sampling());
            SharedStudyUnit.Samplings[0].MemberId  = member.Id;
            SharedStudyUnit.Samplings[0].DateRange = new DateRange(DateTime.Today, DateTime.Today);
        }
Пример #2
0
 public CompareFormVM(GroupVM group, CompareTable compareTable)
     : base(group)
 {
     this.groupModel = group.GroupModel;
     this.compareTable = compareTable;
     rows = new ObservableCollection<CompareRowVM>();
 }
Пример #3
0
        public Group()
        {
            InstanceId = IDUtils.NewGuid();
            Id = IDUtils.NewGuid();
            this.studyUnitRelPathNames = new List<string>();
            ConceptSchemeCompareTable = new CompareTable() { CompareType = CompareTable.CompareTypes.ConceptScheme };
            ConceptCompareTable = new CompareTable() { CompareType = CompareTable.CompareTypes.Concept };
            VariableCompareTable = new CompareTable() { CompareType = CompareTable.CompareTypes.Variable };
            PurposeId = IDUtils.NewGuid();
            ComparisonId = IDUtils.NewGuid();
            SharedStudyUnit = new StudyUnit(); //グループ内で共有する変数など
            SharedStudyUnit.Abstract.Title = SHARED_STUDY_UNIT_TITLE;
            Organization organization = new Organization();
            Member member = new Member();
            member.OrganizationId = organization.Id;
            SharedStudyUnit.AddMember(member);
            SharedStudyUnit.AddOrganization(organization);

            SharedStudyUnit.Samplings.Add(new Sampling());
            SharedStudyUnit.Samplings[0].MemberId = member.Id;
            SharedStudyUnit.Samplings[0].DateRange = new DateRange(DateTime.Today, DateTime.Today);
        }
Пример #4
0
        private List<CompareItem> DoCreateCompareItem(GroupVM group, List<StudyUnitVM> studyUnits, CompareTable compareTable)
        {
            //■グループ比較テーブルを見て、CompareLitemの配列を返す。
            //画面で使用するのはCompareRow。この内部はCompareCellの配列を持っている。
            //これをDDI形式で使用するペア形式(CompareItem)の配列に変換する昨日を持つ。
            //
            //■CompareItemに保存されるIDは、
            //CompareTableがConceptSchemeのID、ConceptのID、VariableのIDのどれかになる。
            List<CompareItem> items = new List<CompareItem>();
            foreach (CompareRow row in compareTable.Rows)
            {
                //有効な○のセルをすべて取得して保存する。」
                //有効な○のセルとは「○がセットされてる、かつその列のStudyUnitに行の変数がふくまれているもの」
                //
                // S1にV1が、S2にV2が含まれている場合※の位置に入力された値は無視しないといけない。
                //
                //    S1     S2
                // V1        ※
                // V2 ※

                //○の保存
                List<CompareCell> matchCells = row.MatchValidCells();
                if (matchCells.Count > 1)
                {
                    //比較対象の○が存在しないと保存しない。○の場合次のように同じ行にペアで存在しないとだめ。
                    //     S1    S2
                    // V1  ○    ○

                    //セルに該当する変数を取得する。同じStudyUnitに同じ変数名の変数が存在する可能性があるため
                    //Listで処理する必要がある。
                    List<GroupId> sourceIds = row.RelatedGroupIds(matchCells[0]);
                    for (int i = 1; i < matchCells.Count; i++)
                    {
                        List<GroupId> targetIds = row.RelatedGroupIds(matchCells[i]);
                        foreach (GroupId sourceId in sourceIds)
                        {
                            foreach (GroupId targetId in targetIds)
                            {
                                CompareItem item = CompareItem.CreateMatch(sourceId, targetId, row.Memo);
                                items.Add(item);
                            }
                        }
                    }
                }
                //△の保存
                List<CompareCell> partialMatchCells = row.PartialMatchValidCells();
                foreach (CompareCell targetCell in partialMatchCells)                {
                    List<GroupId> targetIds = row.RelatedGroupIds(targetCell);

                    //△の場合他の行と比較しているので対象の行をみつけないといけない。
                    //それには△(V1)のように選択されている対象の変数をタイトルでみつける
                    //(行はタイトルでユニーク化されているのでひとつだけ見つかるはず)。
                    CompareRow sourceRow = compareTable.FindRowByTitle(targetCell.TargetTitle);
                    //対象行の全ての有効なセルた処理対象。
                    //    S1      S2      S3
                    //V1  △(V2)
                    //V2        △(V1) △(V1)
                    List<CompareCell> validCells = sourceRow.ValidCells();
                    foreach (CompareCell sourceCell in validCells)
                    {
                        List<GroupId> sourceIds = sourceRow.RelatedGroupIds(sourceCell);
                        foreach (GroupId sourceId in sourceIds)
                        {
                            foreach (GroupId targetId in targetIds)
                            {
                                CompareItem item = CompareItem.CreatePartialMatch(sourceId, targetId, row.Memo);
                                items.Add(item);
                            }
                        }
                    }
                }
                //※いまのところ資料にある暗黙の関係性までは保存していない
            }
            return items;
        }