blob: 154a433b4dd91d1acd91c8de84677e180adbcde4 [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 org.jetbrains.idea.maven.vfs;
import com.intellij.lang.properties.IProperty;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.SystemInfo;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.openapi.vfs.VirtualFileManager;
import com.intellij.openapi.vfs.ex.dummy.DummyFileSystem;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.maven.dom.MavenDomUtil;
import java.util.Map;
import java.util.Properties;
public class MavenPropertiesVirtualFileSystem extends DummyFileSystem {
@NonNls public static final String PROTOCOL = "maven-properties";
@NonNls public static final String SYSTEM_PROPERTIES_FILE = "System.properties";
@NonNls public static final String ENV_PROPERTIES_FILE = "Environment.properties";
public static final String[] PROPERTIES_FILES = new String[]{SYSTEM_PROPERTIES_FILE, ENV_PROPERTIES_FILE};
private VirtualFile mySystemPropertiesFile;
private VirtualFile myEnvPropertiesFile;
public static MavenPropertiesVirtualFileSystem getInstance() {
return (MavenPropertiesVirtualFileSystem)VirtualFileManager.getInstance().getFileSystem(PROTOCOL);
}
@NotNull
public String getProtocol() {
return PROTOCOL;
}
public VirtualFile getSystemPropertiesFile() {
if (mySystemPropertiesFile == null) {
Properties systemProperties = new Properties();
for (Map.Entry<Object, Object> entry : System.getProperties().entrySet()) {
if (entry.getKey() instanceof String && entry.getValue() instanceof String) {
String key = (String)entry.getKey();
if (!key.startsWith("idea.")) {
systemProperties.setProperty(key, (String)entry.getValue());
}
}
}
mySystemPropertiesFile = new MavenPropertiesVirtualFile(SYSTEM_PROPERTIES_FILE, systemProperties, this);
}
return mySystemPropertiesFile;
}
public VirtualFile getEnvPropertiesFile() {
if (myEnvPropertiesFile == null) {
Properties envProperties = new Properties();
for (Map.Entry<String, String> each : System.getenv().entrySet()) {
String key = each.getKey();
if (key.startsWith("=")) continue;
envProperties.setProperty(SystemInfo.isWindows ? key.toUpperCase() : key, each.getValue());
}
myEnvPropertiesFile = new MavenPropertiesVirtualFile(ENV_PROPERTIES_FILE, envProperties, this);
}
return myEnvPropertiesFile;
}
//@Override
//public boolean isPhysical() {
// return false;
//}
public synchronized VirtualFile findFileByPath(@NotNull @NonNls String path) {
if (path.equals(SYSTEM_PROPERTIES_FILE)) {
return getSystemPropertiesFile();
}
if (path.equals(ENV_PROPERTIES_FILE)) {
return getEnvPropertiesFile();
}
return null;
}
@Nullable
public IProperty findSystemProperty(Project project, @NotNull String propertyName) {
return MavenDomUtil.findProperty(project, getSystemPropertiesFile(), propertyName);
}
@Nullable
public IProperty findEnvProperty(Project project, @NotNull String propertyName) {
return MavenDomUtil.findProperty(project, getEnvPropertiesFile(), propertyName);
}
//protected void deleteFile(Object requestor, VirtualFile vFile) throws IOException {
// throw new UnsupportedOperationException();
//}
//
//protected void moveFile(Object requestor, VirtualFile vFile, VirtualFile newParent) throws IOException {
// throw new UnsupportedOperationException();
//}
//
//protected void renameFile(Object requestor, VirtualFile vFile, String newName) throws IOException {
// throw new UnsupportedOperationException();
//}
//
//protected VirtualFile createChildFile(Object requestor, VirtualFile vDir, String fileName) throws IOException {
// throw new UnsupportedOperationException();
//}
//
//protected VirtualFile createChildDirectory(Object requestor, VirtualFile vDir, String dirName) throws IOException {
// throw new UnsupportedOperationException();
//}
//
//protected VirtualFile copyFile(Object requestor, VirtualFile virtualFile, VirtualFile newParent, String copyName)
// throws IOException {
// throw new UnsupportedOperationException();
//}
}