-
Notifications
You must be signed in to change notification settings - Fork 25
BookDetailActivityBundler
Madhu kiran edited this page Jan 15, 2016
·
1 revision
public class BookDetailActivityBundler {
public static Bundle saveState(BookDetailActivity bookDetailActivity, Bundle bundle) {
if(bundle == null) {
bundle = new Bundle();
}
bundle.putLong("id", bookDetailActivity.id);
if(bookDetailActivity.book != null) {
bundle.putString("book", bookDetailActivity.book);
}
if(bookDetailActivity.author != null) {
bundle.putString("author", bookDetailActivity.author);
}
return bundle;
}
public static void restoreState(BookDetailActivity bookDetailActivity, Bundle bundle) {
if(bundle == null) {
return;
}
bookDetailActivity.id = bundle.getLong("id", bookDetailActivity.id);
if(bundle.containsKey("book")) {
bookDetailActivity.book = bundle.getString("book");
}
if(bundle.containsKey("author")) {
bookDetailActivity.author = bundle.getString("author");
}
}
public static Builder build() {
return new Builder();
}
public static Parser parse(Bundle bundle) {
return new Parser(bundle);
}
public static Parser parse(Intent intent) {
if(intent == null) {
return new Parser(null);
}
return parse(intent.getExtras());
}
public static class Builder {
private Long id;
private String book;
private String author;
private Builder() {
}
public Builder id(long id) {
this.id = id;
return this;
}
public Builder book(String book) {
this.book = book;
return this;
}
public Builder author(String author) {
this.author = author;
return this;
}
public Bundle bundle() {
Bundle bundle = new Bundle();
if(id != null) {
bundle.putLong(Keys.ID, id);
}
if(book != null) {
bundle.putString(Keys.BOOK, book);
}
if(author != null) {
bundle.putString(Keys.AUTHOR, author);
}
return bundle;
}
public Intent intent(Context context) {
Intent intent = new Intent(context, BookDetailActivity.class);
intent.putExtras(bundle());
return intent;
}
public void start(Context context) {
context.startActivity(intent(context));
}
}
public static class Parser {
private Bundle bundle;
private Parser(Bundle bundle) {
this.bundle = bundle;
}
public boolean isNull() {
return bundle == null;
}
public boolean hasId() {
return !isNull() && bundle.containsKey(Keys.ID);
}
public long id(long defaultVal) {
if(isNull()) {
return defaultVal;
}
return bundle.getLong(Keys.ID, defaultVal);
}
public boolean hasBook() {
return !isNull() && bundle.containsKey(Keys.BOOK);
}
public String book() {
if(isNull()) {
return null;
}
return bundle.getString(Keys.BOOK);
}
public boolean hasAuthor() {
return !isNull() && bundle.containsKey(Keys.AUTHOR);
}
public String author() {
if(isNull()) {
return null;
}
return bundle.getString(Keys.AUTHOR);
}
public void into(BookDetailActivity bookDetailActivity) {
if(hasId()) {
bookDetailActivity.id = id(bookDetailActivity.id);
}
if(hasBook()) {
bookDetailActivity.book = book();
}
if(hasAuthor()) {
bookDetailActivity.author = author();
}
}
}
public interface Keys {
String ID = "id";
String BOOK = "book";
String AUTHOR = "author";
}
}