コード例 #1
0
        private ExtractWriter <T> InitializeWriter(Extract extract)
        {
            var schema = new ExtractTableSchema <T>();

            Table table;

            if (extract.hasTable(Name))
            {
                table = OpenExistingTable(extract, schema);
            }
            else
            {
                table = BuildNewTable(extract, schema);
            }

            return(new ExtractWriter <T>(table, schema));
        }
コード例 #2
0
        private Table OpenExistingTable(Extract extract, ExtractTableSchema <T> schema)
        {
            Table           table           = extract.openTable(Name);
            TableDefinition tableDefinition = table.getTableDefinition();

            try
            {
                if (!schema.IsCompatibleWith(tableDefinition))
                {
                    throw new ExtractTableLoadException(String.Format("Existing extract table is incompatible with model '{0}'", Name));
                }

                return(table);
            }
            finally
            {
                tableDefinition.close();
            }
        }
コード例 #3
0
        private Table BuildNewTable(Extract extract, ExtractTableSchema <T> schema)
        {
            var tableDefinition = new TableDefinition();

            try
            {
                tableDefinition.setDefaultCollation(Collation.EN_US);

                foreach (var column in schema.MappedColumns.Select(item => item.Column))
                {
                    tableDefinition.addColumn(column.Name, column.ExtractType);
                }

                return(extract.addTable(Name, tableDefinition));
            }
            finally
            {
                tableDefinition.close();
            }
        }