Search in sources :

Example 1 with SimpleRelation

use of gate.relations.SimpleRelation in project gate-core by GateNLP.

the class DocumentStaxUtils method readRelationSet.

public static void readRelationSet(XMLStreamReader xsr, RelationSet relations, Set<Integer> allAnnotIds) throws XMLStreamException {
    while (xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
        xsr.require(XMLStreamConstants.START_ELEMENT, null, "Relation");
        String type = xsr.getAttributeValue(null, "Type");
        String idString = xsr.getAttributeValue(null, "Id");
        String memberString = xsr.getAttributeValue(null, "Members");
        if (memberString == null)
            throw new XMLStreamException("A relation must have members");
        if (type == null)
            throw new XMLStreamException("A relation must have a type");
        if (idString == null)
            throw new XMLStreamException("A relation must have an id");
        String[] memberStrings = memberString.split(";");
        int[] members = new int[memberStrings.length];
        for (int i = 0; i < members.length; ++i) {
            members[i] = Integer.parseInt(memberStrings[i]);
        }
        xsr.nextTag();
        xsr.require(XMLStreamConstants.START_ELEMENT, null, "UserData");
        // get the string representation of the user data
        StringBuilder stringRep = new StringBuilder(1024);
        int eventType;
        while ((eventType = xsr.next()) != XMLStreamConstants.END_ELEMENT) {
            switch(eventType) {
                case XMLStreamConstants.CHARACTERS:
                case XMLStreamConstants.CDATA:
                    stringRep.append(xsr.getTextCharacters(), xsr.getTextStart(), xsr.getTextLength());
                    break;
                case XMLStreamConstants.START_ELEMENT:
                    throw new XMLStreamException("Elements not allowed within " + "user data.", xsr.getLocation());
                default:
            }
        }
        xsr.require(XMLStreamConstants.END_ELEMENT, null, "UserData");
        FeatureMap features = readFeatureMap(xsr);
        Relation r = new SimpleRelation(Integer.parseInt(idString), type, members);
        r.setFeatures(features);
        if (stringRep.length() > 0) {
            ObjectWrapper wrapper = new ObjectWrapper(stringRep.toString());
            r.setUserData(wrapper.getValue());
        }
        relations.add(r);
    }
}
Also used : FeatureMap(gate.FeatureMap) Relation(gate.relations.Relation) SimpleRelation(gate.relations.SimpleRelation) XMLStreamException(javax.xml.stream.XMLStreamException) SimpleRelation(gate.relations.SimpleRelation)

Aggregations

FeatureMap (gate.FeatureMap)1 Relation (gate.relations.Relation)1 SimpleRelation (gate.relations.SimpleRelation)1 XMLStreamException (javax.xml.stream.XMLStreamException)1