public static Map < Integer , Integer > getMinHashes ( final String xml , final List < MinHashXOR > minHashXORs ) { final Map < Integer , Integer > retValue = new HashMap < Integer , Integer > ( ) ; // Clean the XML to remove element names and other useless data final String cleanedXML = cleanXMLForMinHash ( xml ) ; // the first minhash uses the builtin hashcode only final Integer baseMinHash = getMinHashInternal ( cleanedXML , null ) ; if ( baseMinHash != null ) { retValue . put ( 0 , baseMinHash ) ; } for ( int funcId = 1 ; funcId < org . jboss . pressgang . ccms . model . constants . Constants . NUM_MIN_HASHES ; ++ funcId ) { boolean foundMinHash = false ; for ( final MinHashXOR minHashXOR : minHashXORs ) { if ( minHashXOR . getMinHashXORFuncId ( ) == funcId ) { final Integer minHash = getMinHashInternal ( cleanedXML , minHashXOR . getMinHashXOR ( ) ) ; if ( minHash != null ) { retValue . put ( funcId , minHash ) ; } foundMinHash = true ; break ; } } if ( ! foundMinHash ) { throw new IllegalStateException ( "Did not find a minhash xor int for function " + funcId ) ; } } return retValue ; }
Generate the min hashes