1 Star 0 Fork 7

kyle / gobatch

forked from chararch / gobatch 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
job_builder.go 1.77 KB
一键复制 编辑 原始数据 按行查看 历史
chararch 提交于 2022-03-24 00:21 . format code & add comment
package gobatch
import "fmt"
type jobBuilder struct {
name string
steps []Step
jobListeners []JobListener
stepListeners []StepListener
chunkListeners []ChunkListener
partitionListeners []PartitionListener
}
//NewJob new instance of job builder
func NewJob(name string, steps ...Step) *jobBuilder {
if name == "" {
panic("job name must not be empty")
}
builder := &jobBuilder{
name: name,
steps: steps,
}
return builder
}
func (builder *jobBuilder) Step(step ...Step) *jobBuilder {
builder.steps = append(builder.steps, step...)
return builder
}
func (builder *jobBuilder) Listener(listener ...interface{}) *jobBuilder {
for _, l := range listener {
switch ll := l.(type) {
case JobListener:
builder.jobListeners = append(builder.jobListeners, ll)
case StepListener:
builder.stepListeners = append(builder.stepListeners, ll)
case ChunkListener:
builder.chunkListeners = append(builder.chunkListeners, ll)
case PartitionListener:
builder.partitionListeners = append(builder.partitionListeners, ll)
default:
panic(fmt.Sprintf("not supported listener:%+v for job:%v", ll, builder.name))
}
}
return builder
}
func (builder *jobBuilder) Build() Job {
var job Job
for _, sl := range builder.stepListeners {
for _, step := range builder.steps {
step.addListener(sl)
}
}
for _, cl := range builder.chunkListeners {
for _, step := range builder.steps {
if chkStep, ok := step.(*chunkStep); ok {
chkStep.addChunkListener(cl)
}
}
}
for _, pl := range builder.partitionListeners {
for _, step := range builder.steps {
if chkStep, ok := step.(*partitionStep); ok {
chkStep.addPartitionListener(pl)
}
}
}
job = newSimpleJob(builder.name, builder.steps, builder.jobListeners)
return job
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/workface/gobatch.git
git@gitee.com:workface/gobatch.git
workface
gobatch
gobatch
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891