blob: 68e22f79c7fc8d9df0d916b94b77b982f1a4cd6a [file] [log] [blame]
/*
* Copyright 2000-2014 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.remote;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import com.intellij.openapi.util.JDOMExternalizer;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.PathMappingSettings;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
import java.util.Set;
/**
* @author traff
*/
public class RemoteSdkPropertiesHolder implements RemoteSdkProperties {
private static final String INTERPRETER_PATH = "INTERPRETER_PATH";
private static final String HELPERS_PATH = "HELPERS_PATH";
private static final String REMOTE_ROOTS = "REMOTE_ROOTS";
private static final String REMOTE_PATH = "REMOTE_PATH";
private static final String INITIALIZED = "INITIALIZED";
private static final String VALID = "VALID";
private static final String PATH_MAPPINGS = "PATH_MAPPINGS";
private String mySdkId;
private String myInterpreterPath;
private String myHelpersPath;
private final String myHelpersDefaultDirName;
private boolean myHelpersVersionChecked = false;
private Set<String> myRemoteRoots = Sets.newTreeSet();
private boolean myInitialized = false;
private boolean myValid = true;
@NotNull
private PathMappingSettings myPathMappings = new PathMappingSettings();
public RemoteSdkPropertiesHolder(String name) {
myHelpersDefaultDirName = name;
}
@Override
public String getInterpreterPath() {
return myInterpreterPath;
}
@Override
public void setInterpreterPath(String interpreterPath) {
myInterpreterPath = interpreterPath;
}
@Override
public String getHelpersPath() {
return myHelpersPath;
}
@Override
public void setHelpersPath(String helpersPath) {
myHelpersPath = helpersPath;
}
public String getDefaultHelpersName() {
return myHelpersDefaultDirName;
}
@Override
public void addRemoteRoot(String remoteRoot) {
myRemoteRoots.add(remoteRoot);
}
@Override
public void clearRemoteRoots() {
myRemoteRoots.clear();
}
@Override
public List<String> getRemoteRoots() {
return Lists.newArrayList(myRemoteRoots);
}
@Override
public void setRemoteRoots(List<String> remoteRoots) {
myRemoteRoots = Sets.newTreeSet(remoteRoots);
}
@NotNull
@Override
public PathMappingSettings getPathMappings() {
return myPathMappings;
}
@Override
public void setPathMappings(@Nullable PathMappingSettings pathMappings) {
myPathMappings = new PathMappingSettings();
if (pathMappings != null) {
myPathMappings.addAll(pathMappings);
}
}
@Override
public boolean isHelpersVersionChecked() {
return myHelpersVersionChecked;
}
@Override
public void setHelpersVersionChecked(boolean helpersVersionChecked) {
myHelpersVersionChecked = helpersVersionChecked;
}
public void setSdkId(String sdkId) {
mySdkId = sdkId;
}
public String getSdkId() {
return mySdkId;
}
@Override
public boolean isInitialized() {
return myInitialized;
}
@Override
public void setInitialized(boolean initialized) {
myInitialized = initialized;
}
@Override
public boolean isValid() {
return myValid;
}
@Override
public void setValid(boolean valid) {
myValid = valid;
}
public void copyTo(RemoteSdkProperties copy) {
copy.setInterpreterPath(getInterpreterPath());
copy.setHelpersPath(getHelpersPath());
copy.setHelpersVersionChecked(isHelpersVersionChecked());
copy.setRemoteRoots(getRemoteRoots());
copy.setInitialized(isInitialized());
copy.setValid(isValid());
}
public void save(Element rootElement) {
rootElement.setAttribute(INTERPRETER_PATH, StringUtil.notNullize(getInterpreterPath()));
rootElement.setAttribute(HELPERS_PATH, StringUtil.notNullize(getHelpersPath()));
rootElement.setAttribute(INITIALIZED, Boolean.toString(isInitialized()));
rootElement.setAttribute(VALID, Boolean.toString(isValid()));
PathMappingSettings.writeExternal(rootElement, myPathMappings);
for (String remoteRoot : getRemoteRoots()) {
final Element child = new Element(REMOTE_ROOTS);
child.setAttribute(REMOTE_PATH, remoteRoot);
rootElement.addContent(child);
}
}
public void load(Element element) {
setInterpreterPath(StringUtil.nullize(element.getAttributeValue(INTERPRETER_PATH)));
setHelpersPath(StringUtil.nullize(element.getAttributeValue(HELPERS_PATH)));
setRemoteRoots(JDOMExternalizer.loadStringsList(element, REMOTE_ROOTS, REMOTE_PATH));
setInitialized(StringUtil.parseBoolean(element.getAttributeValue(INITIALIZED), true));
setValid(StringUtil.parseBoolean(element.getAttributeValue(VALID), true));
setPathMappings(PathMappingSettings.readExternal(element));
}
}