@Override public void write(List<? extends T> items) throws Exception { for (T item : items) { if (item instanceof ItemIndexAware && useItemIndex) { Long index = ((ItemIndexAware) item).getIndex(); if (index != null) { jumpToItem(index.intValue()); } } if (currentItemCount < maxItemCount) { if (doWrite(item)) { currentItemCount++; } currentItemIndex++; } LOGGER.trace("[currentItemCount={}, currentItemIndex={}]", currentItemCount, currentItemIndex); } LOGGER.debug("Written {} items", items); }
@Override public void open(ExecutionContext executionContext) { this.executionContext = executionContext; super.open(executionContext); }
@Override public void open(ExecutionContext executionContext) throws ItemStreamException { super.open(executionContext); try { doOpen(); } catch (Exception e) { throw new ItemStreamException("Failed to initialize the writer", e); } if (!isSaveState()) { return; } if (executionContext.containsKey(getExecutionContextKey(WRITE_COUNT_MAX))) { maxItemCount = executionContext.getInt(getExecutionContextKey(WRITE_COUNT_MAX)); } if (executionContext.containsKey(getExecutionContextKey(WRITE_COUNT))) { int itemCount = executionContext.getInt(getExecutionContextKey(WRITE_COUNT)); currentItemCount = itemCount; if (itemCount < maxItemCount) { try { jumpToItem(itemCount); } catch (Exception e) { throw new ItemStreamException("Could not move to stored position on restart", e); } } } }
beforeItemCount = ((AbstractItemCountingItemStreamItemWriter) delegate).getCurrentItemCount(); afterItemCount = ((AbstractItemCountingItemStreamItemWriter) delegate).getCurrentItemCount(); final int maxItemCount = ((AbstractItemCountingItemStreamItemWriter) delegate).getMaxItemCount();
@Override protected void jumpToItem(int itemIndex) throws Exception { super.jumpToItem(rowsToSkip + itemIndex); }
@Override public void update(ExecutionContext executionContext) throws ItemStreamException { super.update(executionContext); if (saveState) { Assert.notNull(executionContext, "ExecutionContext must not be null"); executionContext.putInt(getExecutionContextKey(WRITE_COUNT), currentItemCount); if (maxItemCount < Integer.MAX_VALUE) { executionContext.putInt(getExecutionContextKey(WRITE_COUNT_MAX), maxItemCount); } } }
@Override public void close() throws ItemStreamException { super.close(); currentItemCount = 0; currentItemIndex = 0; try { doClose(); } catch (Exception e) { throw new ItemStreamException("Error while closing item writer", e); } }
@Override public void update(ExecutionContext executionContext) throws ItemStreamException { super.update(executionContext); if (isSaveState()) { if (rowsToSkip < Integer.MAX_VALUE) { executionContext.putInt(getExecutionContextKey(ROW_TO_SKIP_KEY), rowsToSkip); } executionContext.putInt(getExecutionContextKey(SHEET_INDEX_KEY), sheetIndex); } }
@Override public void open(ExecutionContext executionContext) throws ItemStreamException { super.open(executionContext); if (executionContext.containsKey(getExecutionContextKey(ROW_TO_SKIP_KEY))) { rowsToSkip = executionContext.getInt(getExecutionContextKey(ROW_TO_SKIP_KEY)); } if (executionContext.containsKey(getExecutionContextKey(SHEET_INDEX_KEY))) { sheetIndex = executionContext.getInt(getExecutionContextKey(SHEET_INDEX_KEY)); } }