@Override public Set<InstantiatedComponent> getComponents(Config config, boolean configure) { this.config = config; Set<InstantiatedComponent> components = Sets.newHashSet(); components.add(new InstantiatedComponent( getEventTimeModel(configure), getEventTimeModelConfig(), "Event Time Model")); if (hasLastUpdatedField()) { components.add(new InstantiatedComponent( getLastUpdatedTimeModel(configure), getLastUpdatedTimeModelConfig(), "Last Updated Time Model")); } return components; }
private TimeModel getLastUpdatedTimeModel(boolean configure) { return TimeModelFactory.create(getLastUpdatedTimeModelConfig(), getLastUpdatedFieldName(), configure); }
private TimeModel getEventTimeModel(boolean configure) { return TimeModelFactory.create(getEventTimeModelConfig(), getTimestampFieldNames(), configure); }
@Override public void configure(Config config) { this.config = config; this.eventTimeModel = getEventTimeModel(true); if (hasLastUpdatedField()) { this.lastUpdatedTimeModel = getLastUpdatedTimeModel(true); } this.valueFieldNames = getValueFieldNames(); }
@Override public List<Row> planMutationsForKey(Row key, List<Row> arrivingForKey, List<Row> existingForKey) { resetCurrentSystemTime(); if (hasLastUpdatedField()) { arriving = lastUpdatedTimeModel.appendFields(arriving); if (hasLastUpdatedField()) { arriving = lastUpdatedTimeModel.setCurrentSystemTime(arriving); RowUtils.different(arriving, existing, valueFieldNames)) if (hasLastUpdatedField()) { arriving = lastUpdatedTimeModel.setCurrentSystemTime(arriving);
private void resetCurrentSystemTime() { long currentSystemTimeMillis = System.currentTimeMillis(); this.eventTimeModel.configureCurrentSystemTime(currentSystemTimeMillis); if (hasLastUpdatedField()) { this.lastUpdatedTimeModel.configureCurrentSystemTime(currentSystemTimeMillis); } }