001: /*
002: * Timer: The timer class
003: * Copyright (C) 2006-2007 Rift IT Contracting
004: *
005: * This library is free software; you can redistribute it and/or
006: * modify it under the terms of the GNU Lesser General Public
007: * License as published by the Free Software Foundation; either
008: * version 2.1 of the License, or (at your option) any later version.
009: *
010: * This library is distributed in the hope that it will be useful,
011: * but WITHOUT ANY WARRANTY; without even the implied warranty of
012: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
013: * Lesser General Public License for more details.
014: *
015: * You should have received a copy of the GNU Lesser General Public
016: * License along with this library; if not, write to the Free Software
017: * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
018: *
019: * DeploymentDaemonImpl.java
020: */
021:
022: package com.rift.coad.daemon.deployment;
023:
024: import com.rift.coad.lib.configuration.ConfigurationException;
025: import java.io.BufferedWriter;
026: import java.io.File;
027: import java.io.FileOutputStream;
028: import java.io.FileWriter;
029: import java.io.IOException;
030: import java.rmi.RemoteException;
031: import org.apache.log4j.Logger;
032:
033: /**
034: * This Daemon allows users to remotely upload either Daemons or any other file
035: * to the Coadunation server.
036: *
037: * @author Glynn Chaldecott
038: */
039: public class DeploymentDaemonImpl implements DeploymentDaemon {
040:
041: protected Logger log = Logger.getLogger(DeploymentDaemonImpl.class
042: .getName());
043:
044: String coadLocal = "";
045: String coadunationTmp = "";
046:
047: /** Creates a new instance of DeploymentDaemonImpl */
048: public DeploymentDaemonImpl() throws Exception {
049: try {
050: com.rift.coad.lib.configuration.Configuration coadConfig = com.rift.coad.lib.configuration.ConfigurationFactory
051: .getInstance()
052: .getConfig(
053: com.rift.coad.daemon.deployment.DeploymentDaemonImpl.class);
054: coadLocal = coadConfig.getString("coadunation_deploy");
055: coadunationTmp = coadConfig.getString("coadunation_temp");
056: } catch (ConfigurationException ex) {
057: log.error("Failed to set jython properties :"
058: + ex.getMessage(), ex);
059: throw new Exception("Failed to set jython properties :"
060: + ex);
061: }
062: }
063:
064: /**
065: * This method is used when a user wishes to remotely deploy a Daemon to
066: * Coadunation.
067: *
068: * @param file This is a byte[] containing the contents of the jar file.
069: * @param name This is the name of the Daemon.
070: * @param extension This is the file extension. It has to be .jar otherwise
071: * the method will throw an error.
072: */
073: public void daemonDeployer(byte[] file, String name)
074: throws RemoteException, DeploymentDaemonException {
075: try {
076: File temp = File.createTempFile(name, null);
077: FileOutputStream fos = new FileOutputStream(temp);
078: fos.write(file);
079: fos.close();
080: File supFile = new File(coadLocal + File.separator + name);
081: temp.renameTo(supFile);
082: } catch (IOException ex) {
083: log.error("Failed to copy file:" + ex, ex);
084: }
085: }
086:
087: /**
088: * This method is used when a user needs to remotely upload a file to the
089: * Coadunation server.
090: *
091: * @param file This is a byte[] containing the contents of the file.
092: * @param name This is the name of the file.
093: * @param location This is the location that the file will be stored.
094: * @param extension This is the file's extension.
095: */
096: public void copyFile(byte[] file, String name, String location)
097: throws RemoteException {
098: try {
099: File temp = File.createTempFile(name, null);
100: FileOutputStream fos = new FileOutputStream(temp);
101: fos.write(file);
102: fos.close();
103: File supFile = new File(location + File.separator + name);
104: temp.renameTo(supFile);
105: } catch (IOException ex) {
106: log.error("Failed to copy file:" + ex, ex);
107: }
108: }
109:
110: }
|