mirror of https://github.com/tasks/tasks
encouragement service
parent
0fdc38c7cd
commit
bdf3138ef1
@ -0,0 +1,84 @@
|
|||||||
|
package com.todoroo.astrid.widget;
|
||||||
|
|
||||||
|
import java.util.Date;
|
||||||
|
|
||||||
|
import com.timsu.astrid.R;
|
||||||
|
import com.todoroo.andlib.service.Autowired;
|
||||||
|
import com.todoroo.andlib.service.ContextManager;
|
||||||
|
import com.todoroo.andlib.service.DependencyInjectionService;
|
||||||
|
import com.todoroo.andlib.sql.QueryTemplate;
|
||||||
|
import com.todoroo.astrid.api.Filter;
|
||||||
|
import com.todoroo.astrid.dao.TaskDao.TaskCriteria;
|
||||||
|
import com.todoroo.astrid.service.TaskService;
|
||||||
|
|
||||||
|
public class EncouragementService {
|
||||||
|
|
||||||
|
@Autowired private TaskService taskService;
|
||||||
|
|
||||||
|
private final EncouragementProvider[] providers = new EncouragementProvider[] {
|
||||||
|
new ResourceEncouragementProvider(),
|
||||||
|
new TimeOfDayEncouragementProvider(),
|
||||||
|
new CompletionCountEncouragementProvider()
|
||||||
|
};
|
||||||
|
|
||||||
|
public EncouragementService() {
|
||||||
|
DependencyInjectionService.getInstance().inject(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getEncouragement() {
|
||||||
|
int index = (int)Math.floor(Math.random() * providers.length);
|
||||||
|
return providers[index].getEncouragement();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public interface EncouragementProvider {
|
||||||
|
public String getEncouragement();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class ResourceEncouragementProvider implements EncouragementProvider {
|
||||||
|
@Override
|
||||||
|
public String getEncouragement() {
|
||||||
|
String[] encouragements = ContextManager.getResources().getStringArray(R.array.PPW_encouragements);
|
||||||
|
int encouragementIdx = (int)Math.floor(Math.random() * encouragements.length);
|
||||||
|
return encouragements[encouragementIdx];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class TimeOfDayEncouragementProvider implements EncouragementProvider {
|
||||||
|
private static int GOOD_MORNING = 0;
|
||||||
|
private static int GOOD_AFTERNOON = 1;
|
||||||
|
private static int GOOD_EVENING = 2;
|
||||||
|
private static int LATE_NIGHT = 3;
|
||||||
|
@Override
|
||||||
|
public String getEncouragement() {
|
||||||
|
String[] encouragements = ContextManager.getResources().
|
||||||
|
getStringArray(R.array.PPW_encouragements_tod);
|
||||||
|
|
||||||
|
int index = (int)Math.floor(Math.random() * (encouragements.length / 4));
|
||||||
|
|
||||||
|
int hour = new Date().getHours();
|
||||||
|
if(hour >= 6 && hour < 12)
|
||||||
|
return encouragements[4*index + GOOD_MORNING];
|
||||||
|
else if(hour >= 12 && hour < 18)
|
||||||
|
return encouragements[4*index + GOOD_AFTERNOON];
|
||||||
|
else if(hour >= 18 && hour < 23)
|
||||||
|
return encouragements[4*index + GOOD_EVENING];
|
||||||
|
|
||||||
|
return encouragements[4*index + LATE_NIGHT];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class CompletionCountEncouragementProvider implements EncouragementProvider {
|
||||||
|
@Override
|
||||||
|
public String getEncouragement() {
|
||||||
|
Filter filter = new Filter(null, null, new QueryTemplate().where(TaskCriteria.completed()), null);
|
||||||
|
int completed = taskService.countTasks(filter);
|
||||||
|
|
||||||
|
String[] encouragements = ContextManager.getResources().
|
||||||
|
getStringArray(R.array.PPW_encouragements_completed);
|
||||||
|
int index = (int)Math.floor(Math.random() * (encouragements.length));
|
||||||
|
|
||||||
|
return String.format(encouragements[index], completed);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue