Exemplo n.º 1
0
 public NodeResult(Node node, string course, string text, string datetime)
 {
     _Node = node;
     _Text = text;
     _Course = course;
     _DateTime = datetime;
 }
Exemplo n.º 2
0
        public int? CreateCopy(Node node, int? parentId, int position)
        {
            try
            {
                Node newnode = new Node
                {
                    CourseId = node.CourseId,
                    Name = node.Name,
                    ParentId = parentId,
                    IsFolder = node.IsFolder,
                    Position = position
                };

                CopyNodes(node, newnode);

                db.Nodes.InsertOnSubmit(newnode);
                db.SubmitChanges();

                if (newnode.IsFolder)
                {
                    string path = GetNodePath(newnode.Id);
                    @Directory.CreateDirectory(path);
                }

                return newnode.Id;
            }
            catch
            {
                return null;
            }
        }
Exemplo n.º 3
0
        public void ProcessNode(IndexWriter writer, Node node)
        {
            Document document = new Document();
            document.Add(new Field("Type", "Node", Field.Store.YES, Field.Index.NO));
            document.Add(new Field("ID", node.Id.ToString(), Field.Store.YES, Field.Index.NO));
            document.Add(new Field("Name", node.Name, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            document.Add(new Field("CourseID", node.CourseId.ToString(), Field.Store.YES, Field.Index.ANALYZED));
            document.Add(new Field("isFolder", node.IsFolder.ToString(), Field.Store.YES, Field.Index.ANALYZED));

            if (node.IsFolder)
            {

                List<Node> nodes = _CourseService.GetNodes(node.CourseId, node.Id).ToList();

                foreach (Node childNode in nodes)
                {
                    ProcessNode(writer, childNode);
                }
            }
            else
            {
                var content = _CourseService.GetNodeContents(node.Id);

                document.Add(new Field("Content", content, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            }
            
            writer.AddDocument(document);
        }
Exemplo n.º 4
0
        protected void ProcessResource(Node node, Resource resource)
        {
            var nodePath = _CourseStorage.GetNodePath(node.Id);
            var coursePath = _CourseStorage.GetCoursePath(node.CourseId);

            File.Copy(Path.Combine(_CourseTempPath, resource.Href), nodePath + ".html", true);

            foreach (var file in resource.Files)
            {
                if (file.Href != resource.Href)
                {
                    File.Copy(Path.Combine(_CourseTempPath, file.Href), Path.Combine(coursePath, file.Href));
                }
            }

            foreach (var dependency in resource.Dependencies)
            {
                var depResource = _Manifest.Resources._Resources.Where(r => r.Identifier == dependency.IdentifierRef).FirstOrDefault();

                if (depResource != null)
                {
                    _Manifest.Resources._Resources.Remove(depResource);

                    ProcessDependencyResource(node, depResource);
                }
            }
        }
Exemplo n.º 5
0
        public int? AddNode(Node node)
        {
            try
            {
                db.Nodes.InsertOnSubmit(node);
                db.SubmitChanges();

                if (node.IsFolder)
                {
                    string path = GetNodePath(node.Id);
                    @Directory.CreateDirectory(path);
                }

                return node.Id;
            }
            catch
            {
                return null;
            }
        }
Exemplo n.º 6
0
        public JsonResult Create(Node node)
        {
            try
            {
                node.CourseId = _CurrentCourse.Id;

                var id = _Storage.AddNode(node);

                if (id != null)
                {
                    return Json(new { status = true, id = node.Id });
                }
                else
                {
                    return Json(new { status = false });
                }
            }
            catch
            {
                return Json(new { status = false });
            }
        }
Exemplo n.º 7
0
        public int? AddNode(Node node)
        {
            var db = GetDbContext();

            if (node.Sequencing == null)
            {
                var xs = new XmlSerializer(typeof (Sequencing));
                node.Sequencing = xs.SerializeToXElemet(new Sequencing());
            }

            db.Nodes.InsertOnSubmit(node);
            db.SubmitChanges();

            if (!node.IsFolder)
            {
                var template = Path.Combine(GetTemplatesPath(), "iudico.html");

                File.Copy(template, GetNodePath(node.Id) + ".html", true);
            }

            return node.Id;
        }
Exemplo n.º 8
0
        protected void ProcessDependencyResource(Node node, Resource resource)
        {
            foreach (var file in resource.Files)
            {
                if (!File.Exists(Path.Combine(_CoursePath, file.Href)))
                {
                    File.Copy(Path.Combine(_CourseTempPath, file.Href), Path.Combine(_CoursePath, file.Href));
                }
            }

            foreach (var dependency in resource.Dependencies)
            {
                var depResource = _Manifest.Resources._Resources.Where(r => r.Identifier == dependency.IdentifierRef).FirstOrDefault();

                if (depResource != null)
                {
                    _Manifest.Resources._Resources.Remove(depResource);

                    ProcessDependencyResource(node, depResource);
                }
            }
        }
Exemplo n.º 9
0
        protected void ProcessItem(Item item, Node parent)
        {
            var xml = new XmlSerializer(typeof(Sequencing));

            var node = new Node
            {
                CourseId = _Course.Id,
                Name = item.Title,
                IsFolder = item.IsParent,
                ParentId = (parent != null ? (int?)parent.Id : null),
                Sequencing = item.Sequencing.ToString() // TODO: check if correct
            };

            _CourseStorage.AddNode(node);

            if (item.IsParent && item.Items.Count > 0)
            {
                foreach (var subitem in item.Items)
                {
                    ProcessItem(subitem, node);
                }
            }
            else
            {   
                if (item.IdentifierRef != null)
                {
                    var resource = _Manifest.Resources._Resources.Where(r => r.Identifier == item.IdentifierRef).FirstOrDefault();

                    if (resource != null)
                    {
                        ProcessResource(node, resource);

                        return;
                    }
                }
            }
        }
Exemplo n.º 10
0
        protected void CreateFolders(Node newnode)
        {
            foreach (var child in newnode.Nodes)
            {
                if (!child.IsFolder)
                {
                    continue;
                }

                var path = GetNodePath(child.Id);
                Directory.CreateDirectory(path);

                CreateFolders(child);
            }
        }
Exemplo n.º 11
0
        public int CreateCopy(Node node, int? parentId, int position)
        {
            var db = GetDbContext();

            var newnode = new Node
                              {
                                  CourseId = node.CourseId,
                                  Name = node.Name,
                                  ParentId = parentId,
                                  IsFolder = node.IsFolder,
                                  Position = position
                              };

            CopyNodes(node, newnode);

            db.Nodes.InsertOnSubmit(newnode);
            db.SubmitChanges();

            return newnode.Id;
        }
Exemplo n.º 12
0
        protected void CopyNodes(Node node, Node newnode)
        {
            foreach (var child in node.Nodes)
            {
                var newchild = new Node
                {
                    CourseId = child.CourseId,
                    Name = child.Name,
                    IsFolder = child.IsFolder,
                };

                newnode.Nodes.Add(newchild);

                if (child.Nodes.Count > 0)
                {
                    CopyNodes(child, newchild);
                }
            }
        }
Exemplo n.º 13
0
        private Item AddSubItems(Item parentItem, Node parentNode, int courseId, ManifestManager helper, ref Manifest manifest)
        {
            var nodes = parentNode == null ? GetNodes(courseId) : GetNodes(courseId, parentNode.Id);
            
            foreach (var node in nodes)
            {
                if (node.IsFolder)
                {
                    var item = helper.CreateItem();
                    item.Title = node.Name;

                    if (node.Sequencing != null)
                    {
                        var xml = new XmlSerializer(typeof (Sequencing));
                        item.Sequencing = (Sequencing) xml.DeserializeXElement(node.Sequencing);
                    }

                    item = AddSubItems(item, node, courseId, helper, ref manifest);

                    parentItem = ManifestManager.AddItem(parentItem, item);
                }
                else
                {
                    var files = new List<ManifestModels.ResourceModels.File>();
                    files.Add(new ManifestModels.ResourceModels.File(node.Id + ".html"));

                    var resource = helper.CreateResource(ScormType.SCO, files, new[] { _ResourceIdForTemplateFiles });
                    resource.Href = node.Id + ".html";

                    manifest.Resources = ManifestManager.AddResource(manifest.Resources, resource);
                 
                    var item = helper.CreateItem(resource.Identifier);
                    item.Title = node.Name;

                    if (node.Sequencing != null)
                    {
                        var xml = new XmlSerializer(typeof(Sequencing));
                        item.Sequencing = (Sequencing)xml.DeserializeXElement(node.Sequencing);
                    }

                    parentItem = ManifestManager.AddItem(parentItem, item);
                }
            }
            return parentItem;
        }
Exemplo n.º 14
0
        public void UpdateNode(int id, Node node)
        {
            var db = GetDbContext();

            var oldNode = db.Nodes.SingleOrDefault(n => n.Id == id);

            oldNode.Name = node.Name;
            oldNode.ParentId = node.ParentId;
            oldNode.Position = node.Position;
            oldNode.Sequencing = node.Sequencing;

            db.SubmitChanges();
        }
Exemplo n.º 15
0
        public void UpdateNode(int id, Node node)
        {
            using (var db = new CourseManagementDbConext())
            {
                var oldNode = db.Nodes.SingleOrDefault(n => n.Id == id);

                oldNode.Name = node.Name;
                oldNode.ParentId = node.ParentId;
                oldNode.Position = node.Position;
                oldNode.Sequencing = node.Sequencing;

                db.SaveChanges();
            }
        }
Exemplo n.º 16
0
        public int? AddNode(Node node)
        {
            using (var db = new CourseManagementDbConext())
            {
                if (node.Sequencing == null)
                {
                    var sw = new StringWriter();
                    var xs = new XmlSerializer(typeof(Sequencing));
                    xs.Serialize(sw, new Sequencing());
                    node.Sequencing = sw.ToString();
                }

                db.Nodes.Add(node);
                db.SaveChanges();

                if (!node.IsFolder)
                {
                    var template = Path.Combine(GetTemplatesPath(), "iudico.html");

                    File.Copy(template, GetNodePath(node.Id) + ".html", true);
                }

                return node.Id;
            }
        }
Exemplo n.º 17
0
        protected void CreateFolders(Node newnode)
        {
            foreach (Node child in newnode.Nodes)
            {
                if (child.IsFolder)
                {
                    string path = GetNodePath(child.Id);
                    Directory.CreateDirectory(path);

                    CreateFolders(child);
                }
            }
        }
Exemplo n.º 18
0
        public int CreateCopy(Node node, int? parentId, int position)
        {
            using (var db = new CourseManagementDbConext())
            {
                var newnode = new Node
                                  {
                                      CourseId = node.CourseId,
                                      Name = node.Name,
                                      ParentId = parentId,
                                      IsFolder = node.IsFolder,
                                      Position = position
                                  };

                CopyNodes(node, newnode);

                db.Nodes.Add(newnode);
                db.SaveChanges();

                return newnode.Id;
            }
        }
Exemplo n.º 19
0
        public bool UpdateNode(int id, Node node)
        {
            try
            {
                Node oldNode = db.Nodes.SingleOrDefault(n => n.Id == id);

                oldNode.Name = node.Name;
                oldNode.ParentId = node.ParentId;
                oldNode.Position = node.Position;

                db.SubmitChanges();

                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
Exemplo n.º 20
0
        public ActionResult Search(String query)
        {
            Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("~/Data/Index")));
            IndexSearcher searcher = new IndexSearcher(directory, true);
            Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);

            MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
                    Version.LUCENE_29,
                    new String[] { "Name", "Content" },
                    analyzer
                );

            ScoreDoc[] scoreDocs = searcher.Search(queryParser.Parse(query), 10).scoreDocs;
            List<ISearchResult> results = new List<ISearchResult>();

            foreach (ScoreDoc doc in scoreDocs)
            {
                ISearchResult result;
                Document document = searcher.Doc(doc.doc);
                String type = document.Get("Type").ToLower();

                switch (type)
                {
                    case "node":
                        Node node = new Node();
                        node.Id = Convert.ToInt32(document.Get("ID"));
                        node.Name = document.Get("Name");
                        node.CourseId = Convert.ToInt32(document.Get("CourseID"));
                        node.IsFolder = Convert.ToBoolean(document.Get("isFolder"));

                        result = new NodeResult(node, document.Get("Content"));

                        break;

                    case "course":

                        Course course = new Course();
                        course.Id = Convert.ToInt32(document.Get("ID"));
                        course.Name = document.Get("Name");

                        result = new CourseResult(course);

                        break;

                    default:
                        throw new Exception("Unknown result type");
                }

                results.Add(result);
            }

            analyzer.Close();
            searcher.Close();
            directory.Close();

            ViewData["SearchString"] = query;

            return View(results);
        }
Exemplo n.º 21
0
        public ActionResult Search(String query)
        {
            if (query == "")
                return RedirectToAction("Index");

            query = query + "~";

            DateTime datastart = DateTime.Now;
            Directory directory = FSDirectory.Open(new System.IO.DirectoryInfo(Server.MapPath("~/Data/Index")));
            IndexSearcher searcher = new IndexSearcher(directory, true);
            Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);

            MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
                    Version.LUCENE_29,
                    new String[] { "Name", "Content", "Curriculum", "User", "Group", "Theme" },
                    analyzer
                );


            ScoreDoc[] scoreDocs = searcher.Search(queryParser.Parse(query), 100).scoreDocs;

            Hits hit = searcher.Search(queryParser.Parse(query));
            int total = hit.Length();



            List<ISearchResult> results = new List<ISearchResult>();
            Stopwatch sw = new Stopwatch();

            sw.Start();
            foreach (ScoreDoc doc in scoreDocs)
            {
                ISearchResult result;
                Document document = searcher.Doc(doc.doc);
                String type = document.Get("Type").ToLower();

                switch (type)
                {
                    case "node":
                        Node node = new Node();
                        node.Id = Convert.ToInt32(document.Get("ID"));
                        node.Name = document.Get("Name");
                        node.CourseId = Convert.ToInt32(document.Get("CourseID"));
                        node.IsFolder = Convert.ToBoolean(document.Get("isFolder"));

                        result = new NodeResult(node, _CourseService.GetCourse(node.CourseId).Name, document.Get("Content"), _CourseService.GetCourse(node.CourseId).Updated.ToString());

                        break;

                    case "course":

                        Course course = new Course();
                        course.Id = Convert.ToInt32(document.Get("ID"));
                        course.Name = document.Get("Name");

                        result = new CourseResult(course,_CourseService.GetCourse(course.Id).Updated.ToString(), _CourseService.GetCourse(course.Id).Owner);

                        break;
                    case "curriculum":

                        Curriculum curriculum = new Curriculum();
                        curriculum.Id = Convert.ToInt32(document.Get("ID"));
                        curriculum.Name = document.Get("Curriculum");

                        result = new CurriculumResult(curriculum, _CurriculmService.GetCurriculum(curriculum.Id).Updated.ToString());

                        break;

                    case "user":

                        User user = new User();
                        user.Id = Guid.Parse(document.Get("ID"));
                        user.Name = document.Get("User");
                        /*user.RoleId = Convert.ToInt32(document.Get("RoleId"));*/

                        result = new UserResult(user, user.RolesLine);

                        break;

                    case "group":

                        Group group = new Group();
                        group.Id = int.Parse(document.Get("ID"));
                        group.Name = document.Get("Group");

                        result = new GroupResult(group);

                        break;

                    case "theme":

                        Theme theme = new Theme();
                        theme.Id = Convert.ToInt32(document.Get("ID"));
                        theme.Name = document.Get("Theme");
                        theme.CourseRef = Convert.ToInt32(document.Get("CourseRef"));

                        result = new ThemeResult(theme, _CourseService.GetCourse(theme.CourseRef).Name);

                        break;

                    default:
                        throw new Exception("Unknown result type");
                }

                results.Add(result);
            }
            sw.Stop();

            DateTime dataend = DateTime.Now;
            analyzer.Close();
            searcher.Close();
            directory.Close();

            ViewData["SearchString"] = query;
            ViewData["score"] = Math.Abs(dataend.Millisecond - datastart.Millisecond); //sw.ElapsedMilliseconds.ToString();
            ViewData["total"] = total;

            return View(results);
        }
Exemplo n.º 22
0
 public NodeResult(Node node, String text)
 {
     this.node = node;
     this.text = text;
 }
Exemplo n.º 23
0
        public void ProcessNode(IndexWriter writer, Node node)
        {
            Document document = new Document();
            document.Add(new Field("Type", "Node", Field.Store.YES, Field.Index.NO));
            document.Add(new Field("ID", node.Id.ToString(), Field.Store.YES, Field.Index.NO));
            document.Add(new Field("Name", node.Name, Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            document.Add(new Field("CourseID", node.CourseId.ToString(), Field.Store.YES, Field.Index.ANALYZED));
            document.Add(new Field("isFolder", node.IsFolder.ToString(), Field.Store.YES, Field.Index.ANALYZED));

            if (node.IsFolder)
            {
                GetNodesMessage message = new GetNodesMessage { Input = new GetNodesInput {CourseId = node.CourseId, ParentId = node.Id} };
                MvcContrib.Bus.Send(message);

                List<Node> nodes = (message.Result.Data as List<Node>);

                foreach (Node childNode in nodes)
                {
                    ProcessNode(writer, childNode);
                }
            }
            else
            {
                GetNodeContentsMessage message = new GetNodeContentsMessage { Input = node.Id };
                MvcContrib.Bus.Send(message);

                document.Add(new Field("Content", (message.Result.Data as string), Field.Store.YES, Field.Index.ANALYZED, Field.TermVector.YES));
            }

            writer.AddDocument(document);
        }