@Override public boolean processRow(StepMetaInterface smi, StepDataInterface sdi) throws KettleException { Date startDate = new Date(0L); if (first) { first = false; try { startDate = getIncrementalFieldValue(); if (startDate == null) { setOutputDone(); return false; } } catch (KettleStepException e) { setErrors(1L); logError(e.getMessage()); setOutputDone(); return false; } if (data.rowMeta == null) { data.rowMeta = new RowMeta(); data.rowMeta.addValueMeta( new ValueMetaInteger(environmentSubstitute(meta.getOutputFieldName()))); } } switch (meta.getDownloadType()) { case TICKETS: for (Ticket ticket : data.conn.getTicketsIncrementally(startDate)) { putRow(data.rowMeta, processTicket(ticket)); incrementLinesOutput(); } break; case USERS: for (User user : data.conn.getUsersIncrementally(startDate)) { putRow(data.rowMeta, processUser(user)); incrementLinesOutput(); } break; case ORGANIZATIONS: for (Organization org : data.conn.getOrganizationsIncrementally(startDate)) { putRow(data.rowMeta, processOrganization(org)); incrementLinesOutput(); } break; case HELPCENTER_ARTICLES: for (Article article : data.conn.getArticlesIncrementally(startDate)) { putRow(data.rowMeta, processArticle(article)); } break; } setOutputDone(); return false; }
private Date getIncrementalFieldValue() throws KettleException { Date result = null; boolean firstRow = true; Object[] row; RowMetaInterface inputRowMeta; while ((row = getRow()) != null) { if (firstRow) { firstRow = false; inputRowMeta = getInputRowMeta(); if (inputRowMeta == null || inputRowMeta.size() <= 0) { if (log.isBasic()) { logBasic(BaseMessages.getString(PKG, "ZendeskInput.Error.NoIncomingRows")); } return null; } String filenameField = environmentSubstitute(meta.getTimestampFieldName()); int fieldIndex = inputRowMeta.indexOfValue(filenameField); if (fieldIndex < 0) { throw new KettleStepException( BaseMessages.getString( PKG, "ZendeskInputIncremental.Exception.StartDateFieldNotFound", filenameField)); } ValueMetaInterface fieldValueMeta = inputRowMeta.getValueMeta(fieldIndex); if (!(fieldValueMeta instanceof ValueMetaDate)) { throw new KettleStepException( BaseMessages.getString( PKG, "ZendeskInput.Error.WrongFieldType", ValueMetaFactory.getValueMetaName(fieldValueMeta.getType()))); } else { result = fieldValueMeta.getDate(row[fieldIndex]); } } else { if (log.isDetailed()) { logDetailed( BaseMessages.getString(PKG, "ZendeskInput.Warning.IgnoringAdditionalInputRows")); } } } if (firstRow) { if (log.isBasic()) { logBasic(BaseMessages.getString(PKG, "ZendeskInput.Error.NoIncomingRows")); } } return result; }