Source code for /engineering/autohit-2003/src/autohit/server/command/CommandSaveProps.javaOriginal file CommandSaveProps.java
   1 /**
   2  * AUTOHIT 2003
   3  * Copyright Erich P Gatejen (c) 1989,1997,2003,2004
   4  * 
   5  * This program is free software; you can redistribute it and/or modify 
   6  * it under the terms of the GNU General Public License as published by 
   7  * the Free Software Foundation; either version 2 of the License, or (at
   8  * your option) any later version.
   9  * This program is distributed in the hope that it will be useful, but
  10  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  11  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
  12  * more details.
  13  * 
  14  * You should have received a copy of the GNU General Public License along
  15  * with this program; if not, write to the Free Software Foundation, Inc.,
  16  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  17  *
  18  * Additional license information can be found in the documentation.
  19  * @author Erich P Gatejen
  20  */
  21 package autohit.server.command;
  22 
  23 import java.io.IOException;
  24 import java.io.OutputStream;
  25 
  26 import org.apache.commons.collections.ExtendedProperties;
  27 
  28 import autohit.common.AutohitErrorCodes;
  29 import autohit.server.ServerException;
  30 import autohit.universe.UniverseException;
  31 
  32 /**
  33  * The SAVEPROPS command.  It will save the properties to a specified
  34  * disk locations.
  35  * <p>
  36  * <code>
  37  * COMMAND LIST
  38  * this.assert(false,false,false,false,true,false)
  39  * 0-UNI 		- OPTIONAL
  40  * 1-RESPONSE 	- OPTIONAL
  41  * 2-TARGET		- OPTIONAL
  42  * 3-CLASS		- UNUSED
  43  * 4-COMMAND	- REQUIRED
  44  * 5-OBJECT		- UNUSED
  45  * </code>
  46  * 
  47  * @author Erich P. Gatejen
  48  * @version 1.0 <i>Version History</i><code>EPG - Initial - 4Dec03</code>
  49  */
  50 public class CommandSaveProps extends Command {
  51 
  52 	final static long serialVersionUID = 1;
  53 	
  54 	/**
  55 	 * My name */
  56 	public final static String MY_NAME = "props";
  57 	public final static String LIST_HEADER = "SAVE PROPERTIES" + RESPONSE_ELEMENT_SEPERATOR;
  58 
  59 	/**
  60 	 * Execute the command.
  61 	 * 
  62 	 * @throws ServerException
  63 	 * @return return the manreadable message for success.
  64 	 */
  65 	public String execute() throws ServerException {
  66 
  67 		String victory = "failed.";
  68 		boolean started = false;
  69 
  70 		// Trap all non-critical errors and just log them to the
  71 		// responseChannel
  72 		try {
  73 
  74 			// Get the properties and try to save them.
  75 			ExtendedProperties iprops = sc.getInvokerProperties();
  76 			OutputStream is = uni.putStream(command);
  77 			iprops.save(is, "INVOKER PROPERIES " + System.currentTimeMillis());
  78 			is.close();
  79 			
  80 			// Ok, it's working
  81 			victory = "saved.";
  82 
  83 		} catch (IOException ioe) {	
  84 			throw new ServerException(
  85 					"failed.  There was an IO error.  message=" + ioe.getMessage(),
  86 					AutohitErrorCodes.EVENT_COMMAND_FAILED, ioe);
  87 			
  88 		} catch (UniverseException ue) {	
  89 	
  90 			throw new ServerException(
  91 					"failed.  There was a Universe Exception.  message=" + ue.getMessage(),
  92 					AutohitErrorCodes.EVENT_COMMAND_FAILED, ue);
  93 			
  94 		} catch (Exception e) {
  95 
  96 			throw new ServerException(
  97 				"failed.  There was a general Exception.  message=" + e.getMessage(),
  98 				AutohitErrorCodes.EVENT_COMMAND_FAILED,e);
  99 		}
 100 
 101 		// return
 102 		return victory;
 103 	}
 104 
 105 	/**
 106 	 * Verify the Save Props command.
 107 	 * 
 108 	 * @throws ServerException
 109 	 * @return return the manreadable message for accepting the command.
 110 	 */
 111 	public String verify() throws ServerException {
 112 		this.assertparam(false, false, false, false, true, false);
 113 		return "parameters are good.";
 114 	}
 115 
 116 	/**
 117 	 * Get the textual name for the command.
 118 	 * 
 119 	 * @return return the manreadable name of this command.
 120 	 */
 121 	public String getName() {
 122 		return MY_NAME;
 123 	}
 124 }