コード例 #1
0
ファイル: IndexBrowser.cs プロジェクト: radtek/BackO
        internal static BrowseNode Browse(long taskId, string fileSystem, long parentItemId, string filter)
        {
            Index i = new Index(taskId, false);

            i.Open();
            var bn = new BrowseNode();

            if (parentItemId == 0 && fileSystem == "")
            {
                foreach (string fs in i.GetRootDrives())
                {
                    bn.Children.Add(new BrowseItem {
                        Name = fs,
                        Type = "fs"
                    });
                }
            }
            else
            {
                foreach (IFSEntry entry in i.BrowseChildren(fileSystem, parentItemId, filter))
                {
                    bn.Children.Add(new BrowseItem {
                        Name  = entry.Name,
                        Id    = entry.ID,
                        Label = "" + entry.ParentID,                       // temporary, to debug parenthoot
                        Type  = "" + (int)entry.Kind,
                        Size  = entry.FileSize
                    });
                }
            }
            i.Terminate();
            return(bn);
        }
コード例 #2
0
        public static byte[] Encode(BrowseNode structure, IList <string> initialDictionary = null, PsonOptions options = PsonOptions.None)
        {
            var output = new MemoryStream();

            using (var encoder = new PsonEncoder(output, initialDictionary, options))
            {
                encoder.Write(structure);
                return(output.ToArray());
            }
        }
コード例 #3
0
ファイル: Gason.cs プロジェクト: eltomjan/Gason
 public ParentNode(BrowseNode me)
 {
     first = me.Parent_Viewer.NodeRawData.NodeBelow == me.NodeRawData;
     if (first)
     {
         parentNode = me.Parent_Viewer;
     }
     else
     {
         parentNode = me.Pred_Viewer;
     }
 }
コード例 #4
0
ファイル: Gason.cs プロジェクト: eltomjan/Gason
            public int ClearMyLink()
            {
                BrowseNode me = elements[1].element;

                while (me.NodeRawData.Parent != null)
                {
                    if (me.NodeRawData.NextTo != null)
                    {
                        me.NodeRawData.NextTo = null;
                        return(me.Level_Viewer);
                    }
                    me = me.Parent_Viewer;
                }
                return(-1);
            }
コード例 #5
0
        public void WriteObject(BrowseNode obj)
        {
            if (obj.NodeRawData == null)
            {
                WriteNull();
                return;
            }
            BrowseNode below = obj.Node_Viewer;

            WriteStartObject(below.Count);
            do
            {
                WriteString((string)below.Key_Viewer, true);
                Write(below);
                below = below.Next_Viewer;
            } while (below != null);
        }
コード例 #6
0
        public void WriteArray(BrowseNode list)
        {
            if (list.NodeRawData == null)
            {
                WriteNull();
                return;
            }
            BrowseNode below = list.Node_Viewer;
            var        count = below?.Count ?? 0;

            WriteStartArray(count);
            if (below != null)
            {
                do
                {
                    Write(below);
                    below = below.Next_Viewer;
                } while (below != null);
            }
        }
コード例 #7
0
        public void Write(BrowseNode obj)
        {
            if (obj.Tag_Viewer == JsonTag.JSON_NULL)
            {
                WriteNull();
            }

            else if (obj.Tag_Viewer == JsonTag.JSON_STRING)
            {
                WriteString(obj.Value_Viewer, false);
            }

            else if (obj.Tag_Viewer == JsonTag.JSON_NUMBER_STR)
            {
                WriteDouble(Double.Parse(obj.Value_Viewer.Replace('.', ',')));
            }
            else if (obj.Tag_Viewer == JsonTag.JSON_NUMBER)
            {
                WriteDouble(obj.NodeRawData.ToNumber());
            }

            else if (obj.Tag_Viewer >= JsonTag.JSON_TRUE) // true, false, null
            {
                WriteBool(obj.Tag_Viewer == JsonTag.JSON_TRUE);
            }

            else if (obj.Tag_Viewer == JsonTag.JSON_ARRAY)
            {
                WriteArray(obj);
            }

            else if (obj.Tag_Viewer == JsonTag.JSON_OBJECT)
            {
                WriteObject(obj);
            }

            else
            {
                throw new ArgumentException("unsupported type: " + obj.Tag_Viewer, "obj");
            }
        }
