Java tutorial
/* * Copyright (c) 2010-2014 Marand d.o.o. (www.marand.com) * * This file is part of Think!Med Clinical Medication Management. * * Think!Med Clinical Medication Management is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Think!Med Clinical Medication Management is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with Think!Med Clinical Medication Management. If not, see <http://www.gnu.org/licenses/>. */ package com.marand.thinkmed.medications; import org.joda.time.DateTime; import org.joda.time.Duration; /** * @author Mitja Lapajne */ public enum AdministrationStatusEnum { PLANNED, DUE, LATE, COMPLETED, COMPLETED_LATE, COMPLETED_EARLY, FAILED; public static AdministrationStatusEnum getFromTime(final DateTime planned, final DateTime completed, final DateTime when) { if (completed == null) { if (isAdministrationEarly(planned, when)) { return PLANNED; } if (isAdministrationLate(planned, when)) { return LATE; } return DUE; } else { if (isAdministrationEarly(planned, completed)) { return COMPLETED_EARLY; } if (isAdministrationLate(planned, completed)) { return COMPLETED_LATE; } return COMPLETED; } } private static boolean isAdministrationLate(final DateTime planned, final DateTime compare) { return getOffsetInMinutes(planned, compare) > 30; } private static boolean isAdministrationEarly(final DateTime planned, final DateTime compare) { return getOffsetInMinutes(planned, compare) < -30; } private static long getOffsetInMinutes(final DateTime planned, final DateTime compare) { return new Duration(planned, compare).getStandardMinutes(); } }