001 ///////////////////////////////////////////////////////////////////////////////
002 // Copyright (c) 2006, Frank S. Nestel, All Rights Reserved.
003 //
004 // This library is free software; you can redistribute it and/or
005 // modify it under the terms of the GNU Lesser General Public
006 // License as published by the Free Software Foundation; either
007 // version 2.1 of the License, or (at your option) any later version.
008 //
009 // This library is distributed in the hope that it will be useful,
010 // but WITHOUT ANY WARRANTY; without even the implied warranty of
011 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
012 // GNU General Public License for more details.
013 //
014 // You should have received a copy of the GNU Lesser General Public
015 // License along with this program; if not, write to the Free Software
016 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
017 ///////////////////////////////////////////////////////////////////////////////
018
019 package de.spieleck.app.turn;
020
021 import java.io.OutputStream;
022 import java.io.InputStream;
023 import java.io.IOException;
024 import java.io.File;
025 import java.io.FileInputStream;
026 import java.io.FileOutputStream;
027
028 /**
029 * Well, have you ever seen a Java project without a util package or Util class?
030 *
031 * <p><a href="$URL: https://svn.sourceforge.net/svnroot/jtourney/src/de/spieleck/app/turn/Util.java $">$URL: https://svn.sourceforge.net/svnroot/jtourney/src/de/spieleck/app/turn/Util.java $</a></p>
032 *
033 * @author Frank S. Nestel
034 * @author $Author: nestefan $
035 * @version $Revision: 2 $ $Date: 2006-03-20 14:33:27 +0100 (Mo, 20 Mrz 2006) $ $Author: nestefan $
036 */
037 public class Util
038 {
039 public final static char SEPCHAR = ';';
040
041 public static int parseNextInt(String line, int start)
042 throws Exception
043 {
044 int i = line.indexOf(SEPCHAR, start);
045 if ( i == -1 )
046 i = line.length();
047 return Integer.parseInt(line.substring(start,i-1));
048 }
049
050 /**
051 * Ensure the existence of a certain file.
052 * If it does not exist, try to copy it from the parent directory.
053 * If it is not in the parent directory, find a resource in classpath.
054 */
055 public static boolean check4file(Class clazz,
056 File dir, String name, File dir2, String prefix)
057 throws IOException
058 {
059 File target = new File(dir, name);
060 if ( target.exists() )
061 return false;
062 OutputStream ous = new FileOutputStream(target);
063 if ( dir2 == null )
064 dir2 = dir.getParentFile();
065 File source1 = new File(dir2, name);
066 if ( source1.exists() )
067 copyStream(ous, new FileInputStream(source1));
068 else
069 copyStream(ous, clazz.getResourceAsStream(prefix+name));
070 return true;
071 }
072
073 public static void copyStream(OutputStream os, InputStream is)
074 throws IOException
075 {
076 byte[] buffer = new byte[8192];
077 int count;
078 while ( ( count = is.read(buffer) ) >= 0 )
079 {
080 os.write(buffer, 0, count);
081 }
082 os.close();
083 is.close();
084 }
085
086 }