summaryrefslogtreecommitdiff
path: root/plugins/svn4idea/src/org/jetbrains/idea/svn/branchConfig/SvnBranchMapperManager.java
diff options
context:
space:
mode:
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.java101
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);
+ }
+ }
+}