private void addAutoGeneretedKeys(WriteResult result) throws TranslatorException { Table table = this.visitor.mongoDoc.getTargetTable(); int cols = table.getPrimaryKey().getColumns().size(); if (cols != 1) { //restrict to only primary keys based upon id return; } Class<?>[] columnDataTypes = new Class<?>[cols]; String[] columnNames = new String[cols]; //this is typically expected to be an int/long, but we'll be general here. we may eventual need the type logic off of the metadata importer for (int i = 0; i < cols; i++) { columnDataTypes[i] = table.getPrimaryKey().getColumns().get(i).getJavaType(); columnNames[i] = table.getPrimaryKey().getColumns().get(i).getName(); } if (!columnNames[0].equals(MongoDBMetadataProcessor.ID)) { return; } GeneratedKeys generatedKeys = this.executionContext.getCommandContext().returnGeneratedKeys(columnNames, columnDataTypes); List<Object> vals = new ArrayList<Object>(columnDataTypes.length); for (int i = 0; i < columnDataTypes.length; i++) { Object value = this.executionFactory.retrieveValue(result.getUpsertedId(), columnDataTypes[i], this.mongoDB, columnNames[i], columnNames[i]); vals.add(value); } generatedKeys.addKey(vals); } }
private void addAutoGeneretedKeys() { OEntity entity = this.response.getResultsIter().next().getEntity(); Table table = this.visitor.getEnityTable(); int cols = table.getPrimaryKey().getColumns().size(); Class<?>[] columnDataTypes = new Class<?>[cols]; String[] columnNames = new String[cols]; //this is typically expected to be an int/long, but we'll be general here. we may eventual need the type logic off of the metadata importer for (int i = 0; i < cols; i++) { columnDataTypes[i] = table.getPrimaryKey().getColumns().get(i).getJavaType(); columnNames[i] = table.getPrimaryKey().getColumns().get(i).getName(); } GeneratedKeys generatedKeys = this.executionContext.getCommandContext().returnGeneratedKeys(columnNames, columnDataTypes); List<Object> vals = new ArrayList<Object>(columnDataTypes.length); for (int i = 0; i < columnDataTypes.length; i++) { OProperty<?> prop = entity.getProperty(columnNames[i]); Object value = this.translator.retrieveValue(prop.getValue(), columnDataTypes[i]); vals.add(value); } generatedKeys.addKey(vals); } }
.returnGeneratedKeys(columnNames, columnDataTypes);
private void handleInsert() throws TranslatorException { Insert insert = (Insert)command; ExpressionValueSource evs = (ExpressionValueSource)insert.getValueSource(); Row row = nextRow(); Sheet sheet = null; if (row == null) { sheet = workbook.getSheet(this.visitor.getSheetName()); } else { sheet = row.getSheet(); } int last = sheet.getLastRowNum(); Row newRow = sheet.createRow(last+1); List<Integer> cols = this.visitor.getProjectedColumns(); for (int i = 0; i < cols.size(); i++) { int index = cols.get(i); setValue(newRow, index-1, ((Literal)evs.getValues().get(i)).getValue()); } if (executionContext.getCommandContext().isReturnAutoGeneratedKeys()) { GeneratedKeys keys = executionContext.getCommandContext().returnGeneratedKeys(new String[] {ExcelMetadataProcessor.ROW_ID}, new Class<?>[] {TypeFacility.RUNTIME_TYPES.INTEGER}); keys.addKey(Arrays.asList(last+1)); } result++; writeXLSFile(); }
try { ResultSet keys = statement.getGeneratedKeys(); GeneratedKeys generatedKeys = context.getCommandContext().returnGeneratedKeys(keyColumnNames, keyColumnDataTypes);