コード例 #8
0
    public static void Main()
    {
        Tests.TestAll();
        Byte[] raw;
#if DoubleLinked
        int        endPos = -1;
        JsonNode   jsn;
        BrowseNode v1, v2;
        DepthFirst bf1, bf2;
#endif
        Parser  jsonParser = new Parser(true); // FloatAsDecimal
        Printer prn        = new Printer();

#if DoubleLinked
        raw = Encoding.UTF8.GetBytes(Strings.JSONnetPart1);
        jsonParser.Parse(raw, ref endPos, out JsonNode jsn1
#if KEY_SPLIT
                         , new ByteString[] { }, 0, 0, 0
#endif
                         );
        bf1 = new DepthFirst(jsn1, raw);
        v1  = new BrowseNode(ref jsn1, raw);

        raw = Encoding.UTF8.GetBytes(Strings.JSONnetPart2);
        jsonParser.Parse(raw, ref endPos, out JsonNode jsn2
#if KEY_SPLIT
                         , new ByteString[] { }, 0, 0, 0
#endif
                         );
        jsonParser.SortPaths(jsn2, raw, "id");
        v2 = new BrowseNode(ref jsn2, raw);

        bf2 = new DepthFirst(jsn2, raw);
        jsonParser.RemoveTwins(ref bf1, ref bf2);

        Console.WriteLine("RemoveTwins result 1/2:");
        Console.WriteLine(prn.Print(ref v1, 0).ToString());
        Console.WriteLine("RemoveTwins result 2/2:");
        Console.WriteLine(prn.Print(ref v2, 0).ToString());

        raw = Encoding.UTF8.GetBytes(Strings.JSONnetComplete);
        ByteString[] keys = new ByteString[]
        {
            new ByteString("batters"),
            null
        };
        jsonParser.Parse(raw, ref endPos, out jsn
#if KEY_SPLIT
                         , keys, 2, 0, 2
#endif
                         ); // batters / null path, read only 1st 2
#if !KEY_SPLIT
        jsonParser.SortPaths(jsn, raw, null);
        v1 = new BrowseNode(ref jsn, raw);
        String check = prn.Print(ref v1, 0).ToString();
        if (Strings.Sort1 != check)
        {
            Console.WriteLine($"SortPaths 2.1 error:\n{Strings.Sort1}!=\n{check}<-");
        }
        else
        {
            Console.WriteLine("SortPaths 2.1 OK");
        }
        jsonParser.SortPaths(jsn, raw, "id");
        check = prn.Print(ref v1, 0).ToString();
        if (Strings.Sort2 != check)
        {
            Console.WriteLine($"SortPaths 2.2 error:\n{Strings.Sort2}");
        }
        else
        {
            Console.WriteLine("SortPaths 2.2 OK");
        }
        endPos = -1;
#else
        Console.WriteLine("1st 2 rows of batters only:");
        jsonParser.Parse(raw, ref endPos, out jsn
                         , keys, 2, endPos, 2
                         ); // and now following 2
        ValueWriter wr = new ValueWriter();
        using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput()))
        {
            sw.AutoFlush = true;
            wr.DumpValueIterative(sw, jsn, raw);
        }
#endif

        // Twiter complex json -> TC
        raw = Encoding.UTF8.GetBytes(Tests.ReadFile("pass6.json"));
        jsonParser.Parse(raw, ref endPos, out JsonNode jsn01
#if KEY_SPLIT
                         , new ByteString[] { }, 0, 0, 0
#endif
                         );
        jsonParser.Parse(raw, ref endPos, out JsonNode jsn02
#if KEY_SPLIT
                         , new ByteString[] { }, 0, 0, 0
#endif
                         );
        v1  = new BrowseNode(ref jsn01, raw);
        v2  = new BrowseNode(ref jsn02, raw);
        bf1 = new DepthFirst(jsn01, raw);
        bf2 = new DepthFirst(jsn02, raw);
        Tests.ModifyTwitter(ref bf1, ref bf2, raw);
        jsonParser.RemoveTwins(ref bf1, ref bf2);
        if (v1.NodeRawData == null)
        {
            Console.WriteLine("Bug - 1st modified Twitter JSON empty");
        }
        else if (Strings.Twitter1 == prn.Print(ref v1, 0).ToString())
        {
            Console.WriteLine($"Twitter check 1/2 OK - 1st variant has expected content:");
        }
        else
        {
            Console.WriteLine($"Twiter RemoveTwins result 1/2 differs:\n{prn.Print(ref v1, 0).ToString()}");
        }
        if (v2.NodeRawData == null)
        {
            Console.WriteLine("Bug - 2nd modified Twitter JSON empty");
        }
        else if (Strings.Twitter2 == prn.Print(ref v2, 0).ToString())
        {
            Console.WriteLine($"Twitter check 2/2 OK - 2nd variant has expected content:");
        }
        else
        {
            Console.WriteLine($"Twiter RemoveTwins result 2/2 differs:\n{prn.Print(ref v2, 0).ToString()}");
        }
#endif

        raw = File.ReadAllBytes(@"citylots.json");
        Benchmark b = new Benchmark(raw);
        b.Run(); // < 30s
        return;
    }
コード例 #9
0
ファイル: Gason.cs プロジェクト: eltomjan/Gason
 public NodeComparer(BrowseNode el, Byte[] s)
 {
     element = el;
     src     = s;
 }
コード例 #10
0
ファイル: OrderTables.cs プロジェクト: laszlo-kiss/Dataphor
 public BrowseTable(BrowseNode node, Program program) : base(node, program)
 {
     _tables = new BrowseTableList(this);
 }