class OnceSchedulingStrategy implements ISchedulingStrategy {

    @Override
    public void init(final ISchedulerEntry entry, final IObject args) throws SchedulingStrategyExecutionException {
        try {
            LocalDateTime time = LocalDateTime.parse((String) args.getValue(timeFieldName));
            Boolean save = (Boolean) args.getValue(saveFieldName);

            entry.getState().setValue(timeFieldName, time.toString());

            if (save) {
                Boolean ntl = (Boolean) args.getValue(neverTooLateFieldName);

                entry.getState().setValue(neverTooLateFieldName, ntl);
                entry.save();
            }

            entry.scheduleNext(datetimeToMillis(time));
        } catch (ReadValueException | InvalidArgumentException | EntryStorageAccessException | ChangeValueException
                | EntryScheduleException e) {
            throw new SchedulingStrategyExecutionException("Error occurred initializing entry.", e);
        }
    }

    public  OnceSchedulingStrategy();

}