blob: 9868dd250c4dbd143ab5d3f6d88f4193e3f535c3 [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.svn.config;
import com.intellij.openapi.util.Ref;
import org.jetbrains.idea.svn.SvnBundle;
import java.util.*;
public class AmbiguousPatternsFinder {
private final Map<String, Set<String>> urls2groups;
private final static int ourMessageLen = 30;
public AmbiguousPatternsFinder() {
urls2groups = new HashMap<String, Set<String>>();
}
public void acceptUrls(final String groupName, final List<String> urls) {
for (String url : urls) {
final Set<String> set;
if (urls2groups.containsKey(url)) {
set = urls2groups.get(url);
} else {
set = new HashSet<String>();
urls2groups.put(url, set);
}
set.add(groupName);
}
}
public boolean isValid(final Ref<String> errorMessageRef) {
StringBuilder sb = null;
for (Map.Entry<String, Set<String>> entry : urls2groups.entrySet()) {
if (entry.getValue().size() > 1) {
if (sb == null) {
sb = new StringBuilder();
} else {
if (sb.length() > ourMessageLen) {
sb.append("...");
break;
}
sb.append("; ");
}
StringBuilder innerBuilder = null;
for (String groupName : entry.getValue()) {
if (innerBuilder == null) {
innerBuilder = new StringBuilder();
} else {
innerBuilder.append(", ");
}
innerBuilder.append(groupName);
}
sb.append(SvnBundle.message("dialog.edit.http.proxies.settings.error.ambiguous.group.patterns.to.text",
entry.getKey(), innerBuilder.toString()));
}
}
if (sb != null) {
errorMessageRef.set(SvnBundle.message("dialog.edit.http.proxies.settings.error.ambiguous.group.patterns.text", sb.toString()));
}
return sb == null;
}
}