package com.zhuinden.simplestackdemoexamplemvp.presentation.objects;
/**
* Created by Owner on 2017. 01. 25..
*/
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import com.google.auto.value.AutoValue;
import com.zhuinden.simplestackdemoexamplemvp.util.Strings;
import java.util.UUID;
/**
* Immutable model class for a Task.
*/
@AutoValue
public abstract class Task {
@NonNull
public abstract String id();
@Nullable
public abstract String title();
@Nullable
public abstract String description();
public abstract boolean completed();
public static Task createNewActiveTask(String title, String description) {
return createCompletedTaskWithId(title, description, UUID.randomUUID().toString(), false);
}
public static Task createActiveTaskWithId(String title, String description, String id) {
return createCompletedTaskWithId(title, description, id, false);
}
public static Task createCompletedTask(String title, String description, boolean completed) {
return createCompletedTaskWithId(title, description, UUID.randomUUID().toString(), completed);
}
public static Task createCompletedTaskWithId(String title, String description, String id, boolean completed) {
return new AutoValue_Task.Builder().setId(id).setTitle(title).setDescription(description).setCompleted(completed).build();
}
public Builder toBuilder() {
return new AutoValue_Task.Builder(this);
}
@Nullable
public String getTitleForList() {
if(!Strings.isNullOrEmpty(title())) {
return title();
} else {
return description();
}
}
public boolean isCompleted() {
return completed();
}
public boolean isActive() {
return !completed();
}
public boolean isEmpty() {
return Strings.isNullOrEmpty(title()) && Strings.isNullOrEmpty(description());
}
@AutoValue.Builder
public abstract static class Builder {
public abstract Builder setId(String id);
public abstract Builder setTitle(String title);
public abstract Builder setDescription(String description);
public abstract Builder setCompleted(boolean completed);
public abstract Task build();
}
}