Implemented download (with the authentication passed as parameter):
[pithos] / web_client / src / gr / grnet / pithos / web / client / foldertree / Resource.java
1 /*
2  * Copyright 2011 GRNET S.A. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or
5  * without modification, are permitted provided that the following
6  * conditions are met:
7  *
8  *   1. Redistributions of source code must retain the above
9  *      copyright notice, this list of conditions and the following
10  *      disclaimer.
11  *
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.
16  *
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.
29  *
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.
34  */
35
36 package gr.grnet.pithos.web.client.foldertree;
37
38 import com.google.gwt.http.client.Response;
39 import com.google.gwt.i18n.client.DateTimeFormat;
40 import com.google.gwt.json.client.JSONArray;
41 import com.google.gwt.json.client.JSONNumber;
42 import com.google.gwt.json.client.JSONObject;
43 import com.google.gwt.json.client.JSONParser;
44 import com.google.gwt.json.client.JSONString;
45 import com.google.gwt.json.client.JSONValue;
46 import gr.grnet.pithos.web.client.rest.resource.FolderResource;
47 import java.util.Date;
48
49 public abstract class Resource {
50
51     protected static String unmarshallString(JSONObject obj, String key){
52         if(obj.get(key) != null) {
53             JSONString s = obj.get(key).isString();
54             if(s != null)
55                 return s.stringValue();
56         }
57         return null;
58     }
59
60     protected static int unmarshallInt(JSONObject obj, String key){
61         if(obj.get(key) != null)
62             if(obj.get(key).isNumber() != null)
63                 return (int) obj.get(key).isNumber().getValue();
64         return -1;
65     }
66
67     protected static long unmarshallLong(JSONObject obj, String key){
68         if(obj.get(key) != null) {
69             JSONNumber value = obj.get(key).isNumber();
70             if(value != null)
71                 return (long) value.doubleValue();
72         }
73         return -1;
74     }
75
76     protected static boolean unmarshallBoolean(JSONObject obj, String key){
77         if(obj.get(key) != null)
78             if(obj.get(key).isBoolean() != null)
79                 return obj.get(key).isBoolean().booleanValue();
80         return false;
81     }
82
83     protected static Date unmarshallDate(JSONObject obj, String key){
84         if(obj.get(key) != null) {
85             JSONString s = obj.get(key).isString();
86             if (s != null)
87                 return DateTimeFormat.getFormat("yyyy-MM-dd'T'HH:mm:ss").parse(s.stringValue());
88         }
89         return null;
90     }
91
92     public static native String getDate(Long ms)/*-{
93         return (new Date(ms)).toUTCString();
94     }-*/;
95
96     public abstract String getLastModifiedSince();
97
98     public static <T> T createFromResponse(Class<T> aClass, Response response, T result) {
99         if (aClass.equals(AccountResource.class)) {
100             result = (T) AccountResource.createFromResponse(response);
101         }
102         else if (aClass.equals(Folder.class)) {
103             result = (T) Folder.createFromResponse(response, (Folder) result);
104         }
105         else if (aClass.equals(File.class)) {
106             result = (T) File.createFromResponse(response, (File) result);
107         }
108         return result;
109     }
110 }