[#4113] Add Field<?>[] { Cursor | Record | RecordType | Result | Row | TableLike | UDT }.fields( { Field<?>... | int... | String... } ) for convenience

This commit is contained in:
lukaseder 2015-08-11 11:39:29 +02:00
parent 4941d21c1e
commit c4ce640ec0
11 changed files with 245 additions and 41 deletions

View File

@ -115,6 +115,38 @@ public interface Cursor<R extends Record> extends Iterable<R> /* [java-8] */, Au
*/
Field<?>[] fields();
/**
* Get all fields from this Cursor, providing some fields.
*
* @return All available fields
* @see Row#fields(Field...)
*/
Field<?>[] fields(Field<?>... fields);
/**
* Get all fields from this Cursor, providing some field names.
*
* @return All available fields
* @see Row#fields(String...)
*/
Field<?>[] fields(String... fieldNames);
/**
* Get all fields from this Cursor, providing some field names.
*
* @return All available fields
* @see Row#fields(Name...)
*/
Field<?>[] fields(Name... fieldNames);
/**
* Get all fields from this Cursor, providing some field indexes.
*
* @return All available fields
* @see Row#fields(int...)
*/
Field<?>[] fields(int... fieldIndexes);
/**
* Check whether this cursor has a next record.
* <p>

View File

@ -159,6 +159,38 @@ public interface Result<R extends Record> extends List<R>, Attachable {
*/
Field<?>[] fields();
/**
* Get all fields from this Result, providing some fields.
*
* @return All available fields
* @see Row#fields(Field...)
*/
Field<?>[] fields(Field<?>... fields);
/**
* Get all fields from this Result, providing some field names.
*
* @return All available fields
* @see Row#fields(String...)
*/
Field<?>[] fields(String... fieldNames);
/**
* Get all fields from this Result, providing some field names.
*
* @return All available fields
* @see Row#fields(Name...)
*/
Field<?>[] fields(Name... fieldNames);
/**
* Get all fields from this Result, providing some field indexes.
*
* @return All available fields
* @see Row#fields(int...)
*/
Field<?>[] fields(int... fieldIndexes);
/**
* Convenience method to fetch a value at a given position in the result.
*

View File

@ -133,6 +133,38 @@ public interface TableLike<R extends Record> extends QueryPart {
*/
Field<?>[] fields();
/**
* Get all fields from this table, providing some fields.
*
* @return All available fields
* @see Row#fields(Field...)
*/
Field<?>[] fields(Field<?>... fields);
/**
* Get all fields from this table, providing some field names.
*
* @return All available fields
* @see Row#fields(String...)
*/
Field<?>[] fields(String... fieldNames);
/**
* Get all fields from this table, providing some field names.
*
* @return All available fields
* @see Row#fields(Name...)
*/
Field<?>[] fields(Name... fieldNames);
/**
* Get all fields from this table, providing some field indexes.
*
* @return All available fields
* @see Row#fields(int...)
*/
Field<?>[] fields(int... fieldIndexes);
/**
* The underlying table representation of this object
* <p>

View File

@ -90,6 +90,38 @@ public interface UDT<R extends UDTRecord<R>> extends QueryPart {
*/
Field<?>[] fields();
/**
* Get all fields from this UDT, providing some fields.
*
* @return All available fields
* @see Row#fields(Field...)
*/
Field<?>[] fields(Field<?>... fields);
/**
* Get all fields from this UDT, providing some field names.
*
* @return All available fields
* @see Row#fields(String...)
*/
Field<?>[] fields(String... fieldNames);
/**
* Get all fields from this UDT, providing some field names.
*
* @return All available fields
* @see Row#fields(Name...)
*/
Field<?>[] fields(Name... fieldNames);
/**
* Get all fields from this UDT, providing some field indexes.
*
* @return All available fields
* @see Row#fields(int...)
*/
Field<?>[] fields(int... fieldIndexes);
/**
* Get the UDT schema
*/

View File

@ -214,6 +214,26 @@ abstract class AbstractTable<R extends Record> extends AbstractQueryPart impleme
return fieldsRow().fields();
}
@Override
public final Field<?>[] fields(Field<?>... fields) {
return fieldsRow().fields(fields);
}
@Override
public final Field<?>[] fields(String... fieldNames) {
return fieldsRow().fields(fieldNames);
}
@Override
public final Field<?>[] fields(Name... fieldNames) {
return fieldsRow().fields(fieldNames);
}
@Override
public final Field<?>[] fields(int... fieldIndexes) {
return fieldsRow().fields(fieldIndexes);
}
@Override
public final Table<R> asTable() {
return this;

View File

@ -174,7 +174,27 @@ class CursorImpl<R extends Record> implements Cursor<R> {
@Override
public final Field<?>[] fields() {
return cursorFields.clone();
return fieldsRow().fields();
}
@Override
public final Field<?>[] fields(Field<?>... fields) {
return fieldsRow().fields(fields);
}
@Override
public final Field<?>[] fields(String... fieldNames) {
return fieldsRow().fields(fieldNames);
}
@Override
public final Field<?>[] fields(Name... fieldNames) {
return fieldsRow().fields(fieldNames);
}
@Override
public final Field<?>[] fields(int... fieldIndexes) {
return fieldsRow().fields(fieldIndexes);
}
@Override

View File

@ -179,9 +179,8 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
public final Field<?>[] fields(Field<?>... f) {
Field<?>[] result = new Field[f.length];
for (int i = 0; i < result.length; i++) {
for (int i = 0; i < result.length; i++)
result[i] = field(f[i]);
}
return result;
}
@ -190,9 +189,8 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
public final Field<?>[] fields(String... f) {
Field<?>[] result = new Field[f.length];
for (int i = 0; i < result.length; i++) {
for (int i = 0; i < result.length; i++)
result[i] = field(f[i]);
}
return result;
}
@ -201,9 +199,8 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
public final Field<?>[] fields(Name... f) {
Field<?>[] result = new Field[f.length];
for (int i = 0; i < result.length; i++) {
for (int i = 0; i < result.length; i++)
result[i] = field(f[i]);
}
return result;
}
@ -212,9 +209,8 @@ class Fields<R extends Record> extends AbstractQueryPart implements RecordType<R
public final Field<?>[] fields(int... f) {
Field<?>[] result = new Field[f.length];
for (int i = 0; i < result.length; i++) {
for (int i = 0; i < result.length; i++)
result[i] = field(f[i]);
}
return result;
}

View File

@ -253,44 +253,24 @@ class ResultImpl<R extends Record> implements Result<R>, AttachableInternal {
return fields.fields().clone();
}
// @Override [#4113] TODO: Make this public
final Field<?>[] fields(Field<?>... f) {
Field<?>[] result = new Field[f.length];
for (int i = 0; i < f.length; i++)
result[i] = field(f[i]);
return result;
@Override
public final Field<?>[] fields(Field<?>... f) {
return fields.fields(f);
}
// @Override [#4113] TODO: Make this public
final Field<?>[] fields(int... indexes) {
Field<?>[] result = new Field[indexes.length];
for (int i = 0; i < indexes.length; i++)
result[i] = field(indexes[i]);
return result;
@Override
public final Field<?>[] fields(int... indexes) {
return fields.fields(indexes);
}
// @Override [#4113] TODO: Make this public
final Field<?>[] fields(String... names) {
Field<?>[] result = new Field[names.length];
for (int i = 0; i < names.length; i++)
result[i] = field(names[i]);
return result;
@Override
public final Field<?>[] fields(String... names) {
return fields.fields(names);
}
// @Override [#4113] TODO: Make this public
final Field<?>[] fields(Name... names) {
Field<?>[] result = new Field[names.length];
for (int i = 0; i < names.length; i++)
result[i] = field(names[i]);
return result;
@Override
public final Field<?>[] fields(Name... names) {
return fields.fields(names);
}
@Override

View File

@ -3325,6 +3325,26 @@ class SelectImpl<R extends Record, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11,
return getDelegate().fields();
}
@Override
public final Field<?>[] fields(Field<?>... fields) {
return getDelegate().fields(fields);
}
@Override
public final Field<?>[] fields(String... fieldNames) {
return getDelegate().fields(fieldNames);
}
@Override
public final Field<?>[] fields(Name... fieldNames) {
return getDelegate().fields(fieldNames);
}
@Override
public final Field<?>[] fields(int... fieldIndexes) {
return getDelegate().fields(fieldIndexes);
}
/**
* The {@link SelectImpl} current condition step
* <p>

View File

@ -323,6 +323,26 @@ class SelectQueryImpl<R extends Record> extends AbstractResultQuery<R> implement
return asTable().fields();
}
@Override
public final Field<?>[] fields(Field<?>... fields) {
return asTable().fields(fields);
}
@Override
public final Field<?>[] fields(String... fieldNames) {
return asTable().fields(fieldNames);
}
@Override
public final Field<?>[] fields(Name... fieldNames) {
return asTable().fields(fieldNames);
}
@Override
public final Field<?>[] fields(int... fieldIndexes) {
return asTable().fields(fieldIndexes);
}
@Override
public final Table<R> asTable() {
// Its usually better to alias nested selects that are used in

View File

@ -117,6 +117,26 @@ public class UDTImpl<R extends UDTRecord<R>> extends AbstractQueryPart implement
return fieldsRow().fields();
}
@Override
public final Field<?>[] fields(Field<?>... f) {
return fieldsRow().fields(f);
}
@Override
public final Field<?>[] fields(String... fieldNames) {
return fieldsRow().fields(fieldNames);
}
@Override
public final Field<?>[] fields(Name... fieldNames) {
return fieldsRow().fields(fieldNames);
}
@Override
public final Field<?>[] fields(int... fieldIndexes) {
return fieldsRow().fields(fieldIndexes);
}
final Fields<R> fields0() {
return fields;
}