src/main/java/org/jboss/pressgang/ccms/model/utils/TopicUtilities.java
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;
    }
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;
    }
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
@param xml The content to apply the signature to
@param minHashXORs The list of XOR values to apply to the hash code
@return
Generate the min hashes