138 lines
4.7 KiB
Java
138 lines
4.7 KiB
Java
/* 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'";
|
|
}
|
|
}
|