blob: 636d5b5565b5cf384936aa5b131524886ad8054e [file] [log] [blame]
/*
* Copyright 2000-2010 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.tasks.impl;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.PasswordUtil;
import com.intellij.tasks.TaskRepository;
import com.intellij.tasks.TaskRepositoryType;
import com.intellij.util.xmlb.annotations.Tag;
import com.intellij.util.xmlb.annotations.Transient;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @author Dmitry Avdeev
*/
public abstract class BaseRepository extends TaskRepository {
private static final Pattern PATTERN = Pattern.compile("[A-Z]+\\-\\d+");
protected String myUsername = "";
protected String myPassword = "";
protected boolean myUseProxy;
protected boolean myUseHttpAuthentication;
protected boolean myLoginAnonymously;
public BaseRepository(TaskRepositoryType type) {
super(type);
}
public BaseRepository(BaseRepository other) {
super(other);
myPassword = other.getPassword();
myUsername = other.getUsername();
myUseProxy = other.myUseProxy;
myUseHttpAuthentication = other.myUseHttpAuthentication;
myLoginAnonymously = other.myLoginAnonymously;
}
public BaseRepository() {
}
public void setUsername(String username) {
myUsername = username;
}
public void setPassword(String password) {
myPassword = password;
}
@Tag("username")
public String getUsername() {
return myUsername;
}
@Transient
public String getPassword() {
return myPassword;
}
@Tag("password")
public String getEncodedPassword() {
return PasswordUtil.encodePassword(getPassword());
}
public void setEncodedPassword(String password) {
try {
setPassword(PasswordUtil.decodePassword(password));
}
catch (NumberFormatException e) {
// do nothing
}
}
@NotNull
@Override
public abstract BaseRepository clone();
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof BaseRepository)) return false;
if (!super.equals(o)) return false;
BaseRepository that = (BaseRepository)o;
if (!Comparing.equal(getUrl(), that.getUrl())) return false;
if (!Comparing.equal(getPassword(), that.getPassword())) return false;
if (!Comparing.equal(getUsername(), that.getUsername())) return false;
if (!Comparing.equal(isLoginAnonymously(), that.isLoginAnonymously())) return false;
if (!Comparing.equal(isUseProxy(), that.isUseProxy())) return false;
if (!Comparing.equal(isUseHttpAuthentication(), that.isUseHttpAuthentication())) return false;
return true;
}
public boolean isUseProxy() {
return myUseProxy;
}
public void setUseProxy(boolean useProxy) {
myUseProxy = useProxy;
}
public boolean isUseHttpAuthentication() {
return myUseHttpAuthentication;
}
public void setUseHttpAuthentication(boolean useHttpAuthentication) {
myUseHttpAuthentication = useHttpAuthentication;
}
public boolean isLoginAnonymously() {
return myLoginAnonymously;
}
public void setLoginAnonymously(final boolean loginAnonymously) {
myLoginAnonymously = loginAnonymously;
}
@Nullable
public String extractId(@NotNull String taskName) {
Matcher matcher = PATTERN.matcher(taskName);
return matcher.find() ? matcher.group() : null;
}
}