Example #1
0
 public static XmlBaseParser Parse(XmlBase define, string nodeName)
 {
     if (define is XmlClass)
     {
         return(new XmlClassParser(define as XmlClass, nodeName));
     }
     else if (define is XmlInt)
     {
         return(new XmlIntParser(define as XmlInt, nodeName));
     }
     else if (define is XmlFloat)
     {
         return(new XmlFloatParser(define as XmlFloat, nodeName));
     }
     else if (define is XmlString)
     {
         return(new XmlStringParser(define as XmlString, nodeName));
     }
     else if (define is XmlBool)
     {
         return(new XmlBoolParser(define as XmlBool, nodeName));
     }
     else if (define is XmlList)
     {
         return(new XmlListParser(define as XmlList, nodeName));
     }
     else
     {
         return(new XmlBaseParser(define, nodeName));
     }
 }
Example #2
0
        static void Main(string[] args)
        {
            string      inputPath  = "../../../XmlBuilderTest/Config/";
            string      outputPath = "../../../XmlBuilderTest/Output/";
            XmlDocument doc        = new XmlDocument();

            string[] files = Directory.GetFiles(inputPath);
            for (int i = 0; i < files.Length; ++i)
            {
                string file = files[i];
                doc.Load(file);

                XmlBase xmlBase = XmlBase.Parse(doc.FirstChild);

                FileInfo fileInfo = new FileInfo(file);
                string   name     = fileInfo.Name;
                name = char.ToUpper(name[0]) + name.Substring(1, name.LastIndexOf(".") - 1);

                string dataContent = xmlBase.ToDefine();
                WriteFile(outputPath + name + "Data.cs", dataContent);

                XmlBaseParser parser        = XmlBaseParser.Parse(xmlBase, "rootNode");
                string        parserContent = parser.ToDefine();
                WriteFile(outputPath + name + "Parser.cs", parserContent);
            }
        }
Example #3
0
        public SectionSave(SectionView view, QuizContext cx)
        {
            View = view;

            View.Tests = new List <TestView>();

            foreach (var item in view.SectionData)
            {
                var question = cx.Questions.Find(item.QuestionId);

                var testSave = new TestView()
                {
                    Quiz     = question.Quiz,
                    Question = question,
                    Model    = XmlBase.Deserialize(question.XmlObject, question.TypeName),
                    Save     = item
                };
                //-----------------Is SectionData count equal Test count?-------------
                View.Tests.Add(testSave);

                var xmlQuestion = XmlBase.Deserialize(question.XmlObject, question.TypeName);

                var answerType = XmlBase.GetType(((IAnswerName)xmlQuestion).GetTypeName());

                var answerInstance = (XmlBase)Activator.CreateInstance(answerType);

                ((IParseAnswer)answerInstance).ParseAnswer(item.Answers);

                Answers.Add(item.QuestionId, answerInstance);
            }
        }
        private string SerializeToCode(XmlBase xmlBase)
        {
            StringBuilder generatedCode = new StringBuilder();

            xmlBase.ToCSharp(generatedCode, 0, null);
            return(generatedCode.ToString().Replace("\r\n", "\n"));
        }
Example #5
0
        public QuestionSave(PerQuestionView view, QuizContext cx)
        {
            View = view;

            var question = cx.Questions.Find(view.Question.Id);

            QuestionId = question.Id;

            View.Test = new TestView()
            {
                Quiz     = question.Quiz,
                Question = question,
                Model    = XmlBase.Deserialize(question.XmlObject, question.TypeName),
                Save     = view.QuestionData
            };

            var xmlQuestion = XmlBase.Deserialize(question.XmlObject, question.TypeName);

            var answerType = XmlBase.GetType(((IAnswerName)xmlQuestion).GetTypeName());

            var answerInstance = (XmlBase)Activator.CreateInstance(answerType);

            ((IParseAnswer)answerInstance).ParseAnswer(view.QuestionData.Answers);

            Answer = answerInstance;
        }
