Esempio n. 1
0
        private static VariableItem CreateVariableItem(XElement varElem, ReaderContext context)
        {
            string id = (string)varElem.Attribute(ATTR_ID);
            if (string.IsNullOrEmpty(id))
            {
                return null;
            }
            string title = (string)varElem.Attribute(ATTR_NAME);
            if (string.IsNullOrEmpty(title))
            {
                return null;
            }
            string representationType = (string)varElem.Attribute(ATTR_REPRESENTATION_TYPE);
            string responseTypeCode = GetTypeFromRepresentationType(representationType);
            if (responseTypeCode == null)
            {
                return null;
            }

            string files = (string)varElem.Attribute(ATTR_FILES);
            if (!string.IsNullOrEmpty(files))
            {
                //データセットのIDを記憶(データセット読み込み時に利用)
                context.DataSetIds[id] = SplitIds(files);
            }

            Variable variable = new Variable();
            variable.Id = id;
            variable.Title = title;
            variable.Label = (string)varElem.Element(cb + TAG_LABL);
            variable.Response.TypeCode = responseTypeCode;

            variable.ConceptId = context.FindConceptIdByVarId(variable.Id);
            Question question =  null;
            if (variable.ConceptId != null)
            {
                //対応するConceptがないとViewModel生成時に例外で落ちる(落ちなくても画面に表示できない)
                question = CreateQuestion(varElem);
                if (question != null)
                {
                    question.ConceptId = variable.ConceptId;
                    variable.QuestionId = question.Id;
                }
            }

            CategorySchemeItem categorySchemeItem = null;
            if (variable.Response.IsTypeChoices)
            {
                categorySchemeItem = CreateCategorySchemeItem(varElem, variable);
            }
            else if (variable.Response.IsTypeNumber)
            {
                SetupRange(varElem, variable.Response);
            }
            else if (variable.Response.IsTypeFree)
            {
                SetupRange(varElem, variable.Response);
            }
            else if (variable.Response.IsTypeDateTime)
            {

            }
            return new VariableItem(variable, question, categorySchemeItem);
        }