blob: d9d6e074c3a6a26a9116109670ab74a14c7abb54 [file] [log] [blame]
/*
* Copyright 2000-2009 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.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.apache.org/licenses/LICENSE-2.0
*
* 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.intellij.compiler.ant;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.vfs.VirtualFile;
import java.io.File;
/**
* @author Eugene Zhuravlev
* Date: Mar 19, 2004
*/
public class ModuleSources extends CompositeGenerator{
private final VirtualFile[] mySourceRoots = VirtualFile.EMPTY_ARRAY;
private final VirtualFile[] myTestSourceRoots = VirtualFile.EMPTY_ARRAY;
public ModuleSources(Module module, File baseDir, final GenerationOptions genOptions) {
/*
final ModuleRootManager rootManager = ModuleRootManager.getInstance(module);
final ModuleFileIndex moduleFileIndex = rootManager.getFileIndex();
final List<VirtualFile> sourceRootFiles = new ArrayList<VirtualFile>();
final List<VirtualFile> testSourceRootFiles = new ArrayList<VirtualFile>();
final Path sourcepath = new Path(BuildProperties.getSourcepathProperty(module.getName()));
final Path testSourcepath = new Path(BuildProperties.getTestSourcepathProperty(module.getName()));
final PatternSet excludedFromModule = new PatternSet(BuildProperties.getExcludedFromModuleProperty(module.getName()));
final ContentEntry[] contentEntries = rootManager.getContentEntries();
for (int idx = 0; idx < contentEntries.length; idx++) {
final ContentEntry contentEntry = contentEntries[idx];
final VirtualFile file = contentEntry.getFile();
if (file == null) {
continue; // filter invalid entries
}
if (!(file.getFileSystem() instanceof LocalFileSystem)) {
continue; // skip content roots inside jar and zip archives
}
final VirtualFile dirSetRoot = getDirSetRoot(contentEntry);
final String dirSetRootRelativeToBasedir = GenerationUtils.toRelativePath(dirSetRoot, baseDir, BuildProperties.getModuleChunkBasedirProperty(module), genOptions, !module.isSavePathsRelative());
final DirSet sourcesDirSet = new DirSet(dirSetRootRelativeToBasedir);
final DirSet testSourcesDirSet = new DirSet(dirSetRootRelativeToBasedir);
final VirtualFile[] sourceRoots = contentEntry.getSourceFolderFiles();
for (int i = 0; i < sourceRoots.length; i++) {
final VirtualFile root = sourceRoots[i];
if (!moduleFileIndex.isInContent(root)) {
continue; // skip library sources
}
addExcludePatterns(module, root, root, excludedFromModule, true);
final Include include = new Include(VfsUtil.getRelativePath(root, dirSetRoot, '/'));
if (moduleFileIndex.isInTestSourceContent(root)) {
testSourcesDirSet.add(include);
testSourceRootFiles.add(root);
}
else {
sourcesDirSet.add(include);
sourceRootFiles.add(root);
}
}
if (sourcesDirSet.getGeneratorCount() > 0) {
sourcepath.add(sourcesDirSet);
}
if (testSourcesDirSet.getGeneratorCount() > 0) {
testSourcepath.add(testSourcesDirSet);
}
}
mySourceRoots = sourceRootFiles.toArray(new VirtualFile[sourceRootFiles.size()]);
myTestSourceRoots = testSourceRootFiles.toArray(new VirtualFile[testSourceRootFiles.size()]);
final String moduleName = module.getName();
add(excludedFromModule);
final PatternSet excludedFromCompilation = new PatternSet(BuildProperties.getExcludedFromCompilationProperty(moduleName));
excludedFromCompilation.add(new PatternSetRef(BuildProperties.getExcludedFromModuleProperty(moduleName)));
excludedFromCompilation.add(new PatternSetRef(BuildProperties.PROPERTY_COMPILER_EXCLUDES));
add(excludedFromCompilation, 1);
if (sourcepath.getGeneratorCount() > 0) {
add(sourcepath, 1);
}
if (testSourcepath.getGeneratorCount() != 0) {
add(testSourcepath, 1);
}
*/
}
private VirtualFile getDirSetRoot(final ContentEntry contentEntry) {
final VirtualFile contentRoot = contentEntry.getFile();
final VirtualFile[] sourceFolderFiles = contentEntry.getSourceFolderFiles();
for (VirtualFile sourceFolderFile : sourceFolderFiles) {
if (contentRoot.equals(sourceFolderFile)) {
return contentRoot.getParent();
}
}
return contentRoot;
}
public VirtualFile[] getSourceRoots() {
return mySourceRoots;
}
public VirtualFile[] getTestSourceRoots() {
return myTestSourceRoots;
}
}