diff options
Diffstat (limited to 'eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceFileData.java')
-rw-r--r-- | eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceFileData.java | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceFileData.java b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceFileData.java new file mode 100644 index 000000000..d06bf1613 --- /dev/null +++ b/eclipse/plugins/com.android.ide.eclipse.adt/src/com/android/ide/eclipse/adt/internal/build/SourceFileData.java @@ -0,0 +1,132 @@ +/* + * 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 + "]"; + } +} |