Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        public virtual IThingGraph WrapGraph(IThingGraph thingGraph)
        {
            SchemaFacade.MakeMarkersUnique(thingGraph);

            var schemaGraph = thingGraph;

            if (UseSchema && !(thingGraph is SchemaThingGraph))
            {
                schemaGraph = new SchemaThingGraph(thingGraph);
            }
            return(schemaGraph);
        }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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);
        }
Esempio n. 7
0
        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());
                }
            }
        }
Esempio n. 8
0
 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()));
         }
     }
 }