Inital commit
This commit is contained in:
@@ -0,0 +1,137 @@
|
||||
/* 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 sample.gtt;
|
||||
|
||||
import com.google.gdata.client.gtt.GttService;
|
||||
import sample.util.SimpleCommandLineParser;
|
||||
import com.google.gdata.data.acl.AclEntry;
|
||||
import com.google.gdata.data.acl.AclFeed;
|
||||
import com.google.gdata.data.acl.AclRole;
|
||||
import com.google.gdata.data.acl.AclScope;
|
||||
import com.google.gdata.util.ServiceException;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URL;
|
||||
|
||||
/**
|
||||
* Update entry sharing.
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class ShareCommand implements Command {
|
||||
|
||||
public static final ShareCommand DOCUMENTS_INSTANCE
|
||||
= new ShareCommand("documents");
|
||||
|
||||
public static final ShareCommand TMS_INSTANCE
|
||||
= new ShareCommand("tm");
|
||||
|
||||
public static final ShareCommand GLOSSARIES_INSTANCE
|
||||
= new ShareCommand("glossary");
|
||||
|
||||
protected final String feedName;
|
||||
|
||||
public ShareCommand(String feedName) {
|
||||
this.feedName = feedName;
|
||||
}
|
||||
|
||||
public void execute(GttService service, String[] args)
|
||||
throws IOException, ServiceException {
|
||||
SimpleCommandLineParser parser = new SimpleCommandLineParser(args);
|
||||
|
||||
String entryId = parser.getValue("id");
|
||||
|
||||
if (parser.containsKey("list")) {
|
||||
URL feedUrl = FeedUris.getAclFeedUrl(feedName, entryId);
|
||||
|
||||
System.out.println("Listing all accessors for " + feedName
|
||||
+ " with id" + entryId + " ...");
|
||||
// Get the list of accessors for this entry
|
||||
AclFeed aclFeed = service.getFeed(feedUrl, AclFeed.class);
|
||||
printAclInfo(aclFeed);
|
||||
|
||||
} else if (parser.containsKey("changetype")) {
|
||||
String changeType = parser.getValue("changetype");
|
||||
String emailId = parser.getValue("email");
|
||||
|
||||
if ("add".equals(changeType)) {
|
||||
AclScope scope = new AclScope(AclScope.Type.USER, emailId);
|
||||
AclRole role = new AclRole(parser.getValue("role"));
|
||||
|
||||
// Add a new accessor for this entry
|
||||
AclEntry entry = new AclEntry();
|
||||
entry.setRole(role);
|
||||
entry.setScope(scope);
|
||||
|
||||
System.out.println("Adding user " + emailId + " as " + role.getValue()
|
||||
+ " to " + feedName + " with id " + entryId + " ...");
|
||||
URL feedUrl = FeedUris.getAclFeedUrl(feedName, entryId);
|
||||
service.insert(feedUrl, entry);
|
||||
System.out.println("...done");
|
||||
|
||||
} else if ("change".equals(changeType)) {
|
||||
AclScope scope = new AclScope(AclScope.Type.USER, emailId);
|
||||
AclRole role = new AclRole(parser.getValue("role"));
|
||||
|
||||
// Change the role of an accessor for this entry
|
||||
AclEntry entry = new AclEntry();
|
||||
entry.setRole(role);
|
||||
entry.setScope(scope);
|
||||
|
||||
System.out.println("Changing user " + emailId + "'s access to "
|
||||
+ role.getValue() + " for " + feedName + " with id "
|
||||
+ entryId + " ...");
|
||||
URL feedUrl = FeedUris.getAclFeedUrl(feedName, entryId, emailId);
|
||||
service.update(feedUrl, entry);
|
||||
System.out.println("...done");
|
||||
|
||||
} else if ("remove".equals(changeType)) {
|
||||
System.out.println("Removing user " + emailId + "'s access to "
|
||||
+ feedName + " with id " + entryId + " ...");
|
||||
URL feedUrl = FeedUris.getAclFeedUrl(feedName, entryId, emailId);
|
||||
// Remove an accessor for this entry
|
||||
service.delete(feedUrl);
|
||||
System.out.println("...done");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void printAclInfo(AclFeed aclFeed)
|
||||
throws IOException, ServiceException {
|
||||
System.out.println("...done, currently their are "
|
||||
+ aclFeed.getEntries().size() + " accessors for this entry.\n");
|
||||
|
||||
int i = 1;
|
||||
for (AclEntry entry : aclFeed.getEntries()) {
|
||||
System.out.println(String.valueOf(i++) + ") "
|
||||
+ " scope = '" + entry.getScope().getValue() + "'"
|
||||
+ ", role = '" + entry.getRole().getValue() + "'");
|
||||
}
|
||||
}
|
||||
|
||||
public String helpString() {
|
||||
return "Updates sharing info."
|
||||
+ "\n\t--id <id>\t; the id of the entry whose acl needs updation"
|
||||
+ "\n\t--list\t; just list the current collaborators, no "
|
||||
+ "updation"
|
||||
+ "\n\t--changetype <type>\t; one of 'add', 'change', 'remove'"
|
||||
+ "\n\t--email <emailid>\t; email id of user who acl is to be "
|
||||
+ "updated"
|
||||
+ "\n\t--role <role>\t; one of 'owner', 'reader', 'writer', "
|
||||
+ "'commenter'";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user