package li.klass.fhem.service.graph; import android.content.Context; import android.preference.PreferenceManager; import org.joda.time.DateTime; import org.joda.time.Interval; import javax.inject.Inject; import li.klass.fhem.service.Command; import li.klass.fhem.service.CommandExecutionService; import li.klass.fhem.util.DateFormatUtil; class GraphIntervalProvider { private CommandExecutionService commandExecutionService; private static final int CURRENT_DAY_TIMESPAN = -1; @Inject public GraphIntervalProvider(CommandExecutionService commandExecutionService) { this.commandExecutionService = commandExecutionService; } public Interval getIntervalFor(DateTime startDate, DateTime endDate, Context context) { if (startDate == null || endDate == null) { return getDefaultInterval(context); } return new Interval(startDate, endDate); } private Interval getDefaultInterval(Context context) { String result = commandExecutionService.executeSync(new Command("{{ TimeNow() }}"), context); if (result == null) { return getIntervalForTimespan(context, DateTime.now()); } return getIntervalForTimespan(context, DateFormatUtil.FHEM_DATE_FORMAT.parseDateTime(result)); } private Interval getIntervalForTimespan(Context context, DateTime endDate) { int hoursToSubtract = getChartingDefaultTimespan(context); if (hoursToSubtract == CURRENT_DAY_TIMESPAN) { hoursToSubtract = 24; } return new Interval(endDate.minusHours(hoursToSubtract), endDate); } private int getChartingDefaultTimespan(Context context) { String timeSpan = PreferenceManager.getDefaultSharedPreferences(context).getString("GRAPH_DEFAULT_TIMESPAN", "24"); return Integer.valueOf(timeSpan.trim()); } }