/** * Create a new configuration. * <p> * The underlying buffered writer's automatic flushing is used. * <p> * Same as {@code newConfig(0, 0, null)} * * @param <T> Tuple type * @return the flush configuration */ public static <T> FileWriterFlushConfig<T> newImplicitConfig() { return newConfig(0,0,null); } /** same as {@code newConfig(cntTuples, 0, null)}
/** same as {@code newConfig(0, periodMsec, null)} * * @param <T> Tuple type * @param periodMsec flush every {@code periodMsec} milliseconds. 0 to disable. * @return the flush configuration */ public static <T> FileWriterFlushConfig<T> newTimeBasedConfig(long periodMsec) { if (periodMsec < 1) throw new IllegalArgumentException("periodMsec"); return newConfig(0, periodMsec, null); } /** same as {@code newConfig(0, 0, tuplePredicate)}
/** same as {@code newConfig(0, 0, tuplePredicate)} * * @param <T> Tuple type * @param tuplePredicate flush if {@code tuplePredicate} is true. null to disable. * @return the flush configuration */ public static <T> FileWriterFlushConfig<T> newPredicateBasedConfig(Predicate<T> tuplePredicate) { if (tuplePredicate == null) throw new IllegalArgumentException("tuplePredicate"); return newConfig(0, 0, tuplePredicate); } /**
/** same as {@code newConfig(cntTuples, 0, null)} * * @param <T> Tuple type * @param cntTuples flush every {@code cntTuple} tuples written. 0 to disable. * @return the flush configuration */ public static <T> FileWriterFlushConfig<T> newCountBasedConfig(int cntTuples) { if (cntTuples < 1) throw new IllegalArgumentException("cntTuples"); return newConfig(cntTuples, 0, null); } /** same as {@code newConfig(0, periodMsec, null)}
@Test public void testFlushConfig() throws Exception { FileWriterFlushConfig<String> cfg; String trueTuple = "true"; String falseTuple = "false"; Predicate<String> p = tuple -> tuple.equals("true"); cfg = FileWriterFlushConfig.newImplicitConfig(); checkFileWriterConfig(cfg, 0, 0, null, trueTuple, falseTuple); cfg = FileWriterFlushConfig.newCountBasedConfig(3); checkFileWriterConfig(cfg, 3, 0, null, trueTuple, falseTuple); expectIAE(() -> FileWriterFlushConfig.newCountBasedConfig(0)); cfg = FileWriterFlushConfig.newTimeBasedConfig(10); checkFileWriterConfig(cfg, 0, 10, null, trueTuple, falseTuple); expectIAE(() -> FileWriterFlushConfig.newTimeBasedConfig(0)); cfg = FileWriterFlushConfig.newPredicateBasedConfig(p); checkFileWriterConfig(cfg, 0, 0, p, trueTuple, falseTuple); expectIAE(() -> FileWriterFlushConfig.newPredicateBasedConfig(null)); cfg = FileWriterFlushConfig.newConfig(1, 2, p); checkFileWriterConfig(cfg, 1, 2, p, trueTuple, falseTuple); cfg = FileWriterFlushConfig.newConfig(0, 0, null); checkFileWriterConfig(cfg, 0, 0, null, trueTuple, falseTuple); expectIAE(() -> FileWriterFlushConfig.newConfig(-1, 0, null)); expectIAE(() -> FileWriterFlushConfig.newConfig(0, -1, null)); }