Example #6
0
        /// <summary>
        /// For default initializing
        /// </summary>
        public TestSave(QuizContext context, List <SectionView> sectionViews)
        {
            _cx = context;

            Id = _GenerateId();

            foreach (var item in sectionViews)
            {
                var sectionSave = new SectionSave()
                {
                    View    = item,
                    Answers = new Dictionary <int, XmlModels.XmlBase>()
                };

                foreach (var test in item.Tests)
                {
                    var answerName = ((IAnswerName)test.Model).GetTypeName();

                    var answerInstance = (XmlBase)Activator.CreateInstance(XmlBase.GetType(answerName));

                    sectionSave.Answers.Add(test.Question.Id, answerInstance);
                }

                Saves.Add(item.Section.Id, sectionSave);
            }
        }
        public TestView CreateTestView(Question question)
        {
            var testView = new TestView()
            {
                Quiz     = question.Quiz,
                Question = question,
                Model    = XmlBase.Deserialize(question.XmlObject, question.TypeName)
            };

            return(testView);
        }
Example #8
0
        public ActionResult GetAttepmt(int?id)
        {
            var view = cx.QuizAttempts.Find(id);

            var quiz = cx.Quizzes.Find(view.Quiz.Id);

            var model = new QuizAttempView()
            {
                Attempt  = view,
                Quiz     = quiz,
                Sections = new List <AttempSectionView>()
            };

            var sections = cx.Sections.Where(x => x.Quiz.Id == quiz.Id).ToList();

            foreach (var section in sections)
            {
                var sectionAttemp = new AttempSectionView()
                {
                    Section = section,
                    Tests   = new List <AttempTestView>()
                };

                var answers = view.Answers.Where(x => x.Question != null).
                              Where(y => y.Question.Section.Id == section.Id).
                              OrderBy(z => z.Question.OrderNumber).ToList();

                foreach (var answer in answers)
                {
                    var question = answer.Question;

                    var testAttemp = new AttempTestView()
                    {
                        Question  = question,
                        Answer    = answer,
                        XmlAnswer = XmlBase.Deserialize(answer.XmlObject, answer.TypeName),
                        Model     = XmlBase.Deserialize(question.XmlObject, question.TypeName)
                    };

                    sectionAttemp.Tests.Add(testAttemp);
                }

                if (sectionAttemp.Tests.Count != 0)
                {
                    model.Sections.Add(sectionAttemp);
                }
            }

            ModelState.Clear();

            return(View(model));
        }
        public RedactorView SaveXmlQuestion(RedactorView view)
        {
            var question = cx.Questions.Find(view.Question.Id);

            question.Text      = view.Question.Text;
            question.Value     = view.Question.Value;
            question.TypeName  = view.Model.GetType().Name;
            question.XmlObject = XmlBase.SerializeAbstract(view.Model);

            cx.SaveChanges();

            view.Question = question;
            view.Quiz     = question.Quiz;
            view.Section  = question.Section;

            return(view);
        }
        public List <TestView> CreateTestViews(IEnumerable <Question> questions, Quiz quiz)
        {
            var testViews = new List <TestView>();

            foreach (var question in questions)
            {
                var testView = new TestView()
                {
                    Quiz     = quiz,
                    Question = question,
                    Model    = XmlBase.Deserialize(question.XmlObject, question.TypeName)
                };

                testViews.Add(testView);
            }

            return(testViews);
        }
        public Answer ExamineQuestion(Question question, XmlBase xmlAnswer)
        {
            var answer = new Answer()
            {
                Question  = question,
                XmlObject = XmlBase.SerializeAbstract(xmlAnswer),
            };

            XmlBase questionXml = XmlBase.Deserialize(question.XmlObject, question.TypeName);

            if (((IParseAnswer)xmlAnswer).IsValid())
            {
                answer.Mark = ((IXmlTask)questionXml).Compare(xmlAnswer, question.Value);
            }

            answer.TypeName = ((IAnswerName)questionXml).GetTypeName();

            return(answer);
        }
