/** * Metodo utilzado, luego de montar un Pyck, que debe guardarse en el Excel. * * @throws Exception */ public void guardarApuesta(CurrentPOddsPortal partidoOP, PartidoPyckioBO partidoPIO, PyckBO pyck) throws XLSException { File f = new File(PATH_FILE_RENDIMIENTO); HSSFWorkbook workbook = null; HSSFSheet sheet = null; // --------------------->>>>>>>>>>>>> // Si el archivo existe, leer el contenido if (f.exists()) { FileInputStream fileInputStream; try { fileInputStream = new FileInputStream(PATH_FILE_RENDIMIENTO); } catch (FileNotFoundException e) { e.printStackTrace(); throw new XLSException("No fue posible guardar Apuesta. Archivo no existe"); } try { workbook = new HSSFWorkbook(fileInputStream); } catch (IOException e) { e.printStackTrace(); throw new XLSException(); } // Mover los pycks existentes hacia abajo sheet = workbook.getSheet(PESTANA); HSSFRow row = sheet.getRow(1); HSSFCell celdag2 = row.getCell(convert('g')); // Buscar en F2, la cantidad total de Pycks Integer cantidadPycks = ((Double) celdag2.getNumericCellValue()).intValue(); HSSFCell celdaa2 = row.getCell(convert('a')); HSSFCell celdab2 = row.getCell(convert('b')); HSSFCell celdac2 = row.getCell(convert('c')); sheet.shiftRows(4, 4 + cantidadPycks, 1); // Agregar el nuevo Pyck row = sheet.createRow(4); // Agregar el nuevo Pyck Object[] datos = new Object[] { "", "", pyck.getStake(), pyck.getOdds(), pyck.getPyck().getAbreviatura(), "PDF", partidoOP.getFecha(), partidoOP.getCountry(), partidoOP.getEquipos(), partidoPIO.getEquipoLocal() + " - " + partidoPIO.getEquipoVisitante(), partidoOP.getLeague(), "Soccer", new Integer(1) }; llenarCeldas(row, datos); cantidadPycks = cantidadPycks + 1; double ganancias = 0.0; double perdidas = 0.0; HSSFRow rowPycks; for (int i = 4; i < 4 + cantidadPycks; i++) { rowPycks = sheet.getRow(i); try { perdidas = perdidas + rowPycks.getCell(convert('a')).getNumericCellValue(); ganancias = ganancias + rowPycks.getCell(convert('b')).getNumericCellValue(); } catch (java.lang.IllegalStateException ex) { perdidas = perdidas + 0.0; ganancias = ganancias + 0.0; } } celdag2.setCellValue(cantidadPycks); celdaa2.setCellValue(perdidas); celdab2.setCellValue(ganancias); celdac2.setCellValue(ganancias + perdidas); } else { // --------------------->>>>>>>>>>>>> // Si el archivo no existe, crearlo workbook = new HSSFWorkbook(); sheet = workbook.createSheet(PESTANA); int numberRow = 0; Row row = sheet.createRow(numberRow++); Object[] datos = new Object[] { "Perdidas", "Ganancias", "Total", null, null, null, "TotalPycks", null, "Estado ::", "(PDF = PorDefinir;", " FIN = Finalizado;", " SUS = Suspendido)" }; llenarCeldas(row, datos); row = sheet.createRow(numberRow++); // Se agregan las formulas para el calculo del rendimiento Cell cellA = row.createCell(convert('a')); cellA.setCellValue(0.0); Cell cellB = row.createCell(convert('b')); cellB.setCellValue(0.0); Cell cellC = row.createCell(convert('c')); cellC.setCellValue(0.0); Cell cellG = row.createCell(convert('g')); cellG.setCellValue(1.0); // Dejar linea en Blanco row = sheet.createRow(numberRow++); // Agregar linea para titulos row = sheet.createRow(numberRow++); datos = new Object[] { "Lose", "Win", "Stake", "Odds", "Pick", "Estado", "Date", "Country", "MatchOP", "MatchPIO", "Liga", "Sport" }; llenarCeldas(row, datos); // Agregar el nuevo Pyck row = sheet.createRow(numberRow++); datos = new Object[] { "", "", pyck.getStake(), pyck.getOdds(), pyck.getPyck().getAbreviatura(), "PDF", partidoOP.getFecha(), partidoOP.getCountry(), partidoOP.getEquipos(), partidoPIO.getEquipoLocal() + " - " + partidoPIO.getEquipoVisitante(), partidoOP.getLeague(), "Soccer", new Integer(1) }; llenarCeldas(row, datos); } // fin if - else Archivo Existe // Pone cada Columna AutoSize for (int i = 1; i <= 12; i++) { sheet.autoSizeColumn(i); } agregarStaticsObjs(pyck); FileOutputStream out; try { out = new FileOutputStream(new File(PATH_FILE_RENDIMIENTO)); workbook.write(out); out.close(); System.out.println("Excel written successfully.."); } catch (FileNotFoundException e) { e.printStackTrace(); throw new XLSException(); } catch (IOException e) { e.printStackTrace(); throw new XLSException(); } }
/** * Devuelve los Pycks en el Excel que estan por definirse. * * @throws IOException */ public List<PyckBO> getPyckPorDefinir(Boolean calcularMaps) throws XLSException { if (pycksPorDefinir != null && pycksPorDefinir.size() > 0 && !calcularMaps) { return pycksPorDefinir; } FileInputStream fileInputStream; try { fileInputStream = new FileInputStream(RUTA_ARCHIVO + "\\Rendimiento.xls"); } catch (FileNotFoundException e) { return pycksPorDefinir; } HSSFWorkbook workbook; try { workbook = new HSSFWorkbook(fileInputStream); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); throw new XLSException(); } HSSFSheet worksheet = workbook.getSheet(PESTANA); HSSFRow row = worksheet.getRow(1); HSSFCell celdag2 = row.getCell(convert('g')); System.out.println("IMPL celdaF2 = " + celdag2.getNumericCellValue()); Integer cantidadPycks; cantidadPycks = ((Double) celdag2.getNumericCellValue()).intValue(); System.out.println("IMPL cantidadPycks = " + cantidadPycks); HSSFCell celdaC2 = row.getCell(convert('c')); // Buscar en F2, la cantidad total de Pycks rendimiento = celdaC2.getNumericCellValue(); String estadoPyck; String resultBuscado; PyckBO bo; ResultadoPartidoBO resulP; CurrentPOddsPortal parOP; HSSFRow rowPicks; int stake; String gameOP; String country; String liga; String fecha; double odds; pycksPorDefinir = new ArrayList<PyckBO>(); mapPycksPorDefinir = new HashMap<PyckBO, Integer>(); System.out.println("IMPL justo antes del for " + cantidadPycks); // Leer el Excel que contiene los juegos pendientes // Proceder a leer cada registro for (int i = 0; i < cantidadPycks; i++) { System.out.println("Entro al for i " + i); rowPicks = worksheet.getRow(startRow + i - 1); estadoPyck = rowPicks.getCell(convert('f')).getStringCellValue(); System.out.println( "iteracion = " + i + " es " + estadoPyck + " startrow+i " + (startRow + i)); // Si el registro está por Definir if (estadoPyck.equals("PDF")) { resultBuscado = rowPicks.getCell(convert('e')).getStringCellValue(); stake = ((Double) rowPicks.getCell(convert('c')).getNumericCellValue()).intValue(); gameOP = rowPicks.getCell(convert('i')).getStringCellValue(); country = rowPicks.getCell(convert('h')).getStringCellValue(); liga = rowPicks.getCell(convert('k')).getStringCellValue(); fecha = rowPicks.getCell(convert('g')).getStringCellValue(); odds = rowPicks.getCell(convert('d')).getNumericCellValue(); System.out.println( "iteracion = " + i + " es " + estadoPyck + " startrow+i " + (startRow + i) + " GAMEOP = " + gameOP); // Crear un objeto PyckBO equivalente bo = new PyckBO(); parOP = new CurrentPOddsPortal(); parOP.setEquipos(gameOP); parOP.setCountry(country); parOP.setLeague(liga); parOP.setFecha(fecha); resulP = ResultadoPartidoBO.getObjFromAbrev(resultBuscado); bo.setAcierto(null); bo.setPyck(resulP); bo.setStake(stake); bo.setPartido(parOP); bo.setOdds(odds); // Agregarlo a la lista pycksPorDefinir.add(bo); Integer aux = startRow + i - 1; mapPycksPorDefinir.put(bo, aux); System.out.println("Se inserto en el map en aux = " + aux); System.out.println("Se inserto en el map con bo = " + bo.toString()); } } try { fileInputStream.close(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } // Devolver la lista return pycksPorDefinir; }