public void run() throws MainAppException { logger.info("Corriendo..."); __loadConfig(); __loadExcelReader(); File dbfFile = __loadDbfWriter(); __loadProviderId(); logger.info("Id del proveedor: " + providerId); logger.info("Modificando " + dbfFile.getAbsolutePath()); try { __alterDbf(); } catch (ExcelReaderException e1) { logger.error( "Ocurrió un error durante la modificación del archivo dbf " + configuration.getDbfFilePath(), e1); throw new MainAppException(e1); } try { dbfWriter.close(); } catch (DbfManagerException e) { logger.error("Ocurrió un error durante el cierre/ actualización del archivo DBF.", e); throw new MainAppException(e); } } // run
private void __alterDbf() throws ExcelReaderException { RowRecordIterator rowRecordIterator = excelReader.rowRecordIterator(); int parsedRecords = 0; ValueEqualsRecordPredicate predicate = new ValueEqualsLenientRecordPredicateBuilder("CODIGOPROV", providerId).buildStandard(); while (rowRecordIterator.hasNext()) { RowRecord rowRecord = (RowRecord) rowRecordIterator.next(); try { if (rowRecord.isEmpty()) { continue; } Object o_articulo = rowRecord.get(ARTICULO_KEY); Object o_preciouni = rowRecord.get(PRECIOUNI_KEY); if (StringUtils.nullOrEmpty(o_articulo) || StringUtils.nullOrEmpty(o_preciouni)) { continue; } String s_articulo = o_articulo.toString(); logger.info("Analizando registro xls " + (parsedRecords++) + " :: " + rowRecord.toString()); predicate.put(ARTICULO_KEY, s_articulo); dbfWriter.setPredicate(predicate); // Double d_preciouni = MoneyUtils.parsePriceAsDouble(o_preciouni); Double d_preciouni = MoneyUtils.parsePriceAsDouble(o_preciouni, configuration.getNumberLocale()); dbfWriter.updateRecords(PRECIOUNI_KEY, d_preciouni, true); } catch (Exception e) { logger.error( "Error al leer/actualizar el registro " + rowRecord.toString() + "::excepcion::" + e.toString()); } } // while (rowRecordIterator.hasNext()) if (parsedRecords == 0) { logger.error("NO SE ENCONTRARON REGISTROS VALIDOS EN EL EXCEL. "); logger.error("VERIFIQUE FORMATO DEL ARCHIVO EXCEL Y TITULOS DE LAS COLUMNAS. "); } } // __alterDbf
private File __loadDbfWriter() throws MainAppException { File dbfFile = new File(configuration.getDbfFilePath()); logger.info("Cargando archivo " + dbfFile.getAbsolutePath()); this.dbfWriter = new DbfPredicateWriter(dbfFile); try { dbfWriter.open(); } catch (DbfManagerException e) { String msg = "Ocurrió un error durante la apertura del archivo DBF."; logger.error(msg, e); throw new MainAppException(msg); } return dbfFile; }