Example #12
0
        private void ToDefineChildNodes(ref StringBuilder buff, int indent, string listName)
        {
            XmlBase       defItem = m_xmlDef.ListData[0];
            XmlBaseParser parser  = XmlBaseParser.Parse(defItem, "node");

            buff.Append('\t', indent);
            buff.Append("foreach (XmlNode node in ").Append(m_nodeName).AppendLine(".ChildNodes)");
            buff.Append('\t', indent).AppendLine("{");
            {
                buff.Append('\t', indent + 1);
                buff.Append("if (node.NodeType != XmlNodeType.Element)").AppendLine();
                buff.Append('\t', indent + 2).Append("continue;").AppendLine();

                buff.Append('\t', indent + 1);
                buff.Append("var dataItem = ");
                parser.ToMember(ref buff, 0);

                buff.Append('\t', indent + 1);
                buff.Append(listName).AppendLine(".Add(dataItem);");
            }
            buff.Append('\t', indent).AppendLine("}");
        }
Example #13
0
        public TestSave(QuizContext context, List <PerQuestionView> questionViews)
        {
            _cx = context;

            Id = _GenerateId();

            foreach (var item in questionViews)
            {
                var answerName = ((IAnswerName)item.Test.Model).GetTypeName();

                var answerInstance = (XmlBase)Activator.CreateInstance(XmlBase.GetType(answerName));

                var emptySave = new QuestionSave()
                {
                    View       = item,
                    QuestionId = item.Question.Id,
                    Answer     = answerInstance
                };

                QuestionSaves.Add(item.Question.Id, emptySave);
            }

            QuestionOrders = questionViews.Select(x => new
            {
                QuestionId    = x.Question.Id,
                SectionOrder  = x.Question.Section.Order,
                QuestionOrder = x.Question.OrderNumber
            }).ToList().
                             OrderBy(y => y.SectionOrder + "_" + y.QuestionOrder)
                             .ToList().Select(z => z.QuestionId).ToList();

            for (int i = 0; i < QuestionOrders.Count; ++i)
            {
                var item = questionViews.Single(x => x.Question.Id == QuestionOrders[i]);

                item.QuestionOrder = i;
            }
        }
Example #14
0
 public XmlBaseParser(XmlBase xmlBase, string nodeName)
 {
     m_xmlDef   = xmlBase;
     m_nodeName = nodeName;
 }
Example #15
0
 public XmlFieldParser(XmlBase def, string nodeName)
     : base(def, nodeName)
 {
 }
        public ActionResult ChangeQuestion(RedactorContainerView view)
        {
            var question = cx.Questions.Find(view.Question.Id);

            question.Obligation = view.Question.Obligation;

            if (view.Question.OrderNumber != question.OrderNumber)
            {
                var questions = cx.Questions.
                                Where(x => x.Section.Id == view.Section.Id).
                                OrderBy(y => y.OrderNumber).ToList();

                if (view.Question.OrderNumber > questions.Count)
                {
                    view.Question.OrderNumber = questions.Count;
                }

                questions.RemoveAt(question.OrderNumber - 1);

                questions.Insert(view.Question.OrderNumber - 1, question);

                int index = 1;

                foreach (var item in questions)
                {
                    item.OrderNumber = index;

                    ++index;
                }
            }

            question.Difficulty = view.Question.Difficulty;
            question.TimeLimit  = view.Question.TimeLimit;

            if (question.Type != null)
            {
                ViewBag.Change = true;
            }

            if (view.Question.Type != question.Type)
            {
                question.Type     = view.Question.Type;
                question.XmlValue = null;
                question.TypeName = null;
            }

            cx.SaveChanges();

            RedactorView model = null;

            if (view.Question.Type != null)
            {
                model = RedactorView.GetView((QuestionType)view.Question.Type);

                model.Question = question;

                model.Quiz = cx.Quizzes.Find(view.Quiz.Id);

                model.Section = cx.Sections.Find(view.Section.Id);

                if (question.XmlValue != null)
                {
                    model.Model = XmlBase.Deserialize(question.XmlObject, question.TypeName);
                }
            }

            return(PartialView("Redactor", model));
        }