blob: 98ce15a5cf998bc34b40d9d48b0092fffe7131aa [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 org.netbeans.modules.j2ee.deployment.impl;
import java.io.File;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import org.netbeans.modules.j2ee.deployment.common.api.SourceFileMap;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeApplicationProvider;
import org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider;
import org.openide.filesystems.FileObject;
import org.openide.filesystems.FileUtil;
/**
*
* @author nn136682
*/
public class DefaultSourceMap extends SourceFileMap {
/**
* Straight file mapping service.
* Map a distribution path to a file using distribution path as relative path to a mapping root.
*/
private J2eeModuleProvider provider;
private HashSet rootFiles = new HashSet();
/** Creates a new instance of DefaultFileMapping */
public DefaultSourceMap(J2eeModuleProvider provider) {
this.provider = provider;
FileObject[] roots = provider.getSourceRoots();
for (int i=0; i<roots.length; i++) {
if (roots[i] != null) {
rootFiles.add(FileUtil.toFile(roots[i]));
}
}
}
public String getContextName() {
return provider.getDeploymentName();
}
public FileObject[] getSourceRoots() {
return provider.getSourceRoots();
}
public File getEnterpriseResourceDir() {
return provider.getJ2eeModule().getResourceDirectory();
}
public File[] getEnterpriseResourceDirs() {
ArrayList result = new ArrayList();
result.add(provider.getJ2eeModule().getResourceDirectory());
if (provider instanceof J2eeApplicationProvider) {
J2eeApplicationProvider jap = (J2eeApplicationProvider) provider;
J2eeModuleProvider[] children = jap.getChildModuleProviders();
for (int i=0; i<children.length; i++) {
result.add(children[i].getJ2eeModule().getResourceDirectory());
}
}
return (File[]) result.toArray(new File[result.size()]);
}
public boolean add(String distributionPath, FileObject sourceFile) {
return false;
}
public FileObject remove(String distributionPath) {
return null;
}
public FileObject[] findSourceFile(String distributionPath) {
ArrayList ret = new ArrayList();
FileObject[] roots = getSourceRoots();
String path = distributionPath.startsWith("/") ? distributionPath.substring(1) : distributionPath; //NOI18N
for (int i=0; i<roots.length; i++) {
FileObject fo = roots[i].getFileObject(path);
if (fo != null)
ret.add(fo);
}
return (FileObject[]) ret.toArray(new FileObject[ret.size()]);
}
public File getDistributionPath(FileObject sourceFile) {
for (Iterator i=rootFiles.iterator(); i.hasNext();) {
File rootFile = (File) i.next();
FileObject root = FileUtil.toFileObject(rootFile);
String relative = FileUtil.getRelativePath(root, sourceFile);
if (relative != null && ! relative.trim().equals("")) { //NOI18N
return new File(relative);
}
}
return null;
}
}