diff options
| -rw-r--r-- | RELEASE-NOTES.txt | 1 | ||||
| -rw-r--r-- | src/main/java/com/amazon/carbonado/Query.java | 10 | ||||
| -rw-r--r-- | src/main/java/com/amazon/carbonado/qe/EmptyQuery.java | 7 | ||||
| -rw-r--r-- | src/main/java/com/amazon/carbonado/qe/StandardQuery.java | 9 | ||||
| -rw-r--r-- | src/main/java/com/amazon/carbonado/spi/WrappedQuery.java | 4 | 
5 files changed, 31 insertions, 0 deletions
| diff --git a/RELEASE-NOTES.txt b/RELEASE-NOTES.txt index 02d3591..4e6c3c3 100644 --- a/RELEASE-NOTES.txt +++ b/RELEASE-NOTES.txt @@ -29,6 +29,7 @@ Carbonado change history  - JDBCRepository supports char and Character property if column is char type of length 1.
  - JDBCRepository allows non-null column to be @Nullable if also @Independent.
  - Fixed bug in generating SQL with nullable primary key properties.
 +- Added convenience method, Query.exists().
  1.1 to 1.1.2
  -------------------------------
 diff --git a/src/main/java/com/amazon/carbonado/Query.java b/src/main/java/com/amazon/carbonado/Query.java index e27e484..a729331 100644 --- a/src/main/java/com/amazon/carbonado/Query.java +++ b/src/main/java/com/amazon/carbonado/Query.java @@ -352,6 +352,16 @@ public interface Query<S extends Storable> {      long count() throws FetchException;
      /**
 +     * Returns true if any results are matched by this query.
 +     *
 +     * @return true if any matches
 +     * @throws IllegalStateException if any blank parameters in this query
 +     * @throws FetchException if storage layer throws an exception
 +     * @since 1.2
 +     */
 +    boolean exists() throws FetchException;
 +
 +    /**
       * Print the native query to standard out, which is useful for performance
       * analysis. Not all repositories have a native query format. An example
       * native format is SQL.
 diff --git a/src/main/java/com/amazon/carbonado/qe/EmptyQuery.java b/src/main/java/com/amazon/carbonado/qe/EmptyQuery.java index 31d9dd3..1a970e0 100644 --- a/src/main/java/com/amazon/carbonado/qe/EmptyQuery.java +++ b/src/main/java/com/amazon/carbonado/qe/EmptyQuery.java @@ -107,6 +107,13 @@ public final class EmptyQuery<S extends Storable> extends AbstractQuery<S> {      }
      /**
 +     * Always returns false.
 +     */
 +    public boolean exists() {
 +        return false;
 +    }
 +
 +    /**
       * Always throws an IllegalStateException.
       */
      public Query<S> with(int value) {
 diff --git a/src/main/java/com/amazon/carbonado/qe/StandardQuery.java b/src/main/java/com/amazon/carbonado/qe/StandardQuery.java index ec9bf4e..2d7995e 100644 --- a/src/main/java/com/amazon/carbonado/qe/StandardQuery.java +++ b/src/main/java/com/amazon/carbonado/qe/StandardQuery.java @@ -294,6 +294,15 @@ public abstract class StandardQuery<S extends Storable> extends AbstractQuery<S>          }
      }
 +    public boolean exists() throws FetchException {
 +        Cursor<S> cursor = fetch();
 +        try {
 +            return cursor.skipNext(1) > 0;
 +        } finally {
 +            cursor.close();
 +        }
 +    }
 +
      public boolean printNative(Appendable app, int indentLevel) throws IOException {
          try {
              return executor().printNative(app, indentLevel, mValues);
 diff --git a/src/main/java/com/amazon/carbonado/spi/WrappedQuery.java b/src/main/java/com/amazon/carbonado/spi/WrappedQuery.java index ba3c013..bee05f0 100644 --- a/src/main/java/com/amazon/carbonado/spi/WrappedQuery.java +++ b/src/main/java/com/amazon/carbonado/spi/WrappedQuery.java @@ -167,6 +167,10 @@ public abstract class WrappedQuery<S extends Storable> implements Query<S> {          return mQuery.count();
      }
 +    public boolean exists() throws FetchException {
 +        return mQuery.exists();
 +    }
 +
      public boolean printNative() {
          return mQuery.printNative();
      }
 | 
