/*
* ALMA - Atacama Large Millimiter Array
* (c) European Southern Observatory, 2005
* Copyright by ESO (in the framework of the ALMA collaboration),
* All rights reserved
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
* MA 02111-1307 USA
*/
package alma.acs.util;
import java.io.File;
import java.io.IOException;
/**
* Class that gives access to the current working directory, effectively encapsulating the "user.dir" property.
* This feature was requested in Feb. 2005 by Lindsey, Brian, et.al.
* <p>
* Note that using files goes very much against ALMA's idea of location transparency of component locations,
* and against having a central archive to store data.
* This class should only be used in exceptional situations, such as for offline data reduction,
* or for other inevitable temporary file storage, where a component <b>creates and deletes</b> the files within its life cycle.
* Files should almost never be used for inter-component communication!
* <p>
* Note that on a diskless machine, the file created may well be located on a RAM disk and
* does not survive machine rebooting.
*
* @author hsommer
* @since ACS 5.0
*/
public class AcsCWD {
/**
* Gets the current working directory.
* @return File object which represents the directory.
*/
public static File getCWD() {
String cwdName = System.getProperty("user.dir");
return new File(cwdName);
}
/**
* Sets the current working directory.
* @param cwd
*/
public static synchronized void setCWD(String cwd) {
System.setProperty("user.dir", cwd);
}
/**
* Creates a temp file in the current working dir.
* @param prefix The prefix string to be used in generating the file's
* name; must be at least three characters long
* @param suffix The suffix string to be used in generating the file's
* name; may be <code>null</code>, in which case the
* suffix <code>".tmp"</code> will be used
* @return a newly created file.
* @throws IOException
* @see File#createTempFile(java.lang.String, java.lang.String, java.io.File)
*/
public static synchronized File createTempFileInCWD(String prefix, String suffix) throws IOException {
return File.createTempFile(prefix, suffix, getCWD());
}
}