package br.com.elotech.service;

import br.com.elotech.model.Biometria;
import br.com.elotech.scripts.BiometriasScript;
import br.com.elotech.util.Util;
import com.machinezoo.sourceafis.FingerprintMatcher;
import com.machinezoo.sourceafis.FingerprintTemplate;

import java.sql.ResultSet;
import java.sql.SQLException;

public class BiometriaService {

  public int compararBiometria(Biometria biometria) throws SQLException {
    ResultSet rs = Util.resolveResultSet(BiometriasScript.getSqlBiometrias());
    FingerprintTemplate biometriaTemplate = new FingerprintTemplate().deserialize(biometria.getTemplate());
    FingerprintMatcher matcher = new FingerprintMatcher().index(biometriaTemplate);
    int usuCodigo = 0;
    double melhorScore = 0;
    while (rs.next()){
      FingerprintTemplate template = new FingerprintTemplate().deserialize(rs.getString("biometria"));
         double score = matcher.match(template);
         if(score > melhorScore){
           melhorScore = score;
           usuCodigo = rs.getInt("usuario_id");
         }
    }
    rs.close();
    double minimoComparacao = 40;
    return melhorScore >= minimoComparacao ? usuCodigo : 0;
  }



}
