diff options
Diffstat (limited to 'plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchMapperManager.java')
-rw-r--r-- | plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchMapperManager.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchMapperManager.java b/plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchMapperManager.java new file mode 100644 index 000000000000..f9f99bea1e17 --- /dev/null +++ b/plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchMapperManager.java @@ -0,0 +1,101 @@ +/* + * 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); + } + } +} |