Files
android_development/samples/browseable/DirectBoot/src/com.example.android.directboot/alarms/Alarm.java
Trevor Johns 8a66f8cbc0 Update sample prebults for 2017-02 release (nyc-mr1-dev)
developers/samples/android commit: 6f3586bc08b96d14d8f1315f4839ac59aa39798c

Change-Id: I08c9af2d58f1b3314eba807048dc05175a58e164
2017-02-09 00:45:30 -08:00

144 lines
4.0 KiB
Java

/*
* Copyright 2016 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.example.android.directboot.alarms;
import org.json.JSONException;
import org.json.JSONObject;
import android.support.annotation.NonNull;
import java.util.Calendar;
import java.util.Objects;
/**
* Class represents a single alarm.
*/
public class Alarm implements Comparable<Alarm> {
public int id;
public int month;
public int date;
/** Integer as a 24-hour format */
public int hour;
public int minute;
public Alarm(int id, int month, int date, int hour, int minute) {
this.id = id;
this.month = month;
this.date = date;
this.hour = hour;
this.minute = minute;
}
public Alarm() {
}
/**
* Serialize the instance as a JSON String.
*
* @return serialized JSON String.
*/
public String toJson() {
JSONObject jsonObject = new JSONObject();
try {
jsonObject.put("id", id);
jsonObject.put("month", month);
jsonObject.put("date", date);
jsonObject.put("hour", hour);
jsonObject.put("minute", minute);
} catch (JSONException e) {
throw new IllegalStateException("Failed to convert the object to JSON");
}
return jsonObject.toString();
}
/**
* Parses a Json string to an {@link Alarm} instance.
*
* @param string The String representation of an alarm
* @return an instance of {@link Alarm}
*/
public static Alarm fromJson(String string) {
JSONObject jsonObject;
Alarm alarm = new Alarm();
try {
jsonObject = new JSONObject(string);
alarm.id = jsonObject.getInt("id");
alarm.month = jsonObject.getInt("month");
alarm.date = jsonObject.getInt("date");
alarm.hour = jsonObject.getInt("hour");
alarm.minute = jsonObject.getInt("minute");
} catch (JSONException e) {
throw new IllegalArgumentException("Failed to parse the String: " + string);
}
return alarm;
}
@Override
public String toString() {
return "Alarm{" +
"id=" + id +
", month=" + month +
", date=" + date +
", hour=" + hour +
", minute=" + minute +
'}';
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Alarm)) {
return false;
}
Alarm alarm = (Alarm) o;
return id == alarm.id &&
month == alarm.month &&
date == alarm.date &&
hour == alarm.hour &&
minute == alarm.minute;
}
@Override
public int hashCode() {
return Objects.hash(id, month, date, hour, minute);
}
@Override
public int compareTo(@NonNull Alarm other) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.MONTH, month);
calendar.set(Calendar.DATE, date);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
Calendar otherCal = Calendar.getInstance();
otherCal.set(Calendar.MONTH, other.month);
otherCal.set(Calendar.DATE, other.date);
otherCal.set(Calendar.HOUR_OF_DAY, other.hour);
otherCal.set(Calendar.MINUTE, other.minute);
return calendar.compareTo(otherCal);
}
}