/
Time.java
172 lines (144 loc) · 5.05 KB
/
Time.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.apache.flink.api.common.time;
import org.apache.flink.annotation.PublicEvolving;
import javax.annotation.Nullable;
import java.io.Serializable;
import java.time.Duration;
import java.util.Objects;
import java.util.concurrent.TimeUnit;
import static org.apache.flink.util.Preconditions.checkNotNull;
/**
* The definition of a time interval. Similar to a simpler version of {@link java.time.Duration}.
*
* @deprecated Use {@link Duration}
*/
@Deprecated
@PublicEvolving
public final class Time implements Serializable {
private static final long serialVersionUID = -350254188460915999L;
@Nullable
public static Duration toDuration(@Nullable Time time) {
return time != null ? time.toDuration() : null;
}
/** The time unit for this policy's time interval. */
private final TimeUnit unit;
/** The size of the windows generated by this policy. */
private final long size;
/** Instantiation only via factory method. */
private Time(long size, TimeUnit unit) {
this.unit = checkNotNull(unit, "time unit may not be null");
this.size = size;
}
// ------------------------------------------------------------------------
// Properties
// ------------------------------------------------------------------------
/**
* Gets the time unit for this policy's time interval.
*
* @return The time unit for this policy's time interval.
*/
public TimeUnit getUnit() {
return unit;
}
/**
* Gets the length of this policy's time interval.
*
* @return The length of this policy's time interval.
*/
public long getSize() {
return size;
}
public Duration toDuration() {
return Duration.ofMillis(this.toMilliseconds());
}
/**
* Converts the time interval to milliseconds.
*
* @return The time interval in milliseconds.
*/
public long toMilliseconds() {
return unit.toMillis(size);
}
/**
* Converts the time interval to seconds.
*
* @return The time interval in seconds.
*/
public long toSeconds() {
return unit.toSeconds(size);
}
@Override
public String toString() {
return toMilliseconds() + " ms";
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || getClass() != o.getClass()) {
return false;
}
Time time = (Time) o;
return toMilliseconds() == time.toMilliseconds();
}
@Override
public int hashCode() {
return Objects.hash(toMilliseconds());
}
// ------------------------------------------------------------------------
// Factory
// ------------------------------------------------------------------------
/**
* Creates a new {@link Time} of the given duration and {@link TimeUnit}.
*
* @param size The duration of time.
* @param unit The unit of time of the duration, for example {@code TimeUnit.SECONDS}.
* @return The time policy.
*/
public static Time of(long size, TimeUnit unit) {
return new Time(size, unit);
}
/** Creates a new {@link Time} that represents the given number of milliseconds. */
public static Time milliseconds(long milliseconds) {
return of(milliseconds, TimeUnit.MILLISECONDS);
}
/** Creates a new {@link Time} that represents the given number of seconds. */
public static Time seconds(long seconds) {
return of(seconds, TimeUnit.SECONDS);
}
/** Creates a new {@link Time} that represents the given number of minutes. */
public static Time minutes(long minutes) {
return of(minutes, TimeUnit.MINUTES);
}
/** Creates a new {@link Time} that represents the given number of hours. */
public static Time hours(long hours) {
return of(hours, TimeUnit.HOURS);
}
/** Creates a new {@link Time} that represents the given number of days. */
public static Time days(long days) {
return of(days, TimeUnit.DAYS);
}
/**
* Creates a new {@link Time} that represents the number of milliseconds in the given duration.
*/
public static Time fromDuration(Duration duration) {
return milliseconds(duration.toMillis());
}
}