WorkflowStepTranslationService.java
/*
* Copyright 2026 Global Crop Diversity Trust
* Licensed under the Apache License, Version 2.0
* See LICENSE file in project root folder or http://www.apache.org/licenses/LICENSE-2.0
*/
package org.gringlobal.service;
import org.gringlobal.model.workflow.WorkflowActionStep;
import org.gringlobal.model.workflow.WorkflowActionStepLang;
import org.gringlobal.model.workflow.WorkflowEndStep;
import org.gringlobal.model.workflow.WorkflowEndStepLang;
import org.gringlobal.model.workflow.WorkflowStartStep;
import org.gringlobal.model.workflow.WorkflowStartStepLang;
import org.gringlobal.model.workflow.WorkflowStep;
import org.gringlobal.model.workflow.WorkflowStepLang;
import org.gringlobal.service.filter.WorkflowStepFilter;
import lombok.NoArgsConstructor;
/**
* Translation service for WorkflowStep.
*/
public interface WorkflowStepTranslationService extends TranslationService<WorkflowStep, WorkflowStepLang, WorkflowStepTranslationService.TranslatedWorkflowStep<WorkflowStep, WorkflowStepLang>, WorkflowStepFilter> {
abstract class TranslatedWorkflowStep<T extends WorkflowStep, L extends WorkflowStepLang> extends TranslationService.Translation<WorkflowStep, WorkflowStepLang> {
private static final long serialVersionUID = -1827365123498127364L;
@SuppressWarnings("unchecked")
public static <T extends WorkflowStep, L extends WorkflowStepLang> TranslatedWorkflowStep<T, L> from(T step, String title, String description, L def, L lang) {
if (step instanceof WorkflowActionStep) {
String conditionMessage = null;
String actionNote = null;
// if (lang instanceof WorkflowActionStepLang && def instanceof WorkflowActionStepLang) {
var asLang = (WorkflowActionStepLang) lang;
var asDef = (WorkflowActionStepLang) def;
conditionMessage = asLang != null ? asLang.getConditionMessage() : asDef != null ? asDef.getConditionMessage() : null;
actionNote = asLang != null ? asLang.getActionNote() : asDef != null ? asDef.getActionNote() : null;
// }
var t = new TranslatedWorkflowActionStep((WorkflowActionStep) step);
t.title = title;
t.description = description;
t.conditionMessage = conditionMessage;
t.actionNote = actionNote;
return (TranslatedWorkflowStep<T, L>) t;
} else if (step instanceof WorkflowEndStep) {
var t = new TranslatedWorkflowEndStep((WorkflowEndStep) step);
t.title = title;
t.description = description;
return (TranslatedWorkflowStep<T, L>) t;
} else if (step instanceof WorkflowStartStep) {
var t = new TranslatedWorkflowStartStep((WorkflowStartStep) step);
t.title = title;
t.description = description;
return (TranslatedWorkflowStep<T, L>) t;
}
throw new RuntimeException("Cannot");
}
@Override
public WorkflowStepLang updateLang(WorkflowStepLang target) {
return super.updateLang(target);
}
}
@NoArgsConstructor
class TranslatedWorkflowActionStep extends TranslatedWorkflowStep<WorkflowActionStep, WorkflowActionStepLang> {
public String conditionMessage;
public String actionNote;
public TranslatedWorkflowActionStep(WorkflowActionStep entity) {
this.entity = entity;
}
@Override
public WorkflowStepLang updateLang(WorkflowStepLang target) {
super.updateLang(target);
if (target instanceof WorkflowActionStepLang) {
((WorkflowActionStepLang)target).setConditionMessage(conditionMessage);
((WorkflowActionStepLang)target).setActionNote(actionNote);
}
return target;
}
}
@NoArgsConstructor
class TranslatedWorkflowStartStep extends TranslatedWorkflowStep<WorkflowStartStep, WorkflowStartStepLang> {
public TranslatedWorkflowStartStep(WorkflowStartStep entity) {
this.entity = entity;
}
}
@NoArgsConstructor
class TranslatedWorkflowEndStep extends TranslatedWorkflowStep<WorkflowEndStep, WorkflowEndStepLang> {
public TranslatedWorkflowEndStep(WorkflowEndStep entity) {
this.entity = entity;
}
}
}