Hi Thilo,

Actually, I am using the subiterator functionality and I need to have type priorities to be set. But I don't want the user of a component to be able to alter the type priorities by modifying the descriptors where type priorities typically are set.

is that necessary?  The user mustn't change the type system either,
else the annotator will no longer work.  Wouldn't you say it's part
of the contract that such metadata is not changed by the user?
well, yeah. Could see it that way. But if I know at time of writing the component which types it will use and how the priorities should look like, why should I risk to let the user violate that "contract" ?

But to come back to the true problem: I am asking about type priorities because I am using the subiterator. For me, type priorities are necessary when the types I am interested in are of exactly the same offset as the type with which I constrain my subiterator. So, the question for me is: shall I use the subiterator (and define priorities in the compoennts descriptor) or shall I write my own function(see below) doing what I want without the type priority problems:

----- SNIP --------
// gives me a list of all abbreviations which are "within" my entity
public ArrayList<Abbreviation> getAbbreviations(Entity entity, JFSIndexRepository index) {
ArrayList<Abbreviation> abbrev = new ArrayList<Abbreviation>();
int StartOffset = entity.getBegin();
int EndOffset = entity.getEnt();
Iterator iter = index.getAnnotationIndex(Abbreviation.type).iterator();
while (iter.hasNext()) {
        Abbreviation currAbbrev = (Abbreviation) iter.next();
if (currAbbrev.getBegin() >= startOffset && currAbbrev.getEnd() <= endOffset) {
                abbrev.add(currAbbrev);
        }
}
return abbrev;
}
----- SNIP --------

Do you see an efficiency disadvantage when using the above function instead of the subiterator?

Katrin

Reply via email to