package de.uniba.dsg.bpmnspector.refcheck;
import java.util.List;
/**
* This class holds the specification of a reference used to validate against.
* The information structure is consistent with the 'references.xsd', so that
* the elements of the 'references.xml' can be represented. A reference is
* specified through its name and the characteristics: XSD:QName or a XSD:IDREF
* reference and located as attribute or as sub element. There are possibly also
* the allowed types of the referenced elements. The special field marks it for
* additional hard coded handling. The number allows an easy look up in the
* corresponding bachelor thesis.
*
* @author Andreas Vorndran
* @author Matthias Geiger
* @version 1.0
*
*/
public class Reference {
private final int number;
private final String name;
private final List<String> types;
private final boolean qname;
private final boolean attribute;
/**
* Constructor
*
* @param number
* the sequence number used in the bachelor thesis
* @param name
* the name of reference
* @param types
* a list with the possible referenced types or null if only
* existence check
* @param qname
* identifies XSD:QName (true) or XSD:IDREF (false)
* @param attribute
* identifies whether the reference is an attribute (true) or an
* child element (false)
*/
public Reference(int number, String name, List<String> types,
boolean qname, boolean attribute) {
this.number = number;
this.name = name;
this.types = types;
this.qname = qname;
this.attribute = attribute;
}
/**
* @return the number
*/
public int getNumber() {
return number;
}
/**
* @return the name
*/
public String getName() {
return name;
}
/**
* @return the types
*/
public List<String> getTypes() {
return types;
}
/**
* @return the qname
*/
public boolean isQname() {
return qname;
}
/**
* @return the attribute
*/
public boolean isAttribute() {
return attribute;
}
@Override
public String toString() {
return String.format("{ #%d name: %s isQname? %b isAttribute? %b allowed Types: [%s]",
number, name, qname, attribute, types);
}
}