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)); }
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(); } }
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(); } }