Skip to content

Instantly share code, notes, and snippets.

@andrewmunn
Last active February 28, 2018 07:06
Show Gist options
  • Save andrewmunn/e5adca62f19d0929e19229e51dda980e to your computer and use it in GitHub Desktop.
Save andrewmunn/e5adca62f19d0929e19229e51dda980e to your computer and use it in GitHub Desktop.
PostalAddress in Java using AutoValue
/**
* Encapsulates a postal address.
*/
@AutoValue
public abstract class PostalAddress {
public static Builder builder() {
return new AutoValue_PostalAddress.Builder();
}
public @Nullable abstract String getName();
public abstract String getStreet1();
public @Nullable abstract String getStreet2();
public @Nullable abstract String getStreet3();
public @Nullable abstract String getStreet4();
public abstract String getCity();
public abstract String getState();
public abstract String getPostalCode();
public abstract Builder toBuilder();
public String toSingleLineStringForDisplay() {
StringBuilder sb = new StringBuilder();
sb.append(getStreet1()).append(", ");
if (getStreet2() != null) {
sb.append(getStreet2()).append(", ");
}
if (getStreet3() != null) {
sb.append(getStreet3()).append(", ");
}
if (getStreet4() != null) {
sb.append(getStreet4()).append(", ");
}
sb.append(getCity()).append(", ")
.append(getState()).append(" ")
.append(getPostalCode());
return sb.toString();
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setName(@Nullable String value);
public abstract Builder setStreet1(String value);
public abstract Builder setStreet2(@Nullable String value);
public abstract Builder setStreet3(@Nullable String value);
public abstract Builder setStreet4(@Nullable String value);
public abstract Builder setCity(String value);
public abstract Builder setState(String value);
public abstract Builder setPostalCode(String value);
abstract PostalAddress build();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment