TranslatedWorkflowStepDTO.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.api.model;
import org.genesys.blocks.util.JsonClassNameWriter;
import org.gringlobal.api.model.WorkflowStepDTO.WorkflowActionStepDTO;
import org.gringlobal.api.model.WorkflowStepDTO.WorkflowEndStepDTO;
import org.gringlobal.api.model.WorkflowStepDTO.WorkflowStartStepDTO;
import org.gringlobal.custom.json.serializer.TranslatedWorkflowStepDTOSerializer;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonSubTypes.Type;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.databind.annotation.JsonAppend;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@Data
@EqualsAndHashCode(callSuper = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.EXISTING_PROPERTY, property = "_class", visible = true)
@JsonAppend(props = {
@JsonAppend.Prop(name = "_class", value = JsonClassNameWriter.class, type = String.class),
})
@JsonSubTypes({
@Type(value = TranslatedWorkflowStepDTO.TranslatedWorkflowActionStepDTO.class, name = "WorkflowActionStepDTO"), // Note the name!
@Type(value = TranslatedWorkflowStepDTO.TranslatedWorkflowStartStepDTO.class, name = "WorkflowStartStepDTO"),
@Type(value = TranslatedWorkflowStepDTO.TranslatedWorkflowEndStepDTO.class, name = "WorkflowEndStepDTO"),
})
@JsonSerialize(using = TranslatedWorkflowStepDTOSerializer.class)
// @JsonDeserialize(using = TranslatedWorkflowStepDTODeserializer.class)
public abstract class TranslatedWorkflowStepDTO<T> extends Translated<T> {
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public static class TranslatedWorkflowActionStepDTO extends TranslatedWorkflowStepDTO<WorkflowActionStepDTO> {
private String conditionMessage;
private String actionNote;
public TranslatedWorkflowActionStepDTO(WorkflowActionStepDTO entity) {
this.entity = entity;
}
}
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public static class TranslatedWorkflowStartStepDTO extends TranslatedWorkflowStepDTO<WorkflowStartStepDTO> {
public TranslatedWorkflowStartStepDTO(WorkflowStartStepDTO entity) {
this.entity = entity;
}
}
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
public static class TranslatedWorkflowEndStepDTO extends TranslatedWorkflowStepDTO<WorkflowEndStepDTO> {
public TranslatedWorkflowEndStepDTO(WorkflowEndStepDTO entity) {
this.entity = entity;
}
}
}