/* * 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; } }