package com.novoda.demo.tddpersistence;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.novoda.demo.tddpersistence.db.TaskReaderDbHelper;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;
public class MainActivity extends AppCompatActivity {
private static String TAG = "MainActivity.class"
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
private TaskRepository taskRepository;
private EditText taskEditTitle;
private EditText taskEditDate;
private LinearLayout tasksList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
taskRepository = getRepository();
initLayout();
}
private void initLayout() {
findViewById(R.id.task_add).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
onAddTask();
refreshUI();
}
});
taskEditTitle = ((EditText) findViewById(R.id.task_edit_title));
taskEditDate = ((EditText) findViewById(R.id.task_edit_date));
tasksList = (LinearLayout) findViewById(R.id.task_list);
updateTaskList();
}
private void onAddTask() {
Task task = createTask();
taskRepository.persistTask(task);
}
private Task createTask() {
String strDate = taskEditDate.getText().toString();
Date date;
try {
date = dateFormat.parse(strDate);
} catch (ParseException ex) {
date = null;
Log.e(TAG, "A problem occur during the parsing of the string strDate: "+ strDate, ex);
}
return new Task(taskEditTitle.getText().toString(), date);
}
private void refreshUI() {
updateTaskList();
taskEditTitle.setText("");
taskEditDate.setText("");
}
private void updateTaskList() {
tasksList.removeAllViews();
List<Task> tasks = taskRepository.allTasks();
for (Task task : tasks) {
View taskLayout = LayoutInflater.from(this).inflate(R.layout.task, null);
TextView taskTitle = (TextView) taskLayout.findViewById(R.id.task_title);
TextView taskDate = (TextView) taskLayout.findViewById(R.id.task_date);
taskTitle.setText(task.getName());
taskDate.setText(dateFormat.format(task.getExpiration()));
tasksList.addView(taskLayout);
}
}
private TaskRepository getRepository() {
TaskReaderDbHelper taskReaderDbHelper = new TaskReaderDbHelper(this);
TaskStorage taskStorage = new TaskDBStorage(taskReaderDbHelper);
TaskMapper taskMapper = new TaskMapper();
return new TaskRepository(taskMapper, taskStorage);
}
}