Iterator srcObjItr = indexes.getAnnotationIndex(org.apache.ctakes.typesystem.type.textspan.Segment.type).iterator();
org.apache.ctakes.typesystem.type.textspan.Segment segment = null;
while (srcObjItr.hasNext())
{
TOP srcObj = (TOP) srcObjItr.next();
Object[] constrArgVals = { jcas };
try
{
// create new destination object
TOP destObj = (TOP) iv_destContr.newInstance(constrArgVals);
// Find the segments that are to be handled as complete sections
boolean okayToSkip = false;
boolean segmentMissing = iv_skipSegmentsSet.isEmpty();
if (!segmentMissing){
Iterator getSkipSegs = iv_skipSegmentsSet.iterator();
segment = (org.apache.ctakes.typesystem.type.textspan.Segment) srcObj;
while (getSkipSegs.hasNext() && !okayToSkip){
if (getSkipSegs.next().equals(segment.getId())){
okayToSkip = true;
}
}
}
// copy data from source to destination
Iterator getterItr = iv_getSetMap.keySet().iterator();
while (getterItr.hasNext() && (okayToSkip || segmentMissing))
{
Method getterMeth = (Method) getterItr.next();
Method setterMeth = (Method) iv_getSetMap.get(getterMeth);
Object val = getterMeth.invoke(srcObj, (Object []) null);
Object[] setterArgs = { val };
setterMeth.invoke(destObj, setterArgs);
}
// add new destination object to JCas
if (okayToSkip) {
destObj.addToIndexes();
} else {
Iterator lookupWindows = FSUtil.getAnnotationsInSpanIterator(jcas, org.apache.ctakes.typesystem.type.textspan.LookupWindowAnnotation.type, segment.getBegin(), segment.getEnd());
while (lookupWindows.hasNext()){
org.apache.ctakes.typesystem.type.textspan.LookupWindowAnnotation lookup = (org.apache.ctakes.typesystem.type.textspan.LookupWindowAnnotation) lookupWindows.next();
org.apache.ctakes.typesystem.type.textspan.DrugLookupWindowAnnotation drugLookup = new org.apache.ctakes.typesystem.type.textspan.DrugLookupWindowAnnotation (jcas, lookup.getBegin(), lookup.getEnd());