01: /*
02: * The contents of this file are subject to the
03: * Mozilla Public License Version 1.1 (the "License");
04: * you may not use this file except in compliance with the License.
05: * You may obtain a copy of the License at http://www.mozilla.org/MPL/
06: *
07: * Software distributed under the License is distributed on an "AS IS"
08: * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied.
09: * See the License for the specific language governing rights and
10: * limitations under the License.
11: *
12: * The Initial Developer of the Original Code is Simulacra Media Ltd.
13: * Portions created by Simulacra Media Ltd are Copyright (C) Simulacra Media Ltd, 2004.
14: *
15: * All Rights Reserved.
16: *
17: * Contributor(s):
18: */
19: package org.openharmonise.rm.commands;
20:
21: import org.openharmonise.rm.resources.lifecycle.*;
22: import org.openharmonise.rm.resources.users.*;
23:
24: /**
25: * Locks the 'command object' for the current user, if it
26: * implements <code>Editable</code>
27: *
28: * @author Michael Bell
29: * @version $Revision: 1.3 $
30: *
31: */
32: public class CmdLock extends AbstractCmd {
33:
34: /**
35: * Creates an instance of the command
36: *
37: */
38: public CmdLock() {
39: super ();
40: }
41:
42: /* (non-Javadoc)
43: * @see org.openharmonise.rm.commands.AbstractCmd#execute()
44: */
45: public Object execute(Context context) throws CommandException {
46: if ((m_commandObj instanceof Editable) == false) {
47: throw new InvalidCommandException(
48: "Command is not valid for this object:"
49: + m_commandObj.getClass());
50: }
51:
52: User user = getExecutingUser();
53:
54: if (isAvailable(context) == false) {
55: throw new InvalidCommandException(
56: "Command is not available for this object");
57: }
58:
59: Editable editable = (Editable) getCommandObject(context);
60:
61: try {
62: editable.lock(user);
63: } catch (InvalidLockOwnerException e) {
64: throw new InvalidCommandException(e);
65: } catch (EditException e) {
66: throw new CommandExecutionException("Error locking object",
67: e);
68: }
69:
70: logCommand(context);
71:
72: return null;
73: }
74:
75: /* (non-Javadoc)
76: * @see org.openharmonise.rm.commands.AbstractCmd#getName()
77: */
78: public String getName() {
79: return "Lock";
80: }
81:
82: /* (non-Javadoc)
83: * @see org.openharmonise.rm.commands.AbstractCmd#isValidCommandObject(java.lang.Object)
84: */
85: public boolean isValidCommandObject(Object obj) {
86: return (obj instanceof Editable);
87: }
88: }
|