package org.erlide.ui.internal.search;
import org.erlide.engine.model.ErlElementKind;
import org.erlide.engine.model.root.IErlModule;
public class ErlangSearchElement {
private final String moduleName;
private final String name;
private final int arity;
private final String arguments;
private final boolean subClause;
private final ErlElementKind kind;
private final IErlModule module;
public ErlangSearchElement(final IErlModule module, final String moduleName,
final String name, final int arity, final String arguments,
final boolean subClause, final ErlElementKind kind) {
this.module = module;
this.moduleName = moduleName;
this.name = name;
this.arity = arity;
this.arguments = arguments;
this.subClause = subClause;
this.kind = kind;
}
public String getModuleName() {
return moduleName;
}
@Override
public boolean equals(final Object o) {
if (o instanceof ErlangSearchElement) {
final ErlangSearchElement e = (ErlangSearchElement) o;
if (e.moduleName.equals(moduleName) && e.name.equals(name)) {
if (e.arity == arity) {
if (e.subClause == subClause) {
if (e.arguments == null) {
return arguments == null;
}
return e.arguments.equals(arguments);
}
}
}
}
return false;
}
@Override
public int hashCode() {
final int multiplier = 37; // some prime
int hashCode = 13; // some random value
if (subClause) {
hashCode++;
}
hashCode = hashCode * multiplier + moduleName.hashCode();
if (name != null) {
hashCode = hashCode * multiplier + name.hashCode();
}
hashCode = hashCode * multiplier + arity;
if (arguments != null) {
hashCode = hashCode * multiplier + arguments.hashCode();
}
return hashCode;
}
public String getArguments() {
return arguments;
}
public boolean isSubClause() {
return subClause;
}
public ErlElementKind getKind() {
return kind;
}
public String getName() {
return name;
}
public int getArity() {
return arity;
}
public IErlModule getModule() {
return module;
}
}