/** * Construct a modifiable instance of {@code FooBarBaz}. * @return A new modifiable instance */ public static ModifiableFooBarBaz create() { return new ModifiableFooBarBaz(); }
/** * @return value of {@code id} attribute */ @Override public final int id() { if (!idIsSet()) { checkRequiredAttributes(); } return id; }
/** * This instance is equal to all instances of {@code ModifiableFooBarBaz} that have equal attribute values. * An uninitialized instance is equal only to itself. * @return {@code true} if {@code this} is equal to {@code another} instance */ @Override public boolean equals(@Nullable Object another) { if (this == another) return true; if (!(another instanceof ModifiableFooBarBaz)) return false; ModifiableFooBarBaz other = (ModifiableFooBarBaz) another; if (!isInitialized() || !other.isInitialized()) { return false; } return equalTo(other); }
private void checkRequiredAttributes() { if (!isInitialized()) { throw new IllegalStateException(formatRequiredAttributesMessage()); } }
/** * Generates a string representation of this {@code FooBarBaz}. * If uninitialized, some attribute values may appear as question marks. * @return A string representation */ @Override public String toString() { return MoreObjects.toStringHelper("ModifiableFooBarBaz") .add("id", idIsSet() ? id() : "?") .add("foo", foo()) .add("bar", bar()) .add("baz", baz()) .toString(); } }
@Test public void testModifiable() { h.execute("create table fbb (id serial, foo varchar, bar int, baz real)"); assertThat(h.createUpdate("insert into fbb (id, foo, bar, baz) values (:id, :foo, :bar, :baz)") .bindPojo(ModifiableFooBarBaz.create().setFoo("foo").setBar(42).setBaz(1.0)) .execute()) .isEqualTo(1); assertThat(h.createQuery("select * from fbb") .mapTo(ModifiableFooBarBaz.class) .findOnly()) .extracting("id", "foo", "bar", "baz") .containsExactly(1, Optional.of("foo"), OptionalInt.of(42), OptionalDouble.of(1.0)); assertThat(h.createQuery("select * from fbb") .mapTo(ImmutableFooBarBaz.class) .findOnly()) .extracting("id", "foo", "bar", "baz") // FIXME: https://github.com/joel-costigliola/assertj-core/pull/1360 .containsExactly(1, "foo", 42, 1.0); }
private String formatRequiredAttributesMessage() { List<String> attributes = new ArrayList<>(); if (!idIsSet()) attributes.add("id"); return "FooBarBaz in not initialized, some of the required attributes are not set " + attributes; }
/** * Converts to {@link ImmutableFooBarBaz ImmutableFooBarBaz}. * @return An immutable instance of FooBarBaz */ public final ImmutableFooBarBaz toImmutable() { checkRequiredAttributes(); return ImmutableFooBarBaz.copyOf(this); }