package org.juxtasoftware.model;
import com.google.gson.annotations.Expose;
import eu.interedition.text.Name;
import eu.interedition.text.rdbms.RelationalName;
import java.util.HashSet;
import java.util.Set;
/**
* Defines a set of qnames that will be used to filter results
* returned from GET annotations and alignments requests
*
* @author loufoster
*
*/
public final class QNameFilter extends WorkspaceMember {
@Expose private String name;
private Set<Name> qnames = new HashSet<Name>();
public String getName() {
return name;
}
public void setName(final String name) {
this.name = name;
}
public Set<Name> getQNames() {
return qnames;
}
/**
* get a comma separated list of qname IDs that are part
* of this filter
* @return
*/
public String getQNameIdListAsString() {
StringBuffer sb = new StringBuffer();
for ( Name qname : getQNames() ) {
if ( sb.length() > 0 ) {
sb.append(",");
}
sb.append( ((RelationalName)qname).getId() );
}
return sb.toString();
}
public void setQNames(Set<Name> annotations) {
this.qnames = annotations;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
QNameFilter other = (QNameFilter) obj;
if (id == null) {
if (other.id != null) {
return false;
}
} else if (!id.equals(other.id)) {
return false;
}
if (name == null) {
if (other.name != null) {
return false;
}
} else if (!name.equals(other.name)) {
return false;
}
return true;
}
@Override
public String toString() {
return "QName Filter [id=" + id + ", name=" + name + "]";
}
}