package eu.dnetlib.iis.wf.affmatching.write;
import java.io.Serializable;
import com.google.common.base.Preconditions;
import eu.dnetlib.iis.wf.affmatching.model.MatchedOrganization;
/**
* Recalculator of matchStrength of two duplicate {@link MatchedOrganization}s
*
* @author madryk
*/
public class DuplicateMatchedOrgStrengthRecalculator implements Serializable {
private static final long serialVersionUID = 1L;
//------------------------ LOGIC --------------------------
/**
* Recalculates matchStrength of two duplicated {@link MatchedOrganization}s.<br/>
* New matchStrength will be calculated according to formula:<br/>
* <code>matchStrength1 + (1-matchStrength1)*matchStrength2</code><br/>
*
* Method does not modify input {@link MatchedOrganization}s.
*
* @return {@link MatchedOrganization} with recalculated {@link MatchedOrganization#getMatchStrength()}
*/
public MatchedOrganization recalculateStrength(MatchedOrganization match1, MatchedOrganization match2) {
Preconditions.checkNotNull(match1);
Preconditions.checkNotNull(match2);
Preconditions.checkArgument(match1.getDocumentId().equals(match2.getDocumentId()));
Preconditions.checkArgument(match1.getOrganizationId().equals(match2.getOrganizationId()));
float remainingMatchStrength = 1 - match1.getMatchStrength();
float newMatchStrength = match1.getMatchStrength() + (remainingMatchStrength * match2.getMatchStrength());
return new MatchedOrganization(match1.getDocumentId(), match1.getOrganizationId(), newMatchStrength);
}
}