blob: d06bf1613126a699deece48a3bf7ddf68c6f49b7 [file] [log] [blame]
/*
* Copyright (C) 2011 The Android Open Source Project
*
* Licensed under the Eclipse Public License, Version 1.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.eclipse.org/org/documents/epl-v10.php
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.ide.eclipse.adt.internal.build;
import org.eclipse.core.resources.IFile;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Data for Android-specific source files. It contains a list of output files and a list
* of dependencies.
* The source file itself is a implied dependency and is not meant to be in the dependency list.
*/
public class SourceFileData {
private final IFile mSourceFile;
private final List<IFile> mOutputFiles = new ArrayList<IFile>();
private final List<IFile> mDependencyFiles = new ArrayList<IFile>();
public SourceFileData(IFile sourceFile) {
this(sourceFile, null, null);
}
SourceFileData(IFile sourceFile,
List<IFile> outputFiles, List<IFile> dependencyFiles) {
mSourceFile = sourceFile;
if (outputFiles != null) {
mOutputFiles.addAll(outputFiles);
}
if (dependencyFiles != null) {
mDependencyFiles.addAll(dependencyFiles);
}
}
SourceFileData(IFile sourceFile, IFile outputFile) {
mSourceFile = sourceFile;
if (outputFile != null) {
mOutputFiles.add(outputFile);
}
}
/**
* Returns the source file as an {@link IFile}
*/
public IFile getSourceFile() {
return mSourceFile;
}
/**
* Returns whether the given file is a dependency for this source file.
* <p/>Note that the source file itself is not tested against. Therefore if
* {@code file.equals(getSourceFile()} returns {@code true}, this method will return
* {@code false}.
* @param file the file to check against
* @return true if the given file is a dependency for this source file.
*/
public boolean dependsOn(IFile file) {
return mDependencyFiles.contains(file);
}
/**
* Returns whether the given file is an ouput of this source file.
* @param file the file to test.
* @return true if the file is an output file.
*/
public boolean generated(IFile file) {
return mOutputFiles.contains(file);
}
void setOutputFiles(List<IFile> outputFiles) {
mOutputFiles.clear();
if (outputFiles != null) {
mOutputFiles.addAll(outputFiles);
}
}
void setOutputFile(IFile outputFile) {
mOutputFiles.clear();
if (outputFile != null) {
mOutputFiles.add(outputFile);
}
}
void setDependencyFiles(List<IFile> depFiles) {
mDependencyFiles.clear();
if (depFiles != null) {
mDependencyFiles.addAll(depFiles);
}
}
public List<IFile> getDependencyFiles() {
return mDependencyFiles;
}
/**
* Shortcut access to the first output file. This is useful for generator that only output
* one file.
*/
public IFile getOutput() {
if (mOutputFiles.size() > 0) {
return mOutputFiles.get(0);
}
return null;
}
public List<IFile> getOutputFiles() {
return Collections.unmodifiableList(mOutputFiles);
}
@Override
public String toString() {
return "NonJavaFileBundle [mSourceFile=" + mSourceFile + ", mGeneratedFiles="
+ mOutputFiles + ", mDependencies=" + mDependencyFiles + "]";
}
}