/*
* #%~
* Test Framework for Overture
* %%
* Copyright (C) 2008 - 2014 Overture
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* <http://www.gnu.org/licenses/gpl-3.0.html>.
* #~%
*/
package org.overture.test.util;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class FileUtils
{
public static List<String> readTextFromJar(String s) throws Exception
{
InputStream is = null;
BufferedReader br = null;
String line;
List<String> list = new ArrayList<String>();
try
{
is = FileUtils.class.getResourceAsStream(s);
br = new BufferedReader(new InputStreamReader(is));
while (null != (line = br.readLine()))
{
list.add(line);
}
} catch (Exception e)
{
// System.err.println("Faild to read file from jar: \"" + s + "\"");
// e.printStackTrace();
throw e;
} finally
{
try
{
if (br != null)
{
br.close();
}
if (is != null)
{
is.close();
}
} catch (IOException e)
{
e.printStackTrace();
}
}
return list;
}
public static String readFile(String relativePath) throws IOException
{
StringBuilder sb = new StringBuilder();
try
{
for (String s : FileUtils.readTextFromJar(relativePath))
{
sb.append("\n" + s);
}
} catch (Exception e)
{
// ok maybe we are running in debug mode
for (String s : FileUtils.readTextFromSource(relativePath))
{
sb.append("\n" + s);
}
}
return sb.toString();
}
private static List<String> readTextFromSource(String relativePath)
{
List<String> list = new ArrayList<String>();
try
{
BufferedReader in = new BufferedReader(new FileReader(new File(new File("."), ("src/test/resources/" + relativePath).replace('/', File.separatorChar))));
String str;
while ((str = in.readLine()) != null)
{
list.add(str);
}
in.close();
} catch (IOException e)
{
}
return list;
}
// public static void writeFile(File outputFolder, String fileName, String content)
// throws IOException
// {
// FileWriter outputFileReader = new FileWriter(new File(outputFolder,
// fileName), false);
// BufferedWriter outputStream = new BufferedWriter(outputFileReader);
// outputStream.write(content);
// outputStream.close();
//
// }
//
// public static void writeFile(File file, String content) throws IOException
// {
// FileWriter outputFileWriter = new FileWriter(file);
// BufferedWriter outputStream = new BufferedWriter(outputFileWriter);
// outputStream.write(content);
// outputStream.close();
// outputFileWriter.close();
// }
public static void writeFile(String data, File file)
{
writeFile(data, file, false);
}
public static void writeFile(String data, File file, boolean append)
{
BufferedWriter outputStream = null;
try
{
FileWriter outputFileReader = new FileWriter(file, append);
outputStream = new BufferedWriter(outputFileReader);
outputStream.write(data);
outputStream.flush();
outputStream.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} finally
{
if (outputStream != null)
{
try
{
outputStream.close();
} catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
}