/** * Sub-range access for document content. Allows <code>documentContent[15..20]</code>. This works * with ranges whose end points are any numeric type, so as well as using integer literals you can * do <code>documentContent[ann.start()..ann.end()]</code> (as start and end return Long). * * @param self * @param range * @return */ public static DocumentContent getAt(DocumentContent self, Range<?> range) { if (range.getFrom() instanceof Number) { try { return self.getContent( Long.valueOf(((Number) range.getFrom()).longValue()), Long.valueOf(((Number) range.getTo()).longValue())); } catch (InvalidOffsetException ioe) { throw new IndexOutOfBoundsException(ioe.getMessage()); } } else { throw new IllegalArgumentException("DocumentContent.getAt expects a numeric range"); } }
/** * Creates the Lookup annotations according to a gazetteer match. * * @param matchingState the final FSMState that was reached while matching. * @param matchedRegionStart the start of the matched text region. * @param matchedRegionEnd the end of the matched text region. * @param annotationSet the annotation set where the new annotations should be added. */ protected void createLookups( FSMState matchingState, long matchedRegionStart, long matchedRegionEnd, AnnotationSet annotationSet) { Iterator lookupIter = matchingState.getLookupSet().iterator(); while (lookupIter.hasNext()) { Lookup currentLookup = (Lookup) lookupIter.next(); FeatureMap fm = Factory.newFeatureMap(); fm.put(LOOKUP_MAJOR_TYPE_FEATURE_NAME, currentLookup.majorType); if (null != currentLookup.oClass && null != currentLookup.ontology) { fm.put(LOOKUP_CLASS_FEATURE_NAME, currentLookup.oClass); fm.put(LOOKUP_ONTOLOGY_FEATURE_NAME, currentLookup.ontology); } if (null != currentLookup.minorType) fm.put(LOOKUP_MINOR_TYPE_FEATURE_NAME, currentLookup.minorType); if (null != currentLookup.languages) fm.put(LOOKUP_LANGUAGE_FEATURE_NAME, currentLookup.languages); if (null != currentLookup.features) { fm.putAll(currentLookup.features); } try { // if(currentLookup.annotationType==null || "".equals(currentLookup.annotationType)){ // annotationSet.add(new Long(matchedRegionStart), // new Long(matchedRegionEnd + 1), // LOOKUP_ANNOTATION_TYPE, // fm); // }else{ annotationSet.add( new Long(matchedRegionStart), new Long(matchedRegionEnd + 1), currentLookup.annotationType, // this pojo attribute will have Lookup as a default tag. fm); // } } catch (InvalidOffsetException ioe) { throw new GateRuntimeException(ioe.toString()); } } // while(lookupIter.hasNext()) }