blob: 05db2cde264e4582e0abe34cd401da4cc755e1dc [file] [log] [blame]
/*
* Copyright (C) 2013 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.android.gallery3d.ingest;
import java.text.DateFormat;
import java.util.Calendar;
/**
* Represents a date (year, month, day)
*/
public class SimpleDate implements Comparable<SimpleDate> {
public int month; // MM
public int day; // DD
public int year; // YYYY
private long timestamp;
private String mCachedStringRepresentation;
public SimpleDate() {
}
public SimpleDate(long timestamp) {
setTimestamp(timestamp);
}
private static Calendar sCalendarInstance = Calendar.getInstance();
public void setTimestamp(long timestamp) {
synchronized (sCalendarInstance) {
// TODO find a more efficient way to convert a timestamp to a date?
sCalendarInstance.setTimeInMillis(timestamp);
this.day = sCalendarInstance.get(Calendar.DATE);
this.month = sCalendarInstance.get(Calendar.MONTH);
this.year = sCalendarInstance.get(Calendar.YEAR);
this.timestamp = timestamp;
mCachedStringRepresentation = DateFormat.getDateInstance(DateFormat.SHORT).format(timestamp);
}
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + day;
result = prime * result + month;
result = prime * result + year;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (!(obj instanceof SimpleDate))
return false;
SimpleDate other = (SimpleDate) obj;
if (year != other.year)
return false;
if (month != other.month)
return false;
if (day != other.day)
return false;
return true;
}
@Override
public int compareTo(SimpleDate other) {
int yearDiff = this.year - other.getYear();
if (yearDiff != 0)
return yearDiff;
else {
int monthDiff = this.month - other.getMonth();
if (monthDiff != 0)
return monthDiff;
else
return this.day - other.getDay();
}
}
public int getDay() {
return day;
}
public int getMonth() {
return month;
}
public int getYear() {
return year;
}
@Override
public String toString() {
if (mCachedStringRepresentation == null) {
mCachedStringRepresentation = DateFormat.getDateInstance(DateFormat.SHORT).format(timestamp);
}
return mCachedStringRepresentation;
}
}