forked from google/gdata-java-client
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSpreadsheetEntry.java
More file actions
173 lines (152 loc) · 4.92 KB
/
Copy pathSpreadsheetEntry.java
File metadata and controls
173 lines (152 loc) · 4.92 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
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
173
/* 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.gdata.data.spreadsheet;
import com.google.gdata.client.spreadsheet.SpreadsheetService;
import com.google.gdata.data.BaseEntry;
import com.google.gdata.data.Category;
import com.google.gdata.data.ExtensionProfile;
import com.google.gdata.data.Kind;
import com.google.gdata.data.Link;
import com.google.gdata.data.OutOfLineContent;
import com.google.gdata.util.ServiceException;
import com.google.gdata.util.Version;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.List;
/**
* One spreadsheet, when listing all spreadsheets you have access to.
*
*
*/
@Kind.Term(SpreadsheetEntry.KIND)
public class SpreadsheetEntry extends BaseEntry<SpreadsheetEntry> {
/**
* Kind category term used to label the entries that contains spreadsheet
* data.
*/
public static final String KIND = Namespaces.gSpreadPrefix + "spreadsheet";
/**
* Category used to label entries that contain spreadsheet data.
*/
public static final Category CATEGORY =
new Category(Namespaces.gSpread, KIND);
/**
* Constructs a new uninitialized entry, to be populated by the
* GData parsers.
*/
public SpreadsheetEntry() {
getCategories().add(CATEGORY);
}
/**
* Constructs a new entry by doing a shallow copy from another BaseEntry
* instance.
*/
public SpreadsheetEntry(BaseEntry sourceEntry) {
super(sourceEntry);
getCategories().add(CATEGORY);
}
/**
* Gets the link with which you can open up the spreadsheet in a Web
* browser, the full Google Spreadsheets user interface.
*
* @return a link to open up the web browser with
*/
public Link getSpreadsheetLink() {
return super.getHtmlLink();
}
/**
* Gets the URL for this spreadsheet's worksheets feed.
*
* You can then create a query using this URL to query this worksheet's
* sheets.
*
*
* @return a URL to get a feed of worksheets
*/
public URL getWorksheetFeedUrl() {
try {
return new URL(getWorksheetFeedUrlString());
} catch(MalformedURLException e) {
throw new RuntimeException("Error in GData server", e);
}
}
/**
* Gets the URL for this spreadseet's worksheets feed as a string.
*
* <p>This checks for version compatibility also.
*
* and call that from here, just like in WorksheetEntry.
*
* @return a string representing the URL for the worksheets feed
*/
private String getWorksheetFeedUrlString() {
Version spreadsheetVersion = state.service.getProtocolVersion();
if (spreadsheetVersion.isCompatible(SpreadsheetService.Versions.V1)) {
Link feedLink = this.getLink(Namespaces.WORKSHEETS_LINK_REL,
Link.Type.ATOM);
return feedLink.getHref();
} else { // must be SpreadsheetService.Versions.V2; only 2 versions for now
return ((OutOfLineContent)(this.getContent())).getUri();
}
}
/**
* Gets all worksheet entries that are part of this spreadsheet.
*
* You must be online for this to work.
*
* @return the list of worksheet entries
*/
public List<WorksheetEntry> getWorksheets()
throws IOException, ServiceException {
WorksheetFeed feed = state.service.getFeed(getWorksheetFeedUrl(),
WorksheetFeed.class);
return feed.getEntries();
}
/**
* Gets the first worksheet in the spreadsheet.
*
* This is very useful if your spreadsheet only has one worksheet.
*
* @return the first worksheet
*/
public WorksheetEntry getDefaultWorksheet()
throws IOException, ServiceException {
String url = getWorksheetFeedUrlString() + "/default";
return state.service.getEntry(new URL(url), WorksheetEntry.class);
}
/**
* Gets the non-user-friendly key that is used to access the spreadsheet.
*
* This is the key that can be used to open the spreadsheet in a Web
* browser, such as, http://spreadsheets.google.com/ccc?key={key}.
*
* @return the Google Spreadsheets key, in "o10110101.1010101" format
*/
public String getKey() {
String result = state.id;
int position = result.lastIndexOf("/");
if (position > 0) {
result = result.substring(position + 1);
}
return result;
}
/**
* Declares extensions (although Spreadsheet Kind currently has none).
*/
public void declareExtensions(ExtensionProfile extProfile) {
// No special extensions.
}
}