@Override public <R> R query(MonetaryQuery<R> query) { return query.queryFrom(this); }
/** * Queries this monetary amount for a value. * <p> * This queries this amount using the specified query strategy object. * <p> * Implementations must ensure that no observable state is altered when this read-only method is * invoked. * * @param <R> the type of the result * @param query the query to invoke, not null * @return the query result, null may be returned (defined by the query) */ default <R> R query(MonetaryQuery<R> query){ return query.queryFrom(this); }
@Override public <R> R query(MonetaryQuery<R> query) { Objects.requireNonNull(query); try { return query.queryFrom(this); } catch (MonetaryException e) { throw e; } catch (Exception e) { throw new MonetaryException("Query failed: " + query, e); } }
@Override public <T> T query(MonetaryQuery<T> query) { Objects.requireNonNull(query); try { return query.queryFrom(this); } catch (MonetaryException | ArithmeticException e) { throw e; } catch (Exception e) { throw new MonetaryException("Query failed: " + query, e); } }
@Override public <R> R query(MonetaryQuery<R> query) { Objects.requireNonNull(query); try { return query.queryFrom(this); } catch (MonetaryException | ArithmeticException e) { throw e; } catch (Exception e) { throw new MonetaryException("Query failed: " + query, e); } }
@Override protected Object[] toConvertedColumns(MonetaryAmount value) { return new Object[] { value.getCurrency(), MonetaryQueries.extractMajorPart().queryFrom(value).longValue() }; }
@Override protected Object[] toConvertedColumns(MonetaryAmount value) { return new Object[] { value.getCurrency(), MonetaryQueries.extractMajorPart().queryFrom(value).longValue() }; }
@Override public Long toNonNullValue(MonetaryAmount value) { if (!currencyUnit.equals(value.getCurrency())) { throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrency()); } return MonetaryQueries.extractMajorPart().queryFrom(value).longValue(); }
@Override public Long toNonNullValue(MonetaryAmount value) { if (!currencyUnit.equals(value.getCurrency())) { throw new IllegalStateException("Expected currency " + currencyUnit.getCurrencyCode() + " but was " + value.getCurrency()); } return MonetaryQueries.extractMajorPart().queryFrom(value).longValue(); }