package com.andreiolar.abms.utils; import java.io.File; import java.io.FileInputStream; import java.math.BigDecimal; import java.math.RoundingMode; import java.sql.Connection; import java.sql.PreparedStatement; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.andreiolar.abms.server.MyConnection; import com.andreiolar.abms.shared.PersonalUpkeepInformation; public class ExcelToPersonalView { private static final String[] FILE_TYPES = {"xls", "xlsx"}; public static void processFile(File uploadedFile) throws Exception { Workbook workbook = null; String fileName = uploadedFile.getName(); List<PersonalUpkeepInformation> allUpkeepInformations = new ArrayList<PersonalUpkeepInformation>(); String month = fileName.substring(fileName.indexOf("_") + 1, fileName.lastIndexOf("_")); String year = fileName.substring(fileName.lastIndexOf("_") + 1, fileName.indexOf(".")); String luna = month + " " + year; if (fileName.toLowerCase().endsWith(FILE_TYPES[0])) { workbook = new HSSFWorkbook(new FileInputStream(uploadedFile)); } else { workbook = new XSSFWorkbook(new FileInputStream(uploadedFile)); } Sheet sheet = workbook.getSheetAt(0); Iterator<Row> rows = sheet.rowIterator(); Iterator<Cell> cells = null; while (rows.hasNext()) { Row row = rows.next(); cells = row.cellIterator(); String aptNumber = null; String spatiuComun = null; String suprafataApt = null; String incalzire = null; String apaCaldaMenajera = null; String apaReceSiCanalizare = null; String numarPersoane = null; String gunoi = null; String curent = null; String gaz = null; String servicii = null; String gospodaresti = null; String nume = null; String costTotal = null; while (cells.hasNext()) { Cell cell = cells.next(); if (row.getRowNum() > 1) { cell.setCellType(Cell.CELL_TYPE_STRING); String cellValue = cell.getStringCellValue(); switch (cell.getColumnIndex()) { case 0 : aptNumber = cellValue; break; case 1 : spatiuComun = cellValue; break; case 2 : suprafataApt = cellValue; break; case 4 : incalzire = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 6 : apaCaldaMenajera = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 8 : apaReceSiCanalizare = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 9 : numarPersoane = cellValue; break; case 10 : gunoi = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 11 : curent = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 12 : gaz = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 13 : servicii = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 14 : gospodaresti = cellValue.length() > 10 ? cellValue.substring(0, 10) : cellValue; break; case 16 : nume = cellValue; break; case 17 : BigDecimal total = new BigDecimal(cellValue).setScale(2, RoundingMode.CEILING); costTotal = total.toString(); break; } } } if (row.getRowNum() > 1) { if (aptNumber == null) { continue; } PersonalUpkeepInformation personalUpkeepInformation = new PersonalUpkeepInformation(aptNumber, spatiuComun, suprafataApt, incalzire, apaCaldaMenajera, apaReceSiCanalizare, numarPersoane, gunoi, curent, gaz, servicii, gospodaresti, nume, costTotal, luna); allUpkeepInformations.add(personalUpkeepInformation); } } workbook.close(); Connection conn = null; PreparedStatement stmt = null; try { conn = MyConnection.getConnection(); for (PersonalUpkeepInformation pui : allUpkeepInformations) { try { String q = "insert into personal_upkeep_information(aptNumber,spatiuComun,suprafataApt,incalzire,apaCaldaMenajera,apaReceSiCanalizare,numarPersoane,gunoi,curent,gaz,servicii,gospodaresti,nume,costTotal,luna) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; stmt = conn.prepareStatement(q); stmt.setString(1, pui.getAptNumber()); stmt.setString(2, pui.getSpatiuComun()); stmt.setString(3, pui.getSuprafataApt()); stmt.setString(4, pui.getIncalzire()); stmt.setString(5, pui.getApaCaldaMenajera()); stmt.setString(6, pui.getApaReceSiCanalizare()); stmt.setString(7, pui.getNumarPersoane()); stmt.setString(8, pui.getGunoi()); stmt.setString(9, pui.getCurent()); stmt.setString(10, pui.getGaz()); stmt.setString(11, pui.getServicii()); stmt.setString(12, pui.getGospodaresti()); stmt.setString(13, pui.getNume()); stmt.setString(14, pui.getCostTotal()); stmt.setString(15, luna); stmt.executeUpdate(); } catch (Exception e) { throw new RuntimeException("Something went wrong: " + e.getMessage(), e); } finally { stmt.close(); } } } catch (Exception e) { throw new RuntimeException("Something went wrong: " + e.getMessage(), e); } finally { conn.close(); } } }