blob: f9f99bea1e175ce36ab2803ad84b45f51189c813 [file] [log] [blame]
/*
* Copyright 2000-2012 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.svn.branchConfig;
import com.intellij.openapi.components.*;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import java.io.File;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/**
* Holds what working copies we have for URLs
*/
@State(
name = "SvnBranchMapperManager",
storages = {
@Storage(
file = StoragePathMacros.APP_CONFIG + "/other.xml"
)}
)
public class SvnBranchMapperManager implements PersistentStateComponent<SvnBranchMapperManager.SvnBranchMapperHolder> {
private SvnBranchMapperHolder myStateHolder;
public static SvnBranchMapperManager getInstance() {
return ServiceManager.getService(SvnBranchMapperManager.class);
}
public SvnBranchMapperManager() {
myStateHolder = new SvnBranchMapperHolder();
}
public SvnBranchMapperHolder getState() {
return myStateHolder;
}
public void loadState(final SvnBranchMapperHolder state) {
myStateHolder = state;
}
public void put(final String url, final String value) {
myStateHolder.put(url, value);
}
public void remove(final String url, final File value) {
final Set<String> set = myStateHolder.get(url);
if (set != null) {
set.remove(value.getAbsolutePath());
}
}
public void notifyBranchesChanged(final Project project, final VirtualFile vcsRoot, final SvnBranchConfigurationNew configuration) {
final Map<String, String> map = configuration.getUrl2FileMappings(project, vcsRoot);
if (map != null) {
for (Map.Entry<String, String> entry : map.entrySet()) {
put(entry.getKey(), entry.getValue());
}
}
}
public Set<String> get(final String key) {
return myStateHolder.get(key);
}
public static class SvnBranchMapperHolder {
public Map<String, Set<String>> myMapping;
public SvnBranchMapperHolder() {
myMapping = new HashMap<String, Set<String>>();
}
public void put(final String key, final String value) {
Set<String> files = myMapping.get(key);
if (files == null) {
files = new HashSet<String>();
myMapping.put(key, files);
}
files.add(value);
}
public Set<String> get(final String key) {
return myMapping.get(key);
}
}
}