private TimeModel getEffectiveFromTimeModel(boolean configure) { return TimeModelFactory.create(getEventTimeModelConfig(), getEffectiveFromFieldNames(), configure); }
@Override public void configure(Config config) { this.config = config; this.eventTimeModel = getEventTimeModel(true); this.effectiveFromTimeModel = getEffectiveFromTimeModel(true); this.effectiveToTimeModel = getEffectiveToTimeModel(true); if (hasLastUpdatedField()) { this.lastUpdatedTimeModel = getLastUpdatedTimeModel(true); } }
private TimeModel getEffectiveToTimeModel(boolean configure) { return TimeModelFactory.create(getEventTimeModelConfig(), getEffectiveToFieldNames(), configure); }
@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; }
@Override public List<Row> planMutationsForKey(Row key, List<Row> arrivingForKey, List<Row> existingForKey) { resetCurrentSystemTime(); arriving = effectiveFromTimeModel.appendFields(arriving); arriving = effectiveToTimeModel.appendFields(arriving); if (hasCurrentFlagField()) { arriving = RowUtils.append(arriving, getCurrentFlagFieldName(), DataTypes.StringType, null); if (hasLastUpdatedField()) { arriving = lastUpdatedTimeModel.appendFields(arriving); arriving = PlannerUtils.copyTime(arriving, eventTimeModel, arriving, effectiveFromTimeModel); arriving = effectiveToTimeModel.setFarFutureTime(arriving); if (hasCurrentFlagField()) { arriving = RowUtils.set(arriving, getCurrentFlagFieldName(), getCurrentFlagYesValue()); if (hasLastUpdatedField()) { arriving = lastUpdatedTimeModel.setCurrentSystemTime(arriving); RowUtils.different(arriving, plan, getValueFieldNames())) if (hasCurrentFlagField()) { arriving = RowUtils.set(arriving, getCurrentFlagFieldName(), RowUtils.get(plan, getCurrentFlagFieldName())); if (hasLastUpdatedField()) { arriving = lastUpdatedTimeModel.setCurrentSystemTime(arriving); arriving = PlannerUtils.copyTime(arriving, eventTimeModel, arriving, effectiveFromTimeModel); arriving = PlannerUtils.copyPrecedingTime(plan, eventTimeModel, arriving, effectiveToTimeModel);
private TimeModel getEventTimeModel(boolean configure) { return TimeModelFactory.create(getEventTimeModelConfig(), getTimestampFieldNames(), configure); }