Esempio n. 1
0
        public static void SaveRandomPortionToToloka(IAdapter adapter, SmartParser.Lib.TableHeader columnOrdering,
                                                     Declaration declaration, string inputFileName)
        {
            if (TolokaFileName == "")
            {
                return;
            }
            string fileID = BuildInputFileId(adapter, inputFileName);

            using (System.IO.StreamWriter file = new System.IO.StreamWriter(TolokaFileName))
            {
                file.WriteLine("INPUT:input_id\tINPUT:input_json\tGOLDEN:declaration_json\tHINT:text");
                Random random        = new Random();
                int    dataRowsCount = Math.Min(20, adapter.GetRowsCount() - columnOrdering.GetPossibleHeaderEnd());
                int    dataStart     = random.Next(columnOrdering.GetPossibleHeaderEnd(),
                                                   adapter.GetRowsCount() - dataRowsCount);
                int dataEnd = dataStart + dataRowsCount;
                var json    = adapter.TablePortionToJson(columnOrdering, dataStart, dataEnd);
                json.InputFileName = inputFileName;
                json.Title         = declaration.Properties.SheetTitle;
                string jsonStr = JsonConvert.SerializeObject(json);
                jsonStr = jsonStr.Replace("\t", " ").Replace("\\t", " ").Replace("\"", "\"\"");
                string id = fileID + "_" + dataStart + "_" + dataEnd;
                file.WriteLine(id + "\t" + "\"" + jsonStr + "\"\t\t");
            }
        }
Esempio n. 2
0
        public TJsonTablePortion TablePortionToJson(TableHeader columnOrdering, int body_start, int body_end)
        {
            var table = new TJsonTablePortion();

            table.DataStart = body_start;
            int headerEnd = columnOrdering.GetPossibleHeaderEnd();

            for (int i = columnOrdering.GetPossibleHeaderBegin(); i < columnOrdering.GetPossibleHeaderEnd(); i++)
            {
                var row = GetJsonByRow(GetDataCells(i));
                table.Header.Add(row);
            }

            // find section before data
            for (int i = body_start; i >= headerEnd; i--)
            {
                string dummy;
                // cannot use prevRowIsSection
                var row = GetDataCells(i);
                if (IsSectionRow(i, row, columnOrdering.GetMaxColumnEndIndex(), false, out dummy))
                {
                    table.Section.Add(GetJsonByRow(row));
                    break;
                }
            }

            int maxRowsCount = body_end - body_start;

            table.DataEnd = body_start;
            int addedRows = 0;

            while (table.DataEnd < GetRowsCount() && addedRows < maxRowsCount)
            {
                if (!IsEmptyRow(table.DataEnd))
                {
                    table.Data.Add(GetJsonByRow(GetDataCells(table.DataEnd)));
                    addedRows++;
                }
                table.DataEnd++;
            }
            return(table);
        }