blob: 34c047791533a6c70a244887df47472894e8fb02 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2003, 2005 IBM Corporation and others.
* 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 org.eclipse.jst.j2ee.internal.web.archive.operations;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.Path;
import org.eclipse.jst.j2ee.commonarchivecore.internal.Archive;
import org.eclipse.jst.j2ee.commonarchivecore.internal.File;
import org.eclipse.jst.j2ee.commonarchivecore.internal.helpers.ArchiveConstants;
import org.eclipse.jst.j2ee.internal.J2EEConstants;
public class WTProjectStrategyUtils {
public static File findSourceFile(Archive archive, String file) {
if (isClassFile(file))
return findSourceFileForClass(archive, file);
// Look in the CLASSES directory
try {
if (!isOutputFile(file))
return archive.getFile(file);
} catch (java.io.FileNotFoundException ex) {
//Do nothing
}
return null;
}
public static File findSourceFileForClass(Archive archive, String classFile) {
// Look in the CLASSES directory
IPath classFilePath = new Path(classFile);
IPath sourceFilePath = classFilePath.removeFileExtension().addFileExtension("java");//$NON-NLS-1$
try {
File file = archive.getFile(sourceFilePath.toString());
if (file != null)
return file;
} catch (java.io.FileNotFoundException ex) {
//Do nothing
}
// Look in the LIB directory
sourceFilePath = new Path(ArchiveConstants.WEBAPP_LIB_URI).append(sourceFilePath);
try {
File file = archive.getFile(sourceFilePath.toString());
if (file != null)
return file;
} catch (java.io.FileNotFoundException ex) {
//Do nothing
}
return null;
}
public static boolean isClassFile(String uri) {
return uri.startsWith(ArchiveConstants.WEBAPP_CLASSES_URI) && uri.endsWith(".class");//$NON-NLS-1$
}
public static boolean isOutputFile(String uri) {
return uri.startsWith(ArchiveConstants.WEBAPP_CLASSES_URI);
}
public static boolean isSourceFile(String uri) {
// A file is considered a java source file if it is in the
// WEB_INF directory and it does not end with .class.
if (uri.startsWith(J2EEConstants.WEB_INF + "/") && //$NON-NLS-1$
uri.endsWith(".java"))//$NON-NLS-1$
return true;
return false;
}
public static String makeRelative(String pathString, String relToPathString) {
IPath relToPath = new Path(relToPathString);
IPath path = new Path(pathString);
if (path.matchingFirstSegments(relToPath) == relToPath.segmentCount())
path = path.removeFirstSegments(relToPath.segmentCount());
return path.toString();
}
}