Exemple #1
0
        public SamplingVM(Sampling sampling)
        {
            this.sampling = sampling;
            this.universes = new ObservableCollection<UniverseVM>();
            foreach (Universe universeModel in sampling.Universes)
            {
                UniverseVM universe = new UniverseVM(universeModel);
                universe.Parent = this;
                universes.Add(universe);

            }
            samplingMethods = Options.SamplingMethods;
            modelSyncher = new ModelSyncher<UniverseVM, Universe>(this, universes, sampling.Universes);
        }
Exemple #2
0
 private string SamplingError(string message, Sampling samplingModel)
 {
     return message + "(" + samplingModel.Title + ")";
 }
Exemple #3
0
 public Universe FindUniverse(string universeId)
 {
     return(Sampling.FindUniverse(Samplings, universeId));
 }
Exemple #4
0
 public Universe FindMainUniverse()
 {
     return(Sampling.FindMainUniverse(Samplings));
 }
Exemple #5
0
        public static void CreateSampling(XElement studyUnitElem, StudyUnit studyUnit)
        {
            XElement dataCollectionElem = studyUnitElem.Element(d + TAG_DATA_COLLECTION);
            if (dataCollectionElem == null)
            {
                return;
            }
            string dataCollectionId = (string)dataCollectionElem.Attribute(ATTR_ID);
            if (dataCollectionId == null)
            {
                return;
            }
            XElement methodologyElem = dataCollectionElem.Element(d + TAG_METHODOLOGY);
            if (methodologyElem == null)
            {
                return;
            }
            string methodologyId = (string)methodologyElem.Attribute(ATTR_ID);
            if (methodologyElem == null)
            {
                return;
            }

            List<Sampling> samplingModesl = new List<Sampling>();

            IEnumerable<XElement> collectionEventElems = dataCollectionElem.Elements(d + TAG_COLLECTION_EVENT);
            foreach (XElement collectionEventElem in collectionEventElems)
            {
                Sampling samplingModel = new Sampling();
                samplingModel.DateRange = ReadDateRange(collectionEventElem, d + TAG_DATA_COLLECTION_DATE);
                samplingModel.MemberId = ReadReferenceID(collectionEventElem, d + TAG_DATA_COLLECTOR_ORGANIZATION_REFERENCE);

                XElement modeOfCollection = collectionEventElem.Element(d + TAG_MODE_OF_COLLECTION);
                if (modeOfCollection != null)
                {
                    string content = (string)modeOfCollection.Element(r + TAG_CONTENT);
                    samplingModel.MethodCode = Option.FindCodeByLabel(Options.SamplingMethods, content);
                }

                XElement situationElem = collectionEventElem.Element(d + TAG_COLLECTION_SITUATION);
                if (situationElem != null)
                {
                    samplingModel.Situation = (string)situationElem.Element(r + TAG_CONTENT);
                }
                samplingModesl.Add(samplingModel);
            }
            studyUnit.MethodologyId = methodologyId;
            studyUnit.DataCollectionId = dataCollectionId;

            if (samplingModesl.Count > 0)
            {
                studyUnit.Samplings = samplingModesl;
            }
        }
Exemple #6
0
        private static void CreateSamplings(XElement codebookElem, StudyUnit studyUnit, ReaderContext context)
        {
            XElement stdyDscrElem = codebookElem.Element(cb + TAG_STDY_DSCR);
            if (stdyDscrElem == null)
            {
                return;
            }

            XElement methodElem = stdyDscrElem.Element(cb + TAG_METHOD);
            if (methodElem == null)
            {
                return;
            }

            List<Sampling> samplings = new List<Sampling>();
            IEnumerable<XElement> dataCollElems = methodElem.Elements(cb + TAG_DATA_COLL);
            foreach (XElement dataCollElem in dataCollElems)
            {
                Sampling sampling = new Sampling();
                samplings.Add(sampling);

                //データ収集方法
                string method = (string)dataCollElem.Element(cb + TAG_COLL_MODE);
                sampling.MethodCode = Option.FindCodeByLabel(Options.SamplingMethods, method);
                //データ収集字の状況
                sampling.Situation = (string)dataCollElem.Element(cb + TAG_COLL_SITU);
                //データ収集の責任者
                XElement dataCollectorElem = dataCollElem.Element(cb + TAG_DATA_COLLECTOR);
                if (dataCollectorElem != null)
                {
                    Member newMember = CreateMember(dataCollectorElem, null);
                    Member existMember = Member.FindByName(studyUnit.Members, newMember.LastName, newMember.FirstName);
                    if (existMember != null)
                    {
                        newMember = existMember;
                    }
                    else
                    {
                        CreateOrganization(dataCollectorElem, newMember, studyUnit.Organizations);
                        studyUnit.Members.Add(newMember);
                    }
                    sampling.MemberId = newMember.Id;
                }

                //サンプリング方法の読み込み
                List<string> samplingMethodsPerTab = new List<string>();
                IEnumerable<XElement> sampProcElems = dataCollElem.Elements(cb + TAG_SAMP_PROC);
                foreach (XElement sampProcElem in sampProcElems)
                {
                    samplingMethodsPerTab.Add(sampProcElem.Value);
                }
                //書くタブごとのサンプリング方法を記憶(母集団読み込み時に反映)
                context.SamplingMethods[sampling.Id] = samplingMethodsPerTab;
            }

            //データ収集年月
            XElement stdyInfoElem = stdyDscrElem.Element(cb + TAG_STDY_INFO);
            if (stdyInfoElem != null)
            {
                XElement sumDscrElem = stdyInfoElem.Element(cb + TAG_SUM_DSCR);
                if (sumDscrElem != null)
                {
                    List<DateRange> dateRanges = ReadDateRanges(sumDscrElem.Elements(cb + TAG_COLL_DATE));
                    for (int i = 0; i < samplings.Count && i < dateRanges.Count; i++ )
                    {
                        Sampling sampling = samplings[i];
                        DateRange dateRange = dateRanges[i];
                        if (dateRange != null) //dateRangeは不正な文字列の場合nullになっている場合もありうるのでチェックが必要
                        {
                            sampling.DateRange = dateRange;
                        }
                    }
                }
            }
            if (samplings.Count > 0)
            {
                studyUnit.Samplings = samplings;
            }
        }