public class ArquivoGpxController {
  TrajetoController trajetoController = TrajetoController.getInstance();

  /** Implementação singleton ArquivoGpxController */
  private static ArquivoGpxController instance = null;

  public static ArquivoGpxController getInstance() {
    if (instance == null) instance = new ArquivoGpxController();

    return instance;
  }

  public void gerarArquivoReduzido(String valor, String caminhoOrigem, String caminhoDestino) {
    String tipoDeReducao = obterTipoDeReducao(valor);

    if (tipoDeReducao.equals("quilometragem")) {
      reducacaoPorQuilometragem(valor, caminhoOrigem, caminhoDestino);
    } else if (tipoDeReducao.equals("porcentagem")) {
      reducacaoPorPorcentagem(valor, caminhoOrigem, caminhoDestino);
    }
  }

  /** Obtem o tipo de redução que deve ser realizada através do valor passado */
  private String obterTipoDeReducao(String valor) {
    return valor.contains("%") ? "porcentagem" : "quilometragem";
  }

  /** Realiza a redução do arquivo eliminando os pontos com base na quilometragem passada */
  private void reducacaoPorQuilometragem(
      String valor, String caminhoOrigem, String caminhoDestino) {
    float quilometragemMaximaDesejada = Float.parseFloat(valor);
    trajetoController.reduzirTrajetoQuilometragem(
        quilometragemMaximaDesejada, caminhoOrigem, caminhoDestino);
  }

  /** Realiza a redução do arquivo eliminando os pontos com base na porcentagem passada */
  private void reducacaoPorPorcentagem(String valor, String caminhoOrigem, String caminhoDestino) {
    float porcentagem = Float.parseFloat(valor.replace("%", ""));
    trajetoController.reduzirTrajetoPorcentagem(porcentagem, caminhoOrigem, caminhoDestino);
  }
}
 /** Realiza a redução do arquivo eliminando os pontos com base na porcentagem passada */
 private void reducacaoPorPorcentagem(String valor, String caminhoOrigem, String caminhoDestino) {
   float porcentagem = Float.parseFloat(valor.replace("%", ""));
   trajetoController.reduzirTrajetoPorcentagem(porcentagem, caminhoOrigem, caminhoDestino);
 }
 /** Realiza a redução do arquivo eliminando os pontos com base na quilometragem passada */
 private void reducacaoPorQuilometragem(
     String valor, String caminhoOrigem, String caminhoDestino) {
   float quilometragemMaximaDesejada = Float.parseFloat(valor);
   trajetoController.reduzirTrajetoQuilometragem(
       quilometragemMaximaDesejada, caminhoOrigem, caminhoDestino);
 }