private void convertOldIdNameClass ( ) throws RepositoryException { String searchRoot = "/jcr:root" + ISO9075 . encodePath ( StorageConstants . NEXT_SERVER_ROOT ) ; String searchPropertyName = "className" ; String searchPropertyValue = "com.asf.nextserver.domain.ParameterValue" ; String statement = searchRoot + "//*[@" + searchPropertyName + "='" + searchPropertyValue + "']" ; QueryResult queryResult = getTemplate ( ) . query ( statement ) ; NodeIterator nodes = queryResult . getNodes ( ) ; LOG . info ( "Found " + nodes . getSize ( ) + " parameter value nodes" ) ; while ( nodes . hasNext ( ) ) { Node node = nodes . nextNode ( ) ; Property property = null ; try { property = node . getProperty ( "value" ) ; } catch ( PathNotFoundException ex ) { continue ; } try { Object value = deserialize ( property . getBinary ( ) . getStream ( ) ) ; if ( value instanceof Object [ ] ) { Object [ ] values = ( Object [ ] ) value ; Object [ ] convertedValues = new Object [ values . length ] ; boolean converted = false ; for ( int i = 0 ; i < values . length ; i ++ ) { Object tmp = values [ i ] ; if ( tmp instanceof com . asf . nextreports . engine . queryexec . IdName ) { com . asf . nextreports . engine . queryexec . IdName oldIdName = ( com . asf . nextreports . engine . queryexec . IdName ) tmp ; IdName idName = new IdName ( ) ; idName . setId ( oldIdName . getId ( ) ) ; idName . setName ( oldIdName . getName ( ) ) ; convertedValues [ i ] = idName ; converted = true ; } else { convertedValues [ i ] = tmp ; } } if ( converted ) { ValueFactory valueFactory = node . getSession ( ) . getValueFactory ( ) ; Binary binary = valueFactory . createBinary ( new ByteArrayInputStream ( serialize ( convertedValues ) ) ) ; property . setValue ( binary ) ; } } else if ( value instanceof com . asf . nextreports . engine . queryexec . IdName ) { com . asf . nextreports . engine . queryexec . IdName oldIdName = ( com . asf . nextreports . engine . queryexec . IdName ) value ; IdName idName = new IdName ( ) ; idName . setId ( oldIdName . getId ( ) ) ; idName . setName ( oldIdName . getName ( ) ) ; ValueFactory valueFactory = node . getSession ( ) . getValueFactory ( ) ; Binary binary = valueFactory . createBinary ( new ByteArrayInputStream ( serialize ( idName ) ) ) ; property . setValue ( binary ) ; } } catch ( Exception e ) { e . printStackTrace ( ) ; } } getTemplate ( ) . save ( ) ; }
IdName values can be found in ParameterValue entities which are used in Dashboards widget parameters or Scheduler report runtime parameters