server side paging support for search results, asyncdataprovider for display search...
[pithos] / src / gr / ebs / gss / client / rest / resource / RestResource.java
1 /*
2  * Copyright 2009, 2010 Electronic Business Systems Ltd.
3  *
4  * This file is part of GSS.
5  *
6  * GSS is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * GSS is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with GSS.  If not, see <http://www.gnu.org/licenses/>.
18  */
19 package gr.ebs.gss.client.rest.resource;
20
21 import java.io.Serializable;
22
23 import com.google.gwt.json.client.JSONObject;
24 import com.google.gwt.user.client.ui.TreeItem;
25
26
27 /**
28  * @author kman
29  *
30  */
31 public abstract class RestResource implements Serializable{
32         String uri;
33
34         public RestResource(String aUri) {
35                 super();
36                 setUri(aUri);
37         }
38
39         /**
40          * Retrieve the uri.
41          *
42          * @return the uri
43          */
44         public String getUri() {
45                 return uri;
46         }
47
48         /**
49          * Modify the uri.
50          *
51          * @param aUri the path to set
52          */
53         public void setUri(String aUri) {
54                 uri = aUri;
55                 if (uri!=null) {
56                         // Remove any parameter part
57                         int qm = uri.indexOf('?');
58                         if (qm>=0) uri = uri.substring(0, qm);
59                 }
60         }
61
62         public abstract void createFromJSON(String text);
63
64         protected String unmarshallString(JSONObject obj, String key){
65                 if(obj.get(key) != null)
66                         if(obj.get(key).isString() != null)
67                                 return obj.get(key).isString().stringValue();
68                 return null;
69         }
70         
71         protected int unmarshallInt(JSONObject obj, String key){
72                 if(obj.get(key) != null)
73                         if(obj.get(key).isNumber() != null)
74                                 return (int) obj.get(key).isNumber().getValue();
75                 return -1;
76         }
77
78         protected boolean unmarshallBoolean(JSONObject obj, String key){
79                 if(obj.get(key) != null)
80                         if(obj.get(key).isBoolean() != null)
81                                 return obj.get(key).isBoolean().booleanValue();
82                 return false;
83         }
84
85         public static native String getDate(Long ms)/*-{
86                 return (new Date(ms)).toUTCString();
87         }-*/;
88
89         public abstract String getLastModifiedSince();
90
91         public String constructUri(@SuppressWarnings("unused") TreeItem treeItem, @SuppressWarnings("unused") String path){
92                 return "";
93         }
94
95         public String getName(){
96                 String[] names = uri.split("/");
97                 return names[names.length -1];
98         }
99 }