2 * Copyright 2011 GRNET S.A. All rights reserved.
4 * Redistribution and use in source and binary forms, with or
5 * without modification, are permitted provided that the following
8 * 1. Redistributions of source code must retain the above
9 * copyright notice, this list of conditions and the following
12 * 2. Redistributions in binary form must reproduce the above
13 * copyright notice, this list of conditions and the following
14 * disclaimer in the documentation and/or other materials
15 * provided with the distribution.
17 * THIS SOFTWARE IS PROVIDED BY GRNET S.A. ``AS IS'' AND ANY EXPRESS
18 * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
20 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRNET S.A OR
21 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
24 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
25 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
27 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28 * POSSIBILITY OF SUCH DAMAGE.
30 * The views and conclusions contained in the software and
31 * documentation are those of the authors and should not be
32 * interpreted as representing official policies, either expressed
33 * or implied, of GRNET S.A.
36 package gr.grnet.pithos.web.client.foldertree;
38 import com.google.gwt.http.client.Header;
39 import com.google.gwt.http.client.Response;
40 import com.google.gwt.i18n.client.DateTimeFormat;
41 import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
42 import com.google.gwt.i18n.client.NumberFormat;
43 import com.google.gwt.json.client.JSONArray;
44 import com.google.gwt.json.client.JSONObject;
45 import com.google.gwt.json.client.JSONParser;
46 import com.google.gwt.json.client.JSONValue;
47 import gr.grnet.pithos.web.client.rest.resource.RestResource;
48 import java.util.ArrayList;
49 import java.util.Date;
50 import java.util.LinkedHashSet;
51 import java.util.List;
55 * Created by IntelliJ IDEA. User: chstath Date: 5/19/11 Time: 2:55 PM To change this template use File | Settings |
58 public class AccountResource extends Resource {
60 private long numberOfContainers = 0;
62 private long numberOfObjects = 0;
64 private long bytesUsed = 0;
66 private long bytesRemaining = 0;
68 private Date lastLogin = null;
70 private Date lastModified = null;
72 private Set<Folder> containers = new LinkedHashSet<Folder>();
74 private Date currentLogin = null;
76 public long getBytesRemaining() {
77 return bytesRemaining;
80 public void setBytesRemaining(long bytesRemaining) {
81 this.bytesRemaining = bytesRemaining;
84 public long getBytesUsed() {
88 public void setBytesUsed(long bytesUsed) {
89 this.bytesUsed = bytesUsed;
92 public Date getLastLogin() {
96 public void setLastLogin(Date lastLogin) {
97 this.lastLogin = lastLogin;
100 public Date getLastModified() {
104 public void setLastModified(Date lastModified) {
105 this.lastModified = lastModified;
108 public long getNumberOfContainers() {
109 return numberOfContainers;
112 public void setNumberOfContainers(long numberOfContainers) {
113 this.numberOfContainers = numberOfContainers;
116 public long getNumberOfObjects() {
117 return numberOfObjects;
120 public void setNumberOfObjects(long numberOfObjects) {
121 this.numberOfObjects = numberOfObjects;
125 public String getLastModifiedSince() {
129 public Set<Folder> getContainers() {
133 public Date getCurrentLogin() {
137 public void setCurrentLogin(Date currentLogin) {
138 this.currentLogin = currentLogin;
141 public void populate(Response response) {
142 String header = response.getHeader("X-Account-Container-Count");
144 numberOfContainers = Long.valueOf(header);
146 header = response.getHeader("X-Account-Object-Count");
148 numberOfObjects = Long.valueOf(header);
150 header = response.getHeader("X-Account-Bytes-Used");
152 bytesUsed = Long.valueOf(header);
154 header = response.getHeader("X-Account-Bytes-Remaining");
156 bytesRemaining = Long.valueOf(header);
158 DateTimeFormat df = DateTimeFormat.getFormat(PredefinedFormat.RFC_2822);
159 header = response.getHeader("X-Account-Last-Login");
161 lastLogin = df.parse(header);
163 header = response.getHeader("Last-Modified");
165 lastModified = df.parse(header);
167 JSONValue json = JSONParser.parseStrict(response.getText());
168 JSONArray array = json.isArray();
170 for (int i=0; i<array.size(); i++) {
171 JSONObject o = array.get(i).isObject();
173 Folder f = new Folder();
174 f.populate(null, o, null);
181 public static AccountResource createFromResponse(Response response) {
182 AccountResource a = new AccountResource();
183 a.populate(response);
187 private String getSize(Long size, Double division){
188 Double res = Double.valueOf(size.toString())/division;
189 NumberFormat nf = NumberFormat.getFormat("######.#");
190 return nf.format(res);
193 public String getFileSizeAsString() {
194 if (bytesUsed < 1024)
195 return String.valueOf(bytesUsed) + " B";
196 else if (bytesUsed < 1024*1024)
197 return getSize(bytesUsed, 1024D) + " KB";
198 else if (bytesUsed < 1024*1024*1024)
199 return getSize(bytesUsed,(1024D*1024D)) + " MB";
200 return getSize(bytesUsed , (1024D*1024D*1024D)) + " GB";
203 public String getQuotaLeftAsString() {
204 if (bytesRemaining < 1024)
205 return String.valueOf(bytesRemaining) + " B";
206 else if (bytesRemaining < 1024 * 1024)
207 return getSize(bytesRemaining, 1024D) + " KB";
208 else if (bytesRemaining < 1024 * 1024 * 1024)
209 return getSize(bytesRemaining,(1024D * 1024D)) + " MB";
210 return getSize(bytesRemaining , (1024D * 1024D * 1024D)) + " GB";