Skip to content

Commit 720ecd4

Browse files
committed
add short asyn help content for plugin field
1 parent 5f0941f commit 720ecd4

File tree

5 files changed

+89
-11
lines changed

5 files changed

+89
-11
lines changed

tis-incr/tis-flink-cdc-common/src/main/java/com/qlangtech/plugins/incr/debuzium/DebuziumPropAssist.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818

1919
package com.qlangtech.plugins.incr.debuzium;
2020

21-
import com.google.common.collect.Lists;
2221
import com.qlangtech.tis.extension.Describable;
2322
import com.qlangtech.tis.extension.Descriptor;
2423
import com.qlangtech.tis.extension.util.AbstractPropAssist;
24+
import com.qlangtech.tis.extension.util.OverwriteProps;
25+
import com.qlangtech.tis.extension.util.PluginExtraProps;
2526
import com.qlangtech.tis.manage.common.Option;
2627
import io.debezium.config.Field;
2728
import io.debezium.config.Field.EnumRecommender;
@@ -47,7 +48,7 @@ public static <T extends Describable, PLUGIN extends T> Options<PLUGIN, Field> c
4748

4849
@Override
4950
protected MarkdownHelperContent getDescription(Field configOption) {
50-
return new MarkdownHelperContent(configOption.description());
51+
return new MarkdownHelperContent(PluginExtraProps.AsynPropHelp.create( configOption.description()));
5152
}
5253

5354
@Override
@@ -64,7 +65,7 @@ protected List<Option> getOptEnums(Field configOption) {
6465
throw new IllegalStateException("unsupported type:" + targetClazz);
6566
}
6667
case BOOLEAN: {
67-
opts = Lists.newArrayList(new Option("是", true), new Option("否", false));
68+
opts = OverwriteProps.ENUM_BOOLEAN;// Lists.newArrayList(new Option("是", true), new Option("否", false));
6869
break;
6970
}
7071
case CLASS:

tis-incr/tis-realtime-flink/src/main/java/com/qlangtech/plugins/incr/flink/launch/FlinkPropAssist.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.qlangtech.tis.extension.impl.RootFormProperties;
2727
import com.qlangtech.tis.extension.util.AbstractPropAssist.MarkdownHelperContent;
2828
import com.qlangtech.tis.extension.util.OverwriteProps;
29+
import com.qlangtech.tis.extension.util.PluginExtraProps;
2930
import com.qlangtech.tis.manage.common.Option;
3031
import org.apache.commons.lang3.EnumUtils;
3132
import org.apache.commons.lang3.StringUtils;
@@ -201,7 +202,7 @@ protected void addFieldDescriptor(String fieldName, ConfigOption<?> configOption
201202
Object dftVal = overwriteProps.processDftVal(configOption.defaultValue());
202203

203204

204-
MarkdownHelperContent helperContent = new MarkdownHelperContent(htmlFormatter.format(desc));
205+
MarkdownHelperContent helperContent = new MarkdownHelperContent(PluginExtraProps.AsynPropHelp.create(htmlFormatter.format(desc)));
205206
if (overwriteProps.appendHelper.isPresent()) {
206207
helperContent.append(overwriteProps);
207208
// helperContent.append("\n\n").append(overwriteProps.appendHelper.get());
@@ -214,22 +215,22 @@ protected void addFieldDescriptor(String fieldName, ConfigOption<?> configOption
214215
if (dftVal != null) {
215216
dftVal = ((Duration) dftVal).getSeconds();
216217
}
217-
helperContent.append(new MarkdownHelperContent("单位:`秒`"));
218+
helperContent.append(new MarkdownHelperContent(PluginExtraProps.AsynPropHelp.create("单位:`秒`")));
218219
} else if (targetClazz == MemorySize.class) {
219220
if (dftVal != null) {
220221
dftVal = ((MemorySize) dftVal).getMebiBytes();
221222
}
222-
helperContent.append(new MarkdownHelperContent("单位:`" + MemoryUnit.MEGA_BYTES.getUnits()[1] + "`"));
223+
helperContent.append(new MarkdownHelperContent(PluginExtraProps.AsynPropHelp.create("单位:`" + MemoryUnit.MEGA_BYTES.getUnits()[1] + "`")));
223224
} else if (targetClazz.isEnum()) {
224225
List<Enum> enums = EnumUtils.getEnumList((Class<Enum>) targetClazz);
225226
opts = enums.stream().map((e) -> new Option(e.name())).collect(Collectors.toList());
226227
} else if (targetClazz == Boolean.class) {
227-
opts = Lists.newArrayList(new Option("是", true), new Option("否", false));
228+
opts = OverwriteProps.ENUM_BOOLEAN;
228229
}
229230

230231
Optional<List<Option>> optsOp = overwriteProps.opts.isPresent() ? overwriteProps.opts : Optional.ofNullable(opts);
231232

232-
descriptor.addFieldDescriptor(fieldName, dftVal, null, helperContent, optsOp, overwriteProps.getDisabled());
233+
descriptor.addFieldDescriptor(fieldName, dftVal, null, helperContent, optsOp, overwriteProps);
233234
}
234235

235236
private static Method getClazzMethod;

tis-incr/tis-realtime-flink/src/main/java/com/qlangtech/plugins/incr/flink/launch/TISFlinkCDCStreamFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
import java.util.function.Consumer;
6262
import java.util.stream.Collectors;
6363

64-
import static com.qlangtech.tis.extension.Descriptor.SWITCH_ON;
64+
import static com.qlangtech.tis.extension.Descriptor.SWITCH_OFF;
6565

6666
/**
6767
* @author: 百岁(baisui@qlangtech.com)
@@ -112,7 +112,7 @@ public static List<Descriptor<CheckpointFactory>> filterCheckpoint(List<Descript
112112
BaseDataxWriterDescriptor desc = (BaseDataxWriterDescriptor) dataxWriter.getDescriptor();
113113
if (desc.getEndType() == EndType.Paimon) {
114114
// paimon端必须要开启checkpoint
115-
return descs.stream().filter((d) -> SWITCH_ON.equals(d.getDisplayName())).collect(Collectors.toList());
115+
return descs.stream().filter((d) -> !SWITCH_OFF.equals(d.getDisplayName())).collect(Collectors.toList());
116116
}
117117
return descs;
118118
}

tis-incr/tis-realtime-flink/src/main/java/com/qlangtech/plugins/incr/flink/launch/ckpt/CKOff.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@
3232
public class CKOff extends CheckpointFactory {
3333
@Override
3434
public void setProps(StreamExecutionEnvironment env) {
35-
35+
env.enableCheckpointing(-1);
3636
}
3737

3838
@Override
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package com.qlangtech.plugins.incr.flink.launch.ckpt;
2+
3+
import com.alibaba.citrus.turbine.Context;
4+
import com.qlangtech.plugins.incr.flink.launch.CheckpointFactory;
5+
import com.qlangtech.plugins.incr.flink.launch.FlinkPropAssist;
6+
import com.qlangtech.tis.extension.Descriptor;
7+
import com.qlangtech.tis.extension.TISExtension;
8+
import com.qlangtech.tis.extension.util.OverwriteProps;
9+
import com.qlangtech.tis.plugin.annotation.FormField;
10+
import com.qlangtech.tis.plugin.annotation.FormFieldType;
11+
import com.qlangtech.tis.plugin.annotation.Validator;
12+
import com.qlangtech.tis.runtime.module.misc.IFieldErrorHandler;
13+
import org.apache.flink.streaming.api.environment.ExecutionCheckpointingOptions;
14+
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
15+
16+
import java.time.Duration;
17+
18+
/**
19+
*
20+
* @author 百岁 (baisui@qlangtech.com)
21+
* @date 2025/12/24
22+
*/
23+
public class DefaultCK extends CheckpointFactory {
24+
25+
@FormField(ordinal = 1, type = FormFieldType.INT_NUMBER, validate = {Validator.require, Validator.integer})
26+
public Integer ckpointInterval;
27+
28+
@Override
29+
public final boolean isOn() {
30+
return true;
31+
}
32+
33+
@Override
34+
public void setProps(StreamExecutionEnvironment env) {
35+
env.enableCheckpointing(Duration.ofSeconds(this.ckpointInterval).toMillis());
36+
}
37+
38+
@TISExtension()
39+
public static class DefaultDescriptor extends Descriptor<CheckpointFactory> {
40+
protected final FlinkPropAssist.Options<CheckpointFactory> opts = FlinkPropAssist.createOpts(this);
41+
42+
public DefaultDescriptor() {
43+
super();
44+
opts.addFieldDescriptor("ckpointInterval"
45+
, ExecutionCheckpointingOptions.CHECKPOINTING_INTERVAL
46+
, OverwriteProps.dft(Duration.ofSeconds(200)).setReadOnly(this.ckpointIntervalReadOnly()));
47+
}
48+
49+
protected boolean ckpointIntervalReadOnly() {
50+
return true;
51+
}
52+
53+
@Override
54+
public String getDisplayName() {
55+
return SWITCH_ON;
56+
}
57+
58+
private static final int MIN_INTERVAL = 5;
59+
60+
public final boolean validateCkpointInterval(
61+
IFieldErrorHandler msgHandler, Context context, String fieldName, String val) {
62+
int interval = 0;
63+
try {
64+
interval = Integer.parseInt(val);
65+
} catch (Throwable e) {
66+
67+
}
68+
if (interval < MIN_INTERVAL) {
69+
msgHandler.addFieldError(context, fieldName, "不能小于最小值:" + MIN_INTERVAL);
70+
return false;
71+
}
72+
return true;
73+
74+
}
75+
}
76+
}

0 commit comments

Comments
 (0)