Example #1
0
        } // testUseAnotherSchemaBuilder()

        private void runParseabilityTest(JsonDataContext dc)
        {
            Schema default_schema = dc.getDefaultSchema();

            Debug.WriteLine("JsonDataContextTest.runParseabilityTest() default_schema:'" + default_schema.getName() + "'");
            int table_count = default_schema.getTableCount();

            Table[] tables = default_schema.getTables(false);

            string expected_value = "";
            string value_returned = "";

            string[] column_names = null;
            string   tables_str   = "";

            foreach (Table t in tables)
            {
                column_names = t.getColumnNames();
                tables_str   = NArrays.ArrayAsString(column_names);
            }

            Table table = default_schema.getTable(0);

            column_names = table.getColumnNames();

            //string tables_str = string.Join(", ", column_names);  // column_names.ToString();
            tables_str = NArrays.ArrayAsString(column_names);


            expected_value = "[country, gender, id, name]";
            value_returned = tables_str;
            Debug.WriteLine("JsonDataContextTest.runParseabilityTest()  tables_str: '" + tables_str);
            Debug.Assert(expected_value.Equals(tables_str),
                         "JsonDataContextTest.runParseabilityTest()\n"
                         + "    *Assertion Failed* expected_value: '" + expected_value + "'\n"
                         + "                       test_value:     '" + value_returned + "'"
                         );
            Column[] columns = table.getColumns();

            DataSet dataSet = dc.materializeMainSchemaTable(table, columns, 100000);

            Debug.Assert(dataSet.next());

            expected_value = "Row[values=[US, null, 1234, John Doe]]";
            value_returned = dataSet.getRow().ToString();
            Debug.Assert("Row[values=[US, null, 1234, John Doe]]".Equals(value_returned),
                         "JsonDataContextTest.runParseabilityTest()\n"
                         + "    *Assertion Failed* expected_value: '" + expected_value + "'\n"
                         + "                       test_value:     '" + value_returned + "'");

            Debug.Assert(!dataSet.next());
            Debug.Assert("Row[values=[USA, F, 1235, Jane Doe]]".Equals(dataSet.getRow().ToString()));
            Debug.Assert(!dataSet.next());
            dataSet.close();
        } // runParseabilityTest()
Example #2
0
        // @Override
        public TableFromBuilder from(Schema schema, String tableName)
        {
            Table table = schema.getTableByName(tableName);

            if (table == null)
            {
                throw new ArgumentException("Nu such table '" + tableName + "' found in schema: " + schema
                                            + ". Available tables are: " + NArrays.ArrayAsString(schema.getTableNames(false)));
            }
            return(from(table));
        }
        // @Override
        public Column findColumn(String columnName) // throws IllegalArgumentException
        {
            if (columnName == null)
            {
                throw new ArgumentException("columnName cannot be null");
            }

            List <FromItem>   fromItems   = _query.getFromClause().getItems();
            List <SelectItem> selectItems = _query.getSelectClause().getItems();

            Column column = null;

            int dotIndex = columnName.IndexOf('.');

            if (dotIndex != -1)
            {
                // check aliases of from items
                String aliasPart  = columnName.Substring(0, dotIndex);
                String columnPart = columnName.Substring(dotIndex + 1);

                foreach (FromItem fromItem in fromItems)
                {
                    column = null;
                    column = findColumnInAliasedTable(column, fromItem, aliasPart, columnPart);
                    if (column != null)
                    {
                        return(column);
                    }
                }
            }

            // check columns already in select clause
            foreach (SelectItem item in selectItems)
            {
                column = item.getColumn();
                if (column != null)
                {
                    if (columnName.Equals(column.getName()))
                    {
                        return(column);
                    }
                }
            }

            foreach (FromItem fromItem in fromItems)
            {
                Table table = fromItem.getTable();
                if (table != null)
                {
                    column = table.getColumnByName(columnName);
                    if (column != null)
                    {
                        return(column);
                    }
                }
            }

            column = _dataContext.getColumnByQualifiedLabel(columnName);
            if (column != null)
            {
                return(column);
            }

            ArgumentException exception = new ArgumentException("Could not find column: " + columnName);

            if (logger.isDebugEnabled())
            {
                logger.debug("findColumn('" + columnName + "') could not resolve a column", exception);
                foreach (FromItem fromItem in fromItems)
                {
                    Table table = fromItem.getTable();
                    if (table != null)
                    {
                        logger.debug("Table available in FROM item: {}. Column names: {}", table,
                                     NArrays.ArrayAsString(table.getColumnNames()));
                    }
                }
            }

            throw exception;
        }