package org.cagrid.gridgrouper.service.impl.tools;
import edu.internet2.middleware.grouper.RegistryReset;
import edu.internet2.middleware.subject.GridSourceAdapter;
import edu.internet2.middleware.subject.Subject;
import gov.nih.nci.cagrid.common.IOUtils;
import gov.nih.nci.cagrid.common.Utils;
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.cli.PosixParser;
import org.cagrid.gridgrouper.service.impl.GridGrouper;
/**
* @author <A HREF="MAILTO:langella@bmi.osu.edu">Stephen Langella</A>
* @author <A HREF="MAILTO:oster@bmi.osu.edu">Scott Oster</A>
* @author <A HREF="MAILTO:hastings@bmi.osu.edu">Shannon Hastings</A>
* @author <A HREF="MAILTO:ervin@bmi.osu.edu">David W. Ervin</A>
* @version $Id: GridGrouperBaseTreeNode.java,v 1.1 2006/08/04 03:49:26 langella
* Exp $
*/
public class GridGrouperBootstrapper {
public static final String ADD_ADMIN_OPT = "a";
public static final String ADD_ADMIN_OPT_FULL = "addAdmin";
public static final String USER_ID_OPT = "u";
public static final String USER_ID_OPT_FULL = "userId";
public static final String RESET_REGISTRY_OPT = "r";
public static final String RESET_REGISTRY_OPT_FULL = "reset";
public static final String HELP_OPT = "h";
public static final String HELP_OPT_FULL = "help";
public static void addAdminMember(String memberId) {
try {
if (memberId == null) {
memberId = IOUtils.readLine("Enter User Id", true);
}
GridSourceAdapter guss = new GridSourceAdapter("grid", "Grid Grouper: Grid Source Adapter");
Subject admin = guss.getSubject(memberId);
GridGrouper gg = new GridGrouper();
gg.getAdminGroup().addMember(admin);
} catch (Exception e) {
e.printStackTrace();
}
}
public static void resetRegistry() {
try {
RegistryReset.reset();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Options options = new Options();
Option help = new Option(HELP_OPT, HELP_OPT_FULL, false, "Prints this message.");
Option addAdmin = new Option(ADD_ADMIN_OPT, ADD_ADMIN_OPT_FULL, false,
"Specifies to add a grid grouper administrator.");
addAdmin.setRequired(false);
Option userId = new Option(USER_ID_OPT, USER_ID_OPT_FULL, true,
"The user id of the user to add as a grid grouper administrator.");
userId.setRequired(false);
Option resetRegisty = new Option(RESET_REGISTRY_OPT, RESET_REGISTRY_OPT_FULL, false,
"Resets the Grid Grouper registry, this will remove all stems and groups.");
userId.setRequired(false);
options.addOption(help);
options.addOption(addAdmin);
options.addOption(userId);
options.addOption(resetRegisty);
try {
CommandLineParser parser = new PosixParser();
CommandLine line = parser.parse(options, args);
if (line.hasOption(HELP_OPT)) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(GridGrouperBootstrapper.class.getName(), options);
System.exit(0);
} else {
boolean printMenu = true;
if (line.hasOption(ADD_ADMIN_OPT)) {
printMenu = false;
addAdminMember(Utils.clean(line.getOptionValue(USER_ID_OPT)));
}
if (line.hasOption(RESET_REGISTRY_OPT)) {
printMenu = false;
resetRegistry();
}
if (printMenu) {
System.out.println("*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*");
System.out.println("* Grid Grouper Bootstapper *");
System.out.println("*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*");
System.out.println();
System.out.println("1) Add a administrative user to Grid Grouper.");
System.out.println("2) Reset the Grouper Registry.");
System.out.println("3) Print command line options.");
System.out.println();
int option = IOUtils.readInteger("Enter Menu Option", true);
if (option == 1) {
addAdminMember(null);
} else if (option == 2) {
resetRegistry();
} else {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(GridGrouperBootstrapper.class.getName(), options);
}
}
}
} catch (ParseException exp) {
exp.printStackTrace();
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp(GridGrouperBootstrapper.class.getName(), options, false);
System.exit(1);
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}