public void CompletedThingsDigidocTest() { var thingGraph = new ThingGraph(); var factory = new DigidocSampleFactory(); factory.Graph = thingGraph; factory.Populate(); var graph = new SchemaThingGraph(thingGraph); var expectedDefault = new IThing[] { DigidocSchema.Document, DigidocSchema.DocumentTitle, DigidocSchema.DocumentDefaultLink, DigidocSchema.PageNumber, DigidocSchema.PageDefaultLink, DigidocSchema.DocumentPage, DigidocSchema.HidePagesLink, ViewMetaSchema.Hide, MetaSchema.DescriptionMarker, }; var pageItems = new List <IThing> (); for (int i = 0; i < factory.PageCount; i++) { pageItems.Add(factory.Nodes[factory.PageNodeStart + i * 2]); pageItems.Add(factory.Edges[factory.PageEdgeStart + i * 2]); } Prove( new IThing[] { factory.Nodes[1] }, expectedDefault.Union( new IThing[] { factory.Nodes[1], factory.Nodes[2], factory.Edges[1], }).Union( pageItems ) , graph); Prove( new IThing[] { factory.Nodes[1], factory.Nodes[3], factory.Edges[2] }, expectedDefault.Union( new IThing[] { factory.Nodes[1], factory.Nodes[2], factory.Nodes[3], factory.Nodes[4], factory.Edges[1], factory.Edges[2], factory.Edges[3], }).Union( pageItems ) , graph); }
public virtual IThingGraph WrapGraph(IThingGraph thingGraph) { SchemaFacade.MakeMarkersUnique(thingGraph); var schemaGraph = thingGraph; if (UseSchema && !(thingGraph is SchemaThingGraph)) { schemaGraph = new SchemaThingGraph(thingGraph); } return(schemaGraph); }
/// <summary> /// search for all StringThings where link.Marker == Document && text = null or empty /// get the Title of things /// set text of target to title.text /// remove title /// set rootlinks.where(marker==Document) to marker = CommonSchema.Commonmarker /// </summary> /// <param name="graph"></param> public virtual void CleanWrongDocuments(SchemaThingGraph graph, bool act) { graph.Add(CommonSchema.CommonMarker); var nullStringThings = graph.GetByData((string)null); foreach (var nullStringThing in nullStringThings) { var edges = graph.Edges(nullStringThing).ToArray(); var disp = graph.ThingToDisplay(nullStringThing); if (disp != nullStringThing) { WriteLog("+\t{0}\t[{1}]", nullStringThing.Data ?? "<null>", nullStringThing.Id.ToString("X")); var titleLink = edges.FirstOrDefault(l => l.Marker.Id == DigidocSchema.DocumentTitle.Id); if (titleLink != null && titleLink.Leaf == disp) { WriteLog("\t-\t{0}\t[{1}]", disp.Data ?? "<null>", disp.Id.ToString("X")); if (act) { nullStringThing.Data = disp.Data; graph.Add(nullStringThing); graph.Remove(titleLink); var dispEdges = graph.Edges(disp).ToArray(); foreach (var link in dispEdges) { graph.ChangeEdge(link, nullStringThing, link.Root == disp); graph.Add(link); } graph.Remove(disp); } } var documentLink = edges.FirstOrDefault(l => l.Marker.Id == DigidocSchema.Document.Id); if (documentLink != null) { WriteLog(string.Format("\t<>\t{0}\t{1}", DigidocSchema.Document.Data, CommonSchema.CommonMarker.Data)); if (act) { documentLink.Marker = CommonSchema.CommonMarker; graph.Add(documentLink); } } } else { //if (edges.Count() == 0) // WriteLog("--\t{0}\t[{1}]", disp.Data ?? "<null>", disp.Id.ToString("X")); //else // WriteLog("-\t{0}\t[{1}]", disp.Data ?? "<null>", disp.Id.ToString("X")); } } Flush(graph); }
public void CompletedThingsSimpleTest() { var thingGraph = new ThingGraph(); var factory = new DescriptionSampleFactory(); factory.Graph = thingGraph; factory.Populate(); var graph = new SchemaThingGraph(thingGraph); Prove( new IThing[] { factory.Nodes[1] }, new IThing[] { factory.Nodes[1], factory.Nodes[2], factory.Edges[1], CommonSchema.DescriptionMarker }, graph); }
public void PrepareGraph(SchemaThingGraph graph) { var schema = new CmsSiteSchema(); graph.Initialize(); graph.Hiddens.Add(CommonSchema.SourceMarker.Id); graph.EdgeFilter = (link) => { if (link == null) { return(false); } var idLink = (ILink <long>)link; return(graph.SchemaEdgeFilter(link) && !graph.Hiddens.Contains(idLink.Marker)); }; schema.EnsureDefaultThings(graph); }
public virtual void TestDocumentWithTestData() { IThingGraph thingGraph = new ThingGraph(); var prov = new Limada.IO.Db4oThingGraphIo(); var d = prov.Open(Iori.FromFileName(TestLocations.GraphtestDir + "DocumentTest.limo")); thingGraph = d.Data; this.ReportDetail("**** TestDocumentWithTestData"); var factory = new DigidocSampleFactory(); var digidoc = new DigidocSchema(); var graph = new SchemaThingGraph(thingGraph); Limada.Schemata.Schema.IdentityGraph.ForEach(s => graph.Add(s)); var root = DigidocSchema.DocumentsRoot; var path = TestLocations.BlobSource; var document = digidoc.CreateDocument(graph, path); graph.Add(Factory.CreateEdge(root, document, DigidocSchema.Document)); factory.ReadPagesFromDir(graph, document, path); var docs = graph.Edges(root).Where(l => l.Marker == DigidocSchema.Document).Select(l => l.Leaf); foreach (var doc in docs) { var title = graph.ThingToDisplay(doc); this.ReportDetail(title.ToString()); var pages = graph.Edges(doc).Where(l => l.Marker == DigidocSchema.DocumentPage).Select(l => l.Leaf); foreach (var page in pages) { var number = graph.ThingToDisplay(page); Assert.IsNotNull(number); this.ReportDetail(number.ToString()); } } prov.Flush(d); }
public virtual void TestDocumentWithPages() { this.ReportDetail("**** TestDocumentWithPages"); var factory = new DigidocSampleFactory(); var graph = new SchemaThingGraph(new ThingGraph()); var root = DigidocSchema.DocumentsRoot; factory.CreateDocuments(graph, root, 1); var docs = graph.Edges(root).Where(l => l.Marker == DigidocSchema.Document).Select(l => l.Leaf); foreach (var doc in docs) { var title = graph.ThingToDisplay(doc); this.ReportDetail(title.ToString()); var pages = graph.Edges(doc).Where(l => l.Marker == DigidocSchema.DocumentPage).Select(l => l.Leaf); foreach (var page in pages) { var number = graph.ThingToDisplay(page); Assert.IsNotNull(number); this.ReportDetail(number.ToString()); } } }
public void Open() { if (Current != null) { Trace.WriteLine(string.Format("Provider already opened {0}", Current.Description)); var conn = Current.Data as IGatewayConnection; if (conn != null) { Trace.WriteLine(string.Format("Connection already opened {0}/{1}", conn.Gateway.IsOpen, conn.Gateway.Iori.ToFileName())); } } else { var ioManager = new ThingGraphIoManager { }; var sinkIo = ioManager.GetSinkIO(Iori, IoMode.Read) as ThingGraphIo; try { var sink = sinkIo.Open(Iori); if (sink != null) { Trace.WriteLine(string.Format("DataBase opened {0}", Iori.ToFileName())); Current = sink; var graph = new SchemaThingGraph(Current.Data); PrepareGraph(graph); _thingGraph = graph; } else { throw new Exception("Database not found: " + Iori.ToString()); } } catch (Exception e) { Trace.WriteLine(e.Message); _thingGraph = new ThingGraph(); Trace.WriteLine(string.Format("Empty Graph created {0}", Iori.ToFileName())); } } }