package org.intellij.sonar.persistence; import com.intellij.util.xmlb.annotations.Transient; import org.intellij.sonar.configuration.PasswordManager; public class SonarServerConfig { private String name; private String hostUrl; private boolean anonymous; private String user; // avoid save password in plain text @Transient private String password; @Transient private boolean isPasswordChanged = false; public static SonarServerConfig of(String hostUrl) { return SonarServerConfig.of(null,hostUrl,true,null); } public static SonarServerConfig of(String name,String hostUrl,boolean anonymous,String user) { SonarServerConfig bean = new SonarServerConfig(); bean.name = name; bean.hostUrl = hostUrl; bean.anonymous = anonymous; bean.user = user; return bean; } public String getName() { return name; } public String getHostUrl() { return hostUrl; } public boolean isAnonymous() { return anonymous; } public String getUser() { return user; } public void setName(String name) { this.name = name; } public void setHostUrl(String hostUrl) { this.hostUrl = hostUrl; } public void setAnonymous(boolean anonymous) { this.anonymous = anonymous; } public void setUser(String user) { this.user = user; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public boolean isPasswordChanged() { return isPasswordChanged; } public void setPasswordChanged(boolean isPasswordChanged) { this.isPasswordChanged = isPasswordChanged; } @Transient public void clearPassword() { this.password = null; } @Transient public String loadPassword() { this.password = PasswordManager.loadPassword(this.name); return this.password; } @Transient public void storePassword() { PasswordManager.storePassword(this.name,this.password); } @SuppressWarnings("RedundantIfStatement") @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; SonarServerConfig that = (SonarServerConfig) o; if (name != null ? !name.equals(that.name) : that.name != null) return false; return true; } @Override public int hashCode() { return name != null ? name.hashCode() : 0; } }