br.itecbrazil.serviceftpcliente.model.ArquivoDao.java Source code

Java tutorial

Introduction

Here is the source code for br.itecbrazil.serviceftpcliente.model.ArquivoDao.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package br.itecbrazil.serviceftpcliente.model;

import br.itecbrazil.serviceftpcliente.enums.EnumArquivos;
import br.itecbrazil.serviceftpcliente.enums.EnumDiretorio;
import br.itecbrazil.serviceftpcliente.enums.EnumTipoArquivo;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author willian
 */
public class ArquivoDao {
    public ArquivoDao() {
        super();
    }

    public List<Arquivo> getArquivos(int tipo) throws FileNotFoundException {
        List<Arquivo> arquivos;
        if (tipo == EnumTipoArquivo.Envio.getTipoDoArquivo()) {
            arquivos = getEnvio();
        } else if (tipo == EnumTipoArquivo.Retorno.getTipoDoArquivo()) {
            arquivos = getRetorno();
        } else {
            throw new IllegalArgumentException("Tipo de arquivo " + tipo + " invlido");
        }
        return arquivos;
    }

    public void save(int tipo, ArrayList<Arquivo> arquivos) throws IOException {
        Gson gson = new GsonBuilder().setPrettyPrinting().create();
        File arquivo;
        if (tipo == EnumTipoArquivo.Envio.getTipoDoArquivo()) {
            arquivo = new File(EnumDiretorio.Configuracao.getDiretorio().concat(File.separator)
                    .concat(EnumArquivos.Envio.getNomeDoArquivo()));
            persistir(gson.toJson(arquivos), arquivo);
        } else if (tipo == EnumTipoArquivo.Retorno.getTipoDoArquivo()) {
            arquivo = new File(EnumDiretorio.Configuracao.getDiretorio().concat(File.separator)
                    .concat(EnumArquivos.Retorno.getNomeDoArquivo()));
            persistir(gson.toJson(arquivos), arquivo);
        } else {
            throw new IllegalArgumentException("Tipo de arquivo " + tipo + " invlido");
        }
    }

    private ArrayList<Arquivo> getEnvio() throws FileNotFoundException {
        File arquivoDeEnvio = new File(EnumDiretorio.Configuracao.getDiretorio().concat(File.separator)
                .concat(EnumArquivos.Envio.getNomeDoArquivo()));
        FileReader fr = new FileReader(arquivoDeEnvio);
        Gson gson = new Gson();
        Type listType = new TypeToken<List<Arquivo>>() {
        }.getType();
        ArrayList<Arquivo> arquivosEnviados = gson.fromJson(fr, listType);
        return arquivosEnviados;
    }

    private ArrayList<Arquivo> getRetorno() throws FileNotFoundException {
        File arquivoDeRetorno = new File(EnumDiretorio.Configuracao.getDiretorio().concat(File.separator)
                .concat(EnumArquivos.Retorno.getNomeDoArquivo()));
        FileReader fr = new FileReader(arquivoDeRetorno);
        Gson gson = new Gson();
        Type listType = new TypeToken<List<Arquivo>>() {
        }.getType();
        ArrayList<Arquivo> arquivosEnviados = gson.fromJson(fr, listType);
        return arquivosEnviados;
    }

    private void persistir(String conteudo, File arquivo) throws IOException {
        BufferedWriter buffWrite = new BufferedWriter(new FileWriter(arquivo));
        buffWrite.write(conteudo);
        buffWrite.flush();
        buffWrite.close();
    }

}