public NodeResult(Node node, string course, string text, string datetime) { _Node = node; _Text = text; _Course = course; _DateTime = datetime; }
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; } }
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); }
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); } } }
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; } }
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 }); } }
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; }
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); } } }
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; } } } }
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); } }
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; }
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); } } }
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; }
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(); }
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(); } }
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; } }
protected void CreateFolders(Node newnode) { foreach (Node child in newnode.Nodes) { if (child.IsFolder) { string path = GetNodePath(child.Id); Directory.CreateDirectory(path); CreateFolders(child); } } }
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; } }
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; } }
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); }
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); }
public NodeResult(Node node, String text) { this.node = node; this.text = text; }
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); }