public synchronized IndexTreePath < DeLiCluEntry > setHandled ( DBID id , O obj ) { if ( LOG . isDebugging ( ) ) { LOG . debugFine ( "setHandled " + id + ", " + obj + "\n" ) ; } // find the leaf node containing o IndexTreePath < DeLiCluEntry > pathToObject = findPathToObject ( getRootPath ( ) , obj , id ) ; if ( pathToObject == null ) { throw new AbortException ( "Object not found in setHandled." ) ; } // set o handled DeLiCluEntry entry = pathToObject . getEntry ( ) ; entry . setHasHandled ( true ) ; entry . setHasUnhandled ( false ) ; for ( IndexTreePath < DeLiCluEntry > path = pathToObject ; path . getParentPath ( ) != null ; path = path . getParentPath ( ) ) { DeLiCluEntry parentEntry = path . getParentPath ( ) . getEntry ( ) ; DeLiCluNode node = getNode ( parentEntry ) ; boolean hasHandled = false ; boolean hasUnhandled = false ; for ( int i = 0 ; i < node . getNumEntries ( ) ; i ++ ) { final DeLiCluEntry nodeEntry = node . getEntry ( i ) ; hasHandled = hasHandled || nodeEntry . hasHandled ( ) ; hasUnhandled = hasUnhandled || nodeEntry . hasUnhandled ( ) ; } parentEntry . setHasUnhandled ( hasUnhandled ) ; parentEntry . setHasHandled ( hasHandled ) ; } return pathToObject ; }
Marks the specified object as handled and returns the path of node ids from the root to the objects s parent .