/*
 * $Id: FileUtil.java,v 1.4 2000/06/15 13:55:51 yamauchi Exp $
 *     (M\pi)^2 : FileUtil (file utility) 
 *	Copyright 1999 By YAMAUCHI Hitoshi 山内 斉 
 *	Copyright 1999 MAEDA Atusi
 *	@author YAMAUCHI Hitoshi, MAEDA Atusi
 *
 * 	FileUtil : 簡易ファイル操作
 *
 * original source fileUtil.h
 * 
 * 1999年8月17日(火)
 */

package jp.ac.tohoku.is.archi.mpi2.util;

import java.io.*;
import jp.ac.tohoku.is.archi.mpi2.sysparam.*;

/**
 * 簡易ファイル操作関係
 */
public final class FileUtil implements Mpi2Constants {
    /**
     * ファイルが存在した場合には temp filename を返す
     *   temp file 作成に使用する File.createTemp には prefix と 
     *   suffix を渡すのだが，prefix は Mpi2Constants で決めてある．
     *   suffix のみを渡すが，temp file 名でファイルが欲しくない場合に
     *   は suffix = null としておく．
     *
     *      @param candidateWriteFname write で open したいファイル名
     *      @param suffix temp filename の suffix 
     *      @return open した File．失敗した場合には null が返る．
     */
    public static File newUniqueWriteFP(String candidateWriteFname, 
					String suffix)
    {
	// file が存在するかを確認
	File f = new File(candidateWriteFname);
	if(!(f.exists()))
	{
	    // ファイルは存在しない．そのまま返す．
	    return(f);
	}

	// ファイルが存在する．
	if(suffix == null)
	{
	    String s = "Error! : file exist and you ordered never create " +
		"tmpfile. return (File)null, cadidate = "+ candidateWriteFname;
	    System.out.println(s);
	    // しかし他の tmp を作成しないように指示あり
	    return(null);
	}

	// ファイルが存在し，かつ tmp file 作成可
	System.out.println("Warning! : There is [" + candidateWriteFname +
			   "]. " + "I will try to create new filename.");

	// try to make temporary file

	/* 
	    for JDK1.2 
		FIXME
	try {
	    f = File.createTempFile(TEMP_SAVEIMAGE_FILEPREFIX, suffix);
	}catch(IOException e)
	{
	    System.out.println("Error! : Can not create tempfile. " + 
			       "FileUtil.getUniqueWriteFP\n" + e);
	}catch(Exception e)
	{
	    System.out.println("Error! : ??? FileUtil.getUniqueWriteFP\n" + e);
	}

	System.out.println("mktmp succeeded. temp filename is ["+
			   f.getName() + "] instead of [" + 
			   candidateWriteFname + "] by File.createTempFile.");
	*/
	return(f);
    }

    /*
     * test 
     */
    public static void main(String [] args)
    {
	System.out.println("If file is exist, return tempfilename.");	
	File f = newUniqueWriteFP(args[0], ".tmp");
	System.out.println(f.getName());
    }
}
