package org.intellij.sonar.persistence;
import java.util.ArrayList;
import java.util.Collection;
import com.google.common.base.Objects;
import org.sonar.wsclient.services.Resource;
public class Settings {
private String serverName;
private Collection<Resource> resources = new ArrayList<Resource>();
private String localAnalysisScripName;
private String workingDirSelection;
private String alternativeWorkingDirPath;
private Boolean useAlternativeWorkingDir;
public Settings() {
}
public Settings(
String serverName,
Collection<Resource> resources,
String localAnalysisScripName,
String workingDirSelection,
String alternativeWorkingDirPath,
Boolean useAlternativeWorkingDir
) {
this.serverName = serverName;
this.resources = resources;
this.localAnalysisScripName = localAnalysisScripName;
this.workingDirSelection = workingDirSelection;
this.alternativeWorkingDirPath = alternativeWorkingDirPath;
this.useAlternativeWorkingDir = useAlternativeWorkingDir;
}
public static Settings copyOf(Settings settings) {
return Settings.of(
settings.getServerName(),
settings.getResources(),
settings.getLocalAnalysisScripName(),
settings.getWorkingDirSelection(),
settings.getAlternativeWorkingDirPath(),
settings.getUseAlternativeWorkingDir()
);
}
public static Settings of(
String serverName,
Collection<Resource> resources,
String localAnalysisScripName,
String workingDirSelection,
String alternativeWorkingDirPath,
Boolean useAlternativeWorkingDir
) {
return new Settings(
serverName,
resources,
localAnalysisScripName,
workingDirSelection,
alternativeWorkingDirPath,
useAlternativeWorkingDir
);
}
public boolean isEmpty() {
return this.equals(new Settings());
}
public String getServerName() {
return serverName;
}
public void setServerName(String serverName) {
this.serverName = serverName;
}
public Collection<Resource> getResources() {
return resources;
}
public void setResources(Collection<Resource> resources) {
this.resources = resources;
}
public String getLocalAnalysisScripName() {
return localAnalysisScripName;
}
public void setLocalAnalysisScripName(String localAnalysisScripName) {
this.localAnalysisScripName = localAnalysisScripName;
}
public String getWorkingDirSelection() {
return workingDirSelection;
}
public void setWorkingDirSelection(String workingDirSelection) {
this.workingDirSelection = workingDirSelection;
}
public String getAlternativeWorkingDirPath() {
return alternativeWorkingDirPath;
}
public void setAlternativeWorkingDirPath(String alternativeWorkingDirPath) {
this.alternativeWorkingDirPath = alternativeWorkingDirPath;
}
public Boolean getUseAlternativeWorkingDir() {
return useAlternativeWorkingDir;
}
public void setUseAlternativeWorkingDir(Boolean useAlternativeWorkingDir) {
this.useAlternativeWorkingDir = useAlternativeWorkingDir;
}
@SuppressWarnings("RedundantIfStatement")
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Settings settings = (Settings) o;
if (alternativeWorkingDirPath != null
? !alternativeWorkingDirPath.equals(settings.alternativeWorkingDirPath)
: settings.alternativeWorkingDirPath != null)
return false;
if (localAnalysisScripName != null
? !localAnalysisScripName.equals(settings.localAnalysisScripName)
: settings.localAnalysisScripName != null)
return false;
if (resources != null
? !resources.equals(settings.resources)
: settings.resources != null)
return false;
if (serverName != null
? !serverName.equals(settings.serverName)
: settings.serverName != null)
return false;
if (useAlternativeWorkingDir != null
? !useAlternativeWorkingDir.equals(settings.useAlternativeWorkingDir)
: settings.useAlternativeWorkingDir != null)
return false;
if (workingDirSelection != null
? !workingDirSelection.equals(settings.workingDirSelection)
: settings.workingDirSelection != null)
return false;
return true;
}
@Override
public int hashCode() {
int result = serverName != null
? serverName.hashCode()
: 0;
result = 31 * result+(resources != null
? resources.hashCode()
: 0);
result = 31 * result+(localAnalysisScripName != null
? localAnalysisScripName.hashCode()
: 0);
result = 31 * result+(workingDirSelection != null
? workingDirSelection.hashCode()
: 0);
result = 31 * result+(alternativeWorkingDirPath != null
? alternativeWorkingDirPath.hashCode()
: 0);
result = 31 * result+(useAlternativeWorkingDir != null
? useAlternativeWorkingDir.hashCode()
: 0);
return result;
}
@Override
public String toString() {
return Objects.toStringHelper(this)
.add("serverName",serverName)
.add("resources",resources)
.add("localAnalysisScripName",localAnalysisScripName)
.add("workingDirSelection",workingDirSelection)
.add("alternativeWorkingDirPath",alternativeWorkingDirPath)
.add("useAlternativeWorkingDir",useAlternativeWorkingDir)
.toString();
}
}