167 lines
4.6 KiB
Java
167 lines
4.6 KiB
Java
/*******************************************************************************
|
|
* Copyright (c) 2002 - 2006 IBM Corporation.
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
*
|
|
* Contributors:
|
|
* IBM Corporation - initial API and implementation
|
|
*******************************************************************************/
|
|
package com.ibm.wala.util.io;
|
|
|
|
import java.net.URI;
|
|
|
|
/**
|
|
* Some simple utilities used to manipulate Strings
|
|
*/
|
|
public class FileSuffixes {
|
|
|
|
private static final String CLASS_SUFFIX = ".class";
|
|
|
|
private static final String JAR_SUFFIX = ".jar";
|
|
|
|
private static final String WAR_SUFFIX = ".war";
|
|
|
|
private static final String DEX_SUFFIX = ".dex";
|
|
private static final String APK_SUFFIX = ".apk";
|
|
|
|
/**
|
|
* Does the URI refer to a .dex file?
|
|
*
|
|
* @param uri
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if uri is null
|
|
*/
|
|
public static boolean isDexFile(final URI uri) {
|
|
if (uri == null) {
|
|
throw new IllegalArgumentException("uri is null");
|
|
}
|
|
|
|
if (uri.toString().startsWith("jar:")) {
|
|
try {
|
|
final String filePart = uri.toURL().getFile().toLowerCase();
|
|
return isDexFile(filePart);
|
|
} catch (java.net.MalformedURLException e) {
|
|
throw new IllegalArgumentException(e);
|
|
}
|
|
} else {
|
|
assert (uri.getPath() != null);
|
|
return isDexFile(uri.getPath());
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
* Does the file name represent a .dex file?
|
|
*
|
|
* @param fileName name of a file
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static boolean isDexFile(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
return fileName.toLowerCase().endsWith(DEX_SUFFIX);
|
|
}
|
|
|
|
/**
|
|
* Does the file name represent a .dex file?
|
|
*
|
|
* @param fileName name of a file
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static boolean isApkFile(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
return fileName.toLowerCase().endsWith(APK_SUFFIX);
|
|
}
|
|
|
|
/**
|
|
* Does the file name represent a .class file?
|
|
*
|
|
* @param fileName name of a file
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static boolean isClassFile(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
return fileName.endsWith(CLASS_SUFFIX);
|
|
}
|
|
|
|
/**
|
|
* Does the file name represent a .java file?
|
|
*
|
|
* @param fileName name of a file
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static boolean isSourceFile(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
return fileName.endsWith(".java");
|
|
}
|
|
|
|
/**
|
|
* Does the file name represent a .jar file?
|
|
*
|
|
* @param fileName name of a file
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static boolean isJarFile(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
return fileName.endsWith(JAR_SUFFIX);
|
|
}
|
|
|
|
/**
|
|
* Does the file name represent a .war file?
|
|
*
|
|
* @param fileName name of a file
|
|
* @return boolean
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static boolean isWarFile(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
return fileName.endsWith(WAR_SUFFIX);
|
|
}
|
|
|
|
/**
|
|
* Strip the ".class" or ".java" suffix from a file name
|
|
*
|
|
* TODO: generalize for all suffixes
|
|
*
|
|
* @param fileName the file name
|
|
* @throws IllegalArgumentException if fileName is null
|
|
*/
|
|
public static String stripSuffix(String fileName) {
|
|
if (fileName == null) {
|
|
throw new IllegalArgumentException("fileName is null");
|
|
}
|
|
int suffixIndex = fileName.indexOf(CLASS_SUFFIX);
|
|
suffixIndex = (suffixIndex > -1) ? suffixIndex : fileName.indexOf(".java");
|
|
if (suffixIndex > -1) {
|
|
return fileName.substring(0, suffixIndex);
|
|
} else {
|
|
return fileName;
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Does the URI point to a ressource in a jar-file
|
|
*/
|
|
public static boolean isRessourceFromJar(final URI uri) {
|
|
return uri.toString().startsWith("jar:"); // How Pretty
|
|
}
|
|
}
|