From: Matt <mat...@us...> - 2007-04-26 10:11:09
|
Update of /cvsroot/openqrm/base/openqrm-3.0.1/src/base/java/main/code/com/qlusters/qrm/web/tags/cli In directory sc8-pr-cvs3.sourceforge.net:/tmp/cvs-serv10635/base/openqrm-3.0.1/src/base/java/main/code/com/qlusters/qrm/web/tags/cli Added Files: TagsCliAction.java Log Message: added missing tag files + dirs for older openQRM versions, those were missing in the initial commit. --- NEW FILE: TagsCliAction.java --- /******************************************************************************* * * * The contents of this file are subject to the Qlusters Public License * Version 1.1 (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.openqrm.org/content/view/33/69/. * * Software distributed under the License is distributed on an AS IS basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for * the specific language governing rights and limitations under the License. * * The Original Code is openQRM. * * The Initial Developer of the Original Code is Qlusters Corporation. Portions * created by Qlusters Corporation are Copyright (C) 2003-2006. All Rights * Reserved. * * Contributor(s): * * Description: * * Comments: ******************************************************************************/ package com.qlusters.qrm.web.tags.cli; import java.io.PrintWriter; import java.util.Arrays; import java.util.List; import java.util.Map; import com.qlusters.qrm.server.api.exceptions.AuthorizationException; import com.qlusters.qrm.server.api.exceptions.InvalidObjectNameException; import com.qlusters.qrm.server.api.exceptions.applications.TagExistsException; import com.qlusters.qrm.server.api.exceptions.applications.TagInUseException; import com.qlusters.qrm.server.api.exceptions.applications.TagNotFoundException; import com.qlusters.qrm.server.api.objects.ApiObject; import com.qlusters.qrm.server.api.objects.applications.TagData; import com.qlusters.qrm.server.api.services.ApiServicesLocator; import com.qlusters.qrm.server.api.services.config.ConfigurationServices; import com.qlusters.qrm.utils.CollectionUtils; import com.qlusters.qrm.utils.Pair; import com.qlusters.qrm.utils.Prefs; import com.qlusters.qrm.utils.tableformat.TableFormatterUtils; import com.qlusters.qrm.web.cli.CliAction; import com.qlusters.qrm.web.cli.CliContext; import com.qlusters.qrm.web.cli.CliOption; import com.qlusters.qrm.web.cli.CliUtils; import com.qlusters.qrm.web.cli.CompositeCliAction; import com.qlusters.qrm.web.cli.ListCliAction; import com.qlusters.qrm.web.cli.SimpleCliAction; import com.qlusters.qrm.web.cli.parsing.CliOptionsValues; import com.qlusters.qrm.web.common.ActionEnum; public class TagsCliAction extends CompositeCliAction { private static final CliOption NAME_OPTION = new CliOption('n', "name", "Tag name", true, "tag"); private static final CliOption DESCRIPTION_OPTION = new CliOption('d', "description", "Tag description", false, "string"); private static final CliOption NEW_NAME_OPTION = new CliOption('w', "new_name", "Tag new name", false, "new name"); private static final Map subActions = CollectionUtils.toMap(new Pair[]{ new Pair(ActionEnum.ADD.getName(), CliUtils .decorate(new AddAction())), new Pair(ActionEnum.DELETE.getName(), CliUtils .decorate(new DeleteAction())), new Pair(ActionEnum.RENAME.getName(), CliUtils .decorate(new RenameAction())), new Pair(ActionEnum.LIST.getName(), CliUtils .decorate(new ListAction()))}); private static final String generalDescription = Prefs.getPrefs() .getString(TagsCliAction.class, "description", "Manage tags"); public Map<String, CliAction> getSubActions() { return subActions; } public String getDescription() { return generalDescription; } private static ConfigurationServices getServices() { return ApiServicesLocator.getInstance().getConfigurationServices(); } private static class AddAction extends SimpleCliAction { private static final List options = Arrays.asList(new CliOption[]{ NAME_OPTION, DESCRIPTION_OPTION}); private static final String description = Prefs.getPrefs().getString( AddAction.class, "description", "Add a new tag to the system"); public AddAction() { super(options, description); // TODO Auto-generated constructor stub } protected int handle(CliContext context, CliOptionsValues values) { try { getServices().addTag( (String) values.getOptionValue(NAME_OPTION, null), (String) values.getOptionValue(DESCRIPTION_OPTION, null)); return E_OK; } catch (TagExistsException e) { return CliUtils.fatal(context, "Tag already exists", E_OBJECT_EXISTS); } catch (AuthorizationException e) { return CliUtils.fatal(context, "Not authorized", E_AUTHORIZATION); } catch (InvalidObjectNameException e) { return CliUtils .fatal(context, "Tag name is not valid", E_USAGE); } } } private static class DeleteAction extends SimpleCliAction { private static final List options = Arrays .asList(new CliOption[]{NAME_OPTION,}); private static final String description = Prefs.getPrefs().getString( DeleteAction.class, "description", "Delete a tag from the system"); public DeleteAction() { super(options, description); } protected int handle(CliContext context, CliOptionsValues values) { try { getServices().removeTag( (String) values.getOptionValue(NAME_OPTION, null)); return E_OK; } catch (TagNotFoundException e) { return CliUtils.fatal(context, "Tag was not found", E_OBJECT_NOT_FOUND); } catch (AuthorizationException e) { return CliUtils.fatal(context, "Not authorized", E_AUTHORIZATION); } catch (TagInUseException e) { return CliUtils.fatal(context, "Tag is used by resource / virtual environment", E_OBJECT_USED); } } } private static class RenameAction extends SimpleCliAction { private static final List options = Arrays.asList(new CliOption[]{ NAME_OPTION, NEW_NAME_OPTION}); private static final String description = Prefs.getPrefs().getString( DeleteAction.class, "description", "Rename a tag"); public RenameAction() { super(options, description); } protected int handle(CliContext context, CliOptionsValues values) { try { getServices().renameTag( (String) values.getOptionValue(NAME_OPTION, null), (String) values.getOptionValue(NEW_NAME_OPTION, null)); return E_OK; } catch (TagNotFoundException e) { return CliUtils.fatal(context, "Tag was not found", E_OBJECT_NOT_FOUND); } catch (TagExistsException e) { return CliUtils.fatal(context, "Tag with new name already exists", E_OBJECT_EXISTS); } catch (AuthorizationException e) { return CliUtils.fatal(context, "Not authorized", E_AUTHORIZATION); } catch (InvalidObjectNameException e) { return CliUtils .fatal(context, "New name is not valid", E_USAGE); } } } private static class ListAction extends ListCliAction { private static final String description = Prefs.getPrefs().getString( ListAction.class, "description", "List all current tags"); public ListAction() { super(null, description); } @Override public int setList(CliContext context, CliOptionsValues values, List<ApiObject> objects) { List tags = getServices().getTags(null, null, null); copy(objects, tags); return E_OK; } @Override protected void printTable(List<? extends ApiObject> objects, PrintWriter out) { TableFormatterUtils.formatDataObjects(out, objects, TagData.class, true); } } } |