@Override
public ArrayList<MovimentoContabile> leggiFile() throws Exception {
ArrayList<MovimentoContabile> listaMovimenti= new ArrayList<MovimentoContabile>();
Workbook workbook = Workbook.getWorkbook(fileToUpload);
try {
Sheet sheet = workbook.getSheet(0);
for (int currentRow = RIGHE_INTESTAZIONE; currentRow < sheet.getRows(); currentRow++) {
societaVeicolo = sheet.getCell(0, currentRow);
if (isEmpty(societaVeicolo))
throw new UnvalidCellException(currentRow+1, 1);
dataRegistrazione = sheet.getCell(1, currentRow);
if (!(dataRegistrazione instanceof DateCell))
throw new UnvalidCellException(currentRow+1, 2);
dataCompetenza = sheet.getCell(2, currentRow);
if (!(dataCompetenza instanceof DateCell))
throw new UnvalidCellException(currentRow+1, 3);
tipoMovimento = sheet.getCell(3, currentRow);
if (isEmpty(tipoMovimento))
throw new UnvalidCellException(currentRow+1, 4);
causale = sheet.getCell(4, currentRow);
if (isEmpty(causale))
throw new UnvalidCellException(currentRow+1, 5);
progressivoCausale = sheet.getCell(5, currentRow);
if (!(progressivoCausale instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 6);
gruppo = sheet.getCell(6, currentRow);
if (!(gruppo instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 7);
mastro = sheet.getCell(7, currentRow);
if (!(mastro instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 8);
conto = sheet.getCell(8, currentRow);
if (!(conto instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 9);
dare = sheet.getCell(9, currentRow);
if (!(dare instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 10);
avere = sheet.getCell(10, currentRow);
if (!(avere instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 11);
descrizione = sheet.getCell(11, currentRow);
dataValuta = sheet.getCell(12, currentRow);
if (!isEmpty(dataValuta) && !(dataValuta instanceof DateCell))
throw new UnvalidCellException(currentRow+1, 13);
finanziamento = sheet.getCell(13, currentRow);
if (!isEmpty(finanziamento) && !(finanziamento instanceof NumberCell))
throw new UnvalidCellException(currentRow+1, 14);
if (emptyRow()) {
return listaMovimenti;
}
double value = 0.0;
MovimentoContabile movimentoCorrente = new MovimentoContabile();
movimentoCorrente.setCodiceSocietaVeicolo(societaVeicolo.getContents());
movimentoCorrente.setDataRegistrazione(((DateCell) dataRegistrazione).getDate());
movimentoCorrente.setDataCompetenza(((DateCell) dataCompetenza).getDate());
movimentoCorrente.setTipoMovimento(tipoMovimento.getContents());
movimentoCorrente.setCodiceCausale(causale.getContents());
value = ((NumberCell) progressivoCausale).getValue();
movimentoCorrente.setProgressivoCausaleOperazione((int) value);
movimentoCorrente.setPianoDeiConti(new PianoDeiConti());
value = ((NumberCell) gruppo).getValue();
movimentoCorrente.getPianoDeiConti().setCodiceGruppo((long) value);
value = ((NumberCell) mastro).getValue();
movimentoCorrente.getPianoDeiConti().setCodiceMastro((long) value);
value = ((NumberCell) conto).getValue();
movimentoCorrente.getPianoDeiConti().setCodiceConto((long) value);
value = ((NumberCell) dare).getValue();
movimentoCorrente.setImportoDare((double) value);
value = ((NumberCell) avere).getValue();
movimentoCorrente.setImportoAvere((double) value);
if (!isEmpty(descrizione))
movimentoCorrente.setDescrizioneMovimento(descrizione.getContents());
if (!isEmpty(dataValuta))
movimentoCorrente.setDataValuta(((DateCell) dataValuta).getDate());
if (!isEmpty(finanziamento)) {
value = ((NumberCell) finanziamento).getValue();
movimentoCorrente.setCodiceFinanziamento((int) value);
}
listaMovimenti.add(movimentoCorrente);
}
} finally {
workbook.close();
}
return listaMovimenti;
}