package com.bagri.xqj;
import javax.xml.xquery.XQItemType;
import javax.xml.xquery.XQSequenceType;
public class BagriXQSequenceType implements XQSequenceType {
private XQItemType type;
private int occurence;
BagriXQSequenceType(XQItemType type, int occurence) {
this.type = type;
this.occurence = occurence;
}
@Override
public XQItemType getItemType() {
return type;
}
@Override
public int getItemOccurrence() {
return occurence;
}
@Override
public int hashCode() {
if (occurence == OCC_EMPTY) {
return 1;
}
return occurence*31 + type.hashCode();
}
@Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof XQSequenceType)) {
return false;
}
XQSequenceType other = (XQSequenceType) obj;
if (occurence != other.getItemOccurrence()) {
return false;
}
if (occurence == OCC_EMPTY) {
return true;
}
// here types can't be null
return type.equals(other.getItemType());
}
@Override
public String toString() {
return "XQSequenceType [type=" + type + ", occurence=" + occurence + "]";
}
}