/*******************************************************************************
* Copyright (c) 2011 Michel DAVID mimah35-at-gmail.com
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
******************************************************************************/
package fr.gotorennes.domain;
import java.util.Calendar;
import android.content.res.Resources;
import android.database.Cursor;
import android.os.Parcel;
import android.os.Parcelable;
import fr.gotorennes.R;
public class Arret implements Parcelable {
public long idTrajet;
public long idStation;
public int arrivee;
public int depart;
public int sequence;
public Arret(Cursor cursor) {
idTrajet = cursor.getLong(cursor.getColumnIndex("idTrajet"));
idStation = cursor.getLong(cursor.getColumnIndex("idStation"));
arrivee = cursor.getInt(cursor.getColumnIndex("arrivee"));
depart = cursor.getInt(cursor.getColumnIndex("depart"));
sequence = cursor.getInt(cursor.getColumnIndex("sequence"));
}
public Arret(Parcel in) {
idTrajet = in.readLong();
idStation = in.readLong();
arrivee = in.readInt();
depart = in.readInt();
sequence = in.readInt();
}
public int getHeuresDepart(boolean nuit) {
return depart / 60;
}
public String getDepart() {
return getTime(depart);
}
public String getArrivee() {
return getTime(arrivee);
}
public int getHeuresArrivee(boolean nuit) {
return arrivee / 60;
}
public int getMinutesDepart() {
return depart % 60;
}
public int getMinutesArrivee() {
return arrivee % 60;
}
public int getMinutesAvantDepart(boolean nuit) {
Calendar calendar = Calendar.getInstance();
int now = getHours(calendar, nuit) * 60 + calendar.get(Calendar.MINUTE);
return depart - now;
}
public String getDureeAvantDepart(boolean nuit, Resources resources) {
int delta = getMinutesAvantDepart(nuit);
StringBuffer buffer = new StringBuffer();
if (delta >= 60) {
int hours = delta / 60;
buffer.append(hours);
buffer.append(hours > 1 ? resources.getString(R.string.heures) : resources.getString(R.string.heure));
int minutes = delta % 60;
buffer.append(minutes < 10 ? "0" + minutes : minutes);
} else {
buffer.append(delta);
buffer.append(delta > 1 ? resources.getString(R.string.minutes) : resources.getString(R.string.minute));
}
return buffer.toString();
}
public static String getTime(int time) {
int hours = (time / 60) % 24;
int minutes = time % 60;
return (hours < 10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes);
}
public static String getTimeInMinutes(boolean nuit) {
return getTimeInMinutes(Calendar.getInstance(), nuit);
}
public static String getTimeInMinutes(Calendar calendar, boolean nuit) {
return String.valueOf(getTime(calendar, nuit));
}
public static int getTime(Calendar calendar, boolean nuit) {
int hours = getHours(calendar, nuit);
return hours * 60 + calendar.get(Calendar.MINUTE);
}
public static int getHours(Calendar calendar, boolean nuit) {
int hours = calendar.get(Calendar.HOUR_OF_DAY);
return getHours(hours, nuit);
}
protected static int getHours(int hours, boolean nuit) {
if (!nuit && hours < 4)
hours += 24;
return hours;
}
@Override
public String toString() {
return getTime(depart);
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeLong(idTrajet);
out.writeLong(idStation);
out.writeInt(arrivee);
out.writeInt(depart);
out.writeInt(sequence);
}
public static final Parcelable.Creator<Arret> CREATOR = new Parcelable.Creator<Arret>() {
@Override
public Arret createFromParcel(Parcel in) {
return new Arret(in);
}
@Override
public Arret[] newArray(int size) {
return new Arret[size];
}
};
}