forked from google/gdata-java-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathThumbnail.java
More file actions
134 lines (115 loc) · 3.66 KB
/
Copy pathThumbnail.java
File metadata and controls
134 lines (115 loc) · 3.66 KB
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
/* Copyright (c) 2008 Google Inc.
*
* 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.google.api.gbase.client;
/**
* Class representing parsed information for one thumbnail: the size (in pixels)
* and the Url for accessing the image. This class is mutable through its
* {@link #setUrl(String)} and {@link #setSize(int, int)} methods.
*
*
*/
public final class Thumbnail {
/** Url pointing to the thumbnail. */
private String url;
/** Thumbnail width, expressed in pixels. Null if not set. */
private Integer width;
/** Thumbnail height, expressed in pixels. Null if not set. */
private Integer height;
/**
* Returns the Url pointing to the thumbnail image.
*/
public String getUrl() {
return url;
}
/**
* Sets the Url that should point to the thumbnail image.
*/
public void setUrl(String url) {
this.url = url;
}
/**
* Returns the image width (pixels). Use {@link #isSizeSpecified()} to check
* if this object contains valid size information.
*
* @return the width of the thumbnail, expressed in pixels
* @throws IllegalStateException if the thumbnail size information is not set
*/
public int getWidth() {
if (!isSizeSpecified()) {
throw new IllegalStateException("Size is not specified.");
}
return width;
}
/**
* Returns the image height (pixels). Use {@link #isSizeSpecified()} to check
* if this object contains valid size information.
*
* @return the height of the thumbnail, expressed in pixels
* @throws IllegalStateException if the thumbnail size information is not set
*/
public int getHeight() {
if (!isSizeSpecified()) {
throw new IllegalStateException("Size is not specified.");
}
return height;
}
/**
* Sets the thumbnail size.
*
* @param width the width of the thumbnail, expressed in pixels
* @param height the height of the thumbnail, expressed in pixels
*/
public void setSize(int width, int height) {
this.width = width;
this.height = height;
}
/**
* Returns {@code true} if the size was explicitly set, {@code false}
* otherwise.
*/
public boolean isSizeSpecified() {
return (width != null) && (height != null);
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj.getClass() != Thumbnail.class ) {
return false;
}
Thumbnail that = (Thumbnail) obj;
return equalsPossibleNulls(this.width, that.width)
&& equalsPossibleNulls(this.height, that.height)
&& equalsPossibleNulls(this.url, that.url);
}
@Override
public int hashCode() {
return hashCodePossibleNulls(width) * hashCodePossibleNulls(height) * 37
+ hashCodePossibleNulls(url)* 31;
}
@Override
public String toString() {
return new StringBuilder("Thumbnail: ")
.append(width).append("x").append(height)
.append(" ").append(url).toString();
}
private static final <T> boolean equalsPossibleNulls(T a, T b) {
return a == null ? b == null : a.equals(b);
}
private static final <T> int hashCodePossibleNulls(T a) {
return a == null ? 41 : a.hashCode();
}
}