private Record outParameters() throws SQLException { if (result == null || result.length == 0 || result[0].data == null || result[0].data.size() == 0) throw new SQLException("No OUT Parameters available"); return result[0].data.get(0); }
@Override public final R fetchOne() { Result<R> result = fetch(1); if (result.size() == 1) { return result.get(0); } return null; }
@Override public final R fetchNext() { Result<R> result = fetch(1); if (result.size() == 1) { return result.get(0); } return null; }
public final R getReturnedRecord() { if (getReturnedRecords().isEmpty()) return null; return getReturnedRecords().get(0); }
private <T> T getValue(int columnIndex, Class<T> type) throws SQLException { checkInRange(); checkField(columnIndex); T value = result.get(index - 1).getValue(columnIndex - 1, type); wasNull = (value == null); return value; }
private <T> T getValue(String columnLabel, Class<T> type) throws SQLException { checkInRange(); checkField(columnLabel); T value = result.get(index - 1).getValue(columnLabel, type); wasNull = (value == null); return value; }
@Override public final R getReturnedRecord() { if (getReturnedRecords().size() == 0) { return null; } return getReturnedRecords().get(0); }
@SuppressWarnings("unchecked") private final UniqueKey<Record> createPrimaryKey(Result<Record> result, int columnName) { if (result.size() > 0) { TableField<Record, ?>[] f = new TableField[result.size()]; for (int i = 0; i < f.length; i++) { String name = result.get(i).get(columnName, String.class); f[i] = (TableField<Record, ?>) field(name); // [#5097] Work around a bug in the Xerial JDBC driver for SQLite if (f[i] == null && configuration.family() == SQLITE) // [#2656] Use native support for case-insensitive column // lookup, once this is implemented for (Field<?> field : fields()) if (field.getName().equalsIgnoreCase(name)) f[i] = (TableField<Record, ?>) field; } String indexName = result.get(0).get(5, String.class); return new MetaPrimaryKey(this, indexName, f); } else { return null; } }
public List<Pizza> findOrderByIdAsc() { List<Result<Record>> values = dslContext.selectDistinct() .from(PIZZA) .innerJoin(BASE).on(BASE.ID.eq(PIZZA.BASE_ID)) .innerJoin(PIZZA_TOPPINGS).on(PIZZA_TOPPINGS.PIZZA_ID.eq(PIZZA.ID)) .innerJoin(TOPPING).on(TOPPING.ID.eq(PIZZA_TOPPINGS.TOPPINGS_ID)) .orderBy(PIZZA.ID.asc()) .fetch() .intoGroups(PIZZA.fields()) .values() .stream() .collect(Collectors.toList()); if (values.isEmpty()) { return Collections.emptyList(); } return values.stream() .map(r -> { Pizza pizza = r.into(PIZZA.ID, PIZZA.NAME, PIZZA.PRICE).get(0).into(Pizza.class); pizza.setBase(r.into(BASE.ID, BASE.NAME).get(0).into(Base.class)); pizza.setToppings(r.sortAsc(TOPPING.ID).into(Topping.class)); return pizza; }) .collect(Collectors.toList()); }
@SuppressWarnings("unchecked") private final UniqueKey<Record> createPrimaryKey(Result<Record> result, int columnName) { if (result.size() > 0) { TableField<Record, ?>[] fields = new TableField[result.size()]; for (int i = 0; i < fields.length; i++) { fields[i] = (TableField<Record, ?>) field(result.get(i).getValue(columnName, String.class)); } return AbstractKeys.createUniqueKey(this, fields); } else { return null; } }
private <T> T get(String columnLabel, Class<T> type) throws SQLException { checkInRange(); Converter<?, ?> converter = Converters.inverse(field(columnLabel).getConverter()); T value = Convert.convert(result.get(index - 1).get(columnLabel, converter), type); wasNull = (value == null); return value; }
private <T> T get(int columnIndex, Class<T> type) throws SQLException { checkInRange(); Converter<?, ?> converter = Converters.inverse(field(columnIndex).getConverter()); T value = Convert.convert(result.get(index - 1).get(columnIndex - 1, converter), type); wasNull = (value == null); return value; }
return null; else if (size == 1) return result.get(0); else throw new TooManyRowsException("Cursor returned more than one result");
throw new NoDataFoundException("Cursor returned no rows"); else if (size == 1) return result.get(0); else throw new TooManyRowsException("Cursor returned more than one result");
/** * Use a previously obtained result as a new {@link Table} that can be used * in SQL statements through {@link #values(RowN...)}. * * @see #values(RowN...) */ @Support public static <R extends Record> Table<R> table(Result<R> result) { int size = result.size(); RowN[] rows = new RowN[size]; for (int i = 0; i < size; i++) rows[i] = (RowN) result.get(i).valuesRow(); Field<?>[] fields = result.fields(); String[] columns = new String[fields.length]; for (int i = 0; i < fields.length; i++) columns[i] = fields[i].getName(); // TODO [#2986] Coerce the record type upon the resulting table. return (Table<R>) values(rows).as("v", columns); }
/** * Use a previously obtained result as a new {@link Table} that can be used * in SQL statements through {@link #values(RowN...)}. * * @see #values(RowN...) */ @Support @Transition( name = "TABLE", args = "Result" ) public static <R extends Record> Table<R> table(Result<R> result) { int size = result.size(); RowN[] rows = new RowN[size]; for (int i = 0; i < size; i++) rows[i] = (RowN) result.get(i).valuesRow(); Field<?>[] fields = result.fields(); String[] columns = new String[fields.length]; for (int i = 0; i < fields.length; i++) columns[i] = fields[i].getName(); // TODO [#2986] Coerce the record type upon the resulting table. return (Table<R>) values(rows).as("v", columns); }
@Override public final void refresh(final Field<?>... refreshFields) { SelectQuery<Record> select = create().selectQuery(); select.addSelect(refreshFields); select.addFrom(getTable()); Tools.addConditions(select, this, getPrimaryKey().getFieldsArray()); if (select.execute() == 1) { final AbstractRecord source = (AbstractRecord) select.getResult().get(0); delegate(configuration(), (Record) this, REFRESH) .operate(new RecordOperation<Record, RuntimeException>() { @Override public Record operate(Record record) throws RuntimeException { setValues(refreshFields, source); return record; } }); } else { throw new NoDataFoundException("Exactly one row expected for refresh. Record does not exist in database."); } }
@Override public final void refresh(final Field<?>... f) { SelectQuery<Record> select = create().selectQuery(); select.addSelect(f); select.addFrom(getTable()); Utils.addConditions(select, this, getPrimaryKey().getFieldsArray()); if (select.execute() == 1) { final AbstractRecord source = (AbstractRecord) select.getResult().get(0); delegate(configuration(), (Record) this, REFRESH) .operate(new RecordOperation<Record, RuntimeException>() { @Override public Record operate(Record record) throws RuntimeException { setValues(f, source); return record; } }); } else { throw new InvalidResultException("Exactly one row expected for refresh. Record does not exist in database."); } }
@Override public LocalLink getLink(Language language, int sourceId, int destId) throws DaoException { DSLContext context = getJooq(); try { Result<Record> result = context.select(). from(Tables.LOCAL_LINK). where(Tables.LOCAL_LINK.LANG_ID.eq(language.getId())). and(Tables.LOCAL_LINK.SOURCE_ID.eq(sourceId)). and(Tables.LOCAL_LINK.DEST_ID.eq(destId)). fetch(); //Work-around to avoid pages that have multiple links to the same page Record record; if (result.isEmpty()){ record = null; } else { record = result.get(0); } return buildLocalLink(record, true); } catch (RuntimeException e) { freeJooq(context); throw e; } }