package org.jboss.tools.esb.project.ui.utils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.List;
/**
* @author Grid Qian
*/
public class UIUtils
{
/**
* A default padding value for horizontalResize().
*/
public final static int DEFAULT_PADDING = 35;
String infoPopid_;
public UIUtils(String infoPopid)
{
infoPopid_ = infoPopid;
}
public static void writePropertyToFile(File file, String key, String value) throws IOException
{
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "8859_1"));
out.write(key + "=" + value + "\n");
out.close();
}
// file util
public static void copyFile(String src, String dest)
{
InputStream is = null;
FileOutputStream fos = null;
try
{
is = new FileInputStream(src);
fos = new FileOutputStream(dest);
int c = 0;
byte[] array = new byte[1024];
while ((c = is.read(array)) >= 0)
{
fos.write(array, 0, c);
}
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
fos.close();
is.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
public static File createFileAndParentDirectories(String fileName) throws Exception
{
File file = new File(fileName);
File parent = file.getParentFile();
if (!parent.exists())
{
parent.mkdirs();
}
file.createNewFile();
return file;
}
/**删除文件*/
public static boolean deleteDir(File dir)
{
if (dir.isDirectory())
{
String[] children = dir.list();
for (int i = 0; i < children.length; i++)
{
boolean success = deleteDir(new File(dir, children[i]));
if (!success)
{
return false;
}
}
}
return dir.delete();
}
/***删除文件目录*/
public static void deleteDirectories(File dir)
{
File[] children = dir.listFiles();
for (int i = 0; i < children.length; i++)
{
if (children[i].list() != null && children[i].list().length > 0)
{
deleteDirectories(children[i]);
}
else
{
children[i].delete();
}
}
dir.delete();
}
/***删除文件目录*/
public static void deleteDirectories(String dir)
{
File directory = new File(dir);
deleteDirectories(directory);
}
/***创建文件*/
public static void createTargetFile(String sourceFileName, String targetFileName) throws Exception
{
createTargetFile(sourceFileName, targetFileName, false);
}
/***创建文件是否覆盖*/
public static void createTargetFile(String sourceFileName, String targetFileName, boolean overwrite)
throws Exception
{
File idealResultFile = new File(targetFileName);
if (overwrite || !idealResultFile.exists())
{
createFileAndParentDirectories(targetFileName);
copyFile(sourceFileName, targetFileName);
}
}
/***创建文件目录*/
public static boolean createDirectory(String directory)
{
// Create a directory; all ancestor directories must exist
boolean success = (new File(directory)).mkdir();
if (!success)
{
// Directory creation failed
}
return success;
}
/***创建文件目录*/
public static boolean createDirectorys(String directory)
{
// Create a directory; all ancestor directories must exist
boolean success = (new File(directory)).mkdirs();
if (!success)
{
// Directory creation failed
}
return success;
}
// Copies all files under srcDir to dstDir.
// If dstDir does not exist, it will be created.
/**复制文件目录*/
public static void copyDirectory(File srcDir, File dstDir) throws IOException
{
if (srcDir.isDirectory())
{
if (!dstDir.exists())
{
dstDir.mkdir();
}
String[] children = srcDir.list();
for (int i = 0; i < children.length; i++)
{
copyDirectory(new File(srcDir, children[i]), new File(dstDir, children[i]));
}
}
else
{
copy(srcDir, dstDir);
}
}
// Copies src file to dst file.
// If the dst file does not exist, it is created
/**复制文件*/
public static void copy(File src, File dst) throws IOException
{
InputStream in = new FileInputStream(src);
OutputStream out = new FileOutputStream(dst);
// Transfer bytes from in to out
byte[] buf = new byte[1024];
int len;
while ((len = in.read(buf)) > 0)
{
out.write(buf, 0, len);
}
in.close();
out.close();
}
public static String addAnotherNodeToPath(String currentPath, String newNode)
{
return currentPath + File.separator + newNode;
}
public static String addNodesToPath(String currentPath, String[] newNode)
{
String returnPath = currentPath;
for (int i = 0; i < newNode.length; i++)
{
returnPath = returnPath + File.separator + newNode[i];
}
return returnPath;
}
public static String addNodesToPath(StringBuffer currentPath, String[] pathNodes)
{
for (int i = 0; i < pathNodes.length; i++)
{
currentPath.append(File.separator);
currentPath.append(pathNodes[i]);
}
return currentPath.toString();
}
public static String addNodesToURL(String currentPath, String[] newNode)
{
String returnPath = currentPath;
for (int i = 0; i < newNode.length; i++)
{
returnPath = returnPath + "/" + newNode[i];
}
return returnPath;
}
/**
* Get the list of file with a prefix of <code>fileNamePrefix</code> & an extension of <code>extension</code>
*
* @param sourceDir The directory in which to search the files
* @param fileNamePrefix The prefix to look for
* @param extension The extension to look for
* @return The list of file with a prefix of <code>fileNamePrefix</code> & an extension of
* <code>extension</code>
*/
public static File[] getMatchingFiles(String sourceDir, String fileNamePrefix, String extension)
{
List<File> fileList = new ArrayList<File>();
File libDir = new File(sourceDir);
String libDirPath = libDir.getAbsolutePath();
String[] items = libDir.list();
if (items != null)
{
for (int i = 0; i < items.length; i++)
{
String item = items[i];
if (fileNamePrefix != null && extension != null)
{
if (item.startsWith(fileNamePrefix) && item.endsWith(extension))
{
fileList.add(new File(libDirPath + File.separator + item));
}
}
else if (fileNamePrefix == null && extension != null)
{
if (item.endsWith(extension))
{
fileList.add(new File(libDirPath + File.separator + item));
}
}
else if (fileNamePrefix != null && extension == null)
{
if (item.startsWith(fileNamePrefix))
{
fileList.add(new File(libDirPath + File.separator + item));
}
}
else
{
fileList.add(new File(libDirPath + File.separator + item));
}
}
return (File[]) fileList.toArray(new File[fileList.size()]);
}
return new File[0];
}
/**
* Filter out files inside a <code>sourceDir</code> with matching <codefileNamePrefix></code> and
* <code>extension</code>
*
* @param sourceDir The directory to filter the files
* @param fileNamePrefix The filtering filename prefix
* @param extension The filtering file extension
*/
public static void filterOutRestrictedFiles(String sourceDir, String fileNamePrefix, String extension)
{
File[] resultedMatchingFiles = getMatchingFiles(sourceDir, fileNamePrefix, extension);
for (int i = 0; i < resultedMatchingFiles.length; i++)
{
File matchingFilePath = new File(resultedMatchingFiles[i].getAbsolutePath());
matchingFilePath.delete();
}
}
}