source: contrib/MailArchiver/sources/vendor/mime4j/custom/dom/src/main/java/org/apache/james/mime4j/dom/datetime/DateTime.java @ 6785

Revision 6785, 5.0 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado codigo do MailArchiver?. Documentação na subpasta DOCS.

Line 
1/****************************************************************
2 * Licensed to the Apache Software Foundation (ASF) under one   *
3 * or more contributor license agreements.  See the NOTICE file *
4 * distributed with this work for additional information        *
5 * regarding copyright ownership.  The ASF licenses this file   *
6 * to you under the Apache License, Version 2.0 (the            *
7 * "License"); you may not use this file except in compliance   *
8 * with the License.  You may obtain a copy of the License at   *
9 *                                                              *
10 *   http://www.apache.org/licenses/LICENSE-2.0                 *
11 *                                                              *
12 * Unless required by applicable law or agreed to in writing,   *
13 * software distributed under the License is distributed on an  *
14 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
15 * KIND, either express or implied.  See the License for the    *
16 * specific language governing permissions and limitations      *
17 * under the License.                                           *
18 ****************************************************************/
19
20package org.apache.james.mime4j.dom.datetime;
21
22import java.util.Calendar;
23import java.util.Date;
24import java.util.GregorianCalendar;
25import java.util.TimeZone;
26
27public class DateTime {
28    private final Date date;
29    private final int year;
30    private final int month;
31    private final int day;
32    private final int hour;
33    private final int minute;
34    private final int second;
35    private final int timeZone;
36
37    public DateTime(String yearString, int month, int day, int hour, int minute, int second, int timeZone) {
38        this.year = convertToYear(yearString);
39        this.date = convertToDate(year, month, day, hour, minute, second, timeZone);
40        this.month = month;
41        this.day = day;
42        this.hour = hour;
43        this.minute = minute;
44        this.second = second;
45        this.timeZone = timeZone;
46    }
47
48    private int convertToYear(String yearString) {
49        int year = Integer.parseInt(yearString);
50        switch (yearString.length()) {
51            case 1:
52            case 2:
53                if (year >= 0 && year < 50)
54                    return 2000 + year;
55                else
56                    return 1900 + year;
57            case 3:
58                return 1900 + year;
59            default:
60                return year;
61        }
62    }
63
64    public static Date convertToDate(int year, int month, int day, int hour, int minute, int second, int timeZone) {
65        Calendar c = new GregorianCalendar(TimeZone.getTimeZone("GMT+0"));
66        c.set(year, month - 1, day, hour, minute, second);
67        c.set(Calendar.MILLISECOND, 0);
68
69        if (timeZone != Integer.MIN_VALUE) {
70            int minutes = ((timeZone / 100) * 60) + timeZone % 100;
71            c.add(Calendar.MINUTE, -1 * minutes);
72        }
73
74        return c.getTime();
75    }
76
77    public Date getDate() {
78        return date;
79    }
80
81    public int getYear() {
82        return year;
83    }
84
85    public int getMonth() {
86        return month;
87    }
88
89    public int getDay() {
90        return day;
91    }
92
93    public int getHour() {
94        return hour;
95    }
96
97    public int getMinute() {
98        return minute;
99    }
100
101    public int getSecond() {
102        return second;
103    }
104
105    public int getTimeZone() {
106        return timeZone;
107    }
108
109    public void print() {
110        System.out.println(toString());
111    }
112
113    @Override
114    public String toString() {
115        return getYear() + " " + getMonth() + " " + getDay() + "; " + getHour() + " " + getMinute() + " " + getSecond() + " " + getTimeZone();
116    }
117
118    @Override
119    public int hashCode() {
120        final int PRIME = 31;
121        int result = 1;
122        result = PRIME * result + ((date == null) ? 0 : date.hashCode());
123        result = PRIME * result + day;
124        result = PRIME * result + hour;
125        result = PRIME * result + minute;
126        result = PRIME * result + month;
127        result = PRIME * result + second;
128        result = PRIME * result + timeZone;
129        result = PRIME * result + year;
130        return result;
131    }
132
133    @Override
134    public boolean equals(Object obj) {
135        if (this == obj)
136            return true;
137        if (obj == null)
138            return false;
139        if (getClass() != obj.getClass())
140            return false;
141        final DateTime other = (DateTime) obj;
142        if (date == null) {
143            if (other.date != null)
144                return false;
145        } else if (!date.equals(other.date))
146            return false;
147        if (day != other.day)
148            return false;
149        if (hour != other.hour)
150            return false;
151        if (minute != other.minute)
152            return false;
153        if (month != other.month)
154            return false;
155        if (second != other.second)
156            return false;
157        if (timeZone != other.timeZone)
158            return false;
159        if (year != other.year)
160            return false;
161        return true;
162    }
163
164   
165}
Note: See TracBrowser for help on using the repository browser.