package eu.eudat.model.persist.descriptiontemplatedefinition.fielddata; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import eu.eudat.commons.enums.FieldType; import eu.eudat.commons.validation.old.ValidEnum; import jakarta.validation.constraints.NotEmpty; import jakarta.validation.constraints.NotNull; @JsonTypeInfo( use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "fieldType", visible = true) @JsonSubTypes({ @JsonSubTypes.Type(value = AutoCompleteDataPersist.class, name = FieldType.Names.Autocomplete), @JsonSubTypes.Type(value = BooleanDecisionDataPersist.class, name = FieldType.Names.BooleanDecision), @JsonSubTypes.Type(value = DatasetAutoCompleteDataPersist.class, name = FieldType.Names.InternalDmpDatasets), @JsonSubTypes.Type(value = DmpAutoCompleteDataPersist.class, name = FieldType.Names.InternalDmpDmps), @JsonSubTypes.Type(value = CheckBoxDataPersist.class, name = FieldType.Names.CheckBox), @JsonSubTypes.Type(value = DatePickerDataPersist.class, name = FieldType.Names.DatePicker), @JsonSubTypes.Type(value = ExternalDatasetDataPersist.class, name = FieldType.Names.ExternalDatasets), @JsonSubTypes.Type(value = FreeTextDataPersist.class, name = FieldType.Names.FreeText), @JsonSubTypes.Type(value = LicenseDataPersist.class, name = FieldType.Names.Licenses), @JsonSubTypes.Type(value = OrganizationDataPersist.class, name = FieldType.Names.Organizations), @JsonSubTypes.Type(value = PublicationDataPersist.class, name = FieldType.Names.Publications), @JsonSubTypes.Type(value = RadioBoxDataPersist.class, name = FieldType.Names.RadioBox), @JsonSubTypes.Type(value = RegistryDataPersist.class, name = FieldType.Names.Registries), @JsonSubTypes.Type(value = ResearcherAutoCompleteDataPersist.class, name = FieldType.Names.InternalDmpResearchers), @JsonSubTypes.Type(value = ResearcherDataPersist.class, name = FieldType.Names.Researchers), @JsonSubTypes.Type(value = RichTextAreaDataPersist.class, name = FieldType.Names.RichTextarea), @JsonSubTypes.Type(value = ServiceDataPersist.class, name = FieldType.Names.Services), @JsonSubTypes.Type(value = TagDataPersist.class, name = FieldType.Names.Tags), @JsonSubTypes.Type(value = TaxonomyDataPersist.class, name = FieldType.Names.Taxonomies), @JsonSubTypes.Type(value = TextAreaDataPersist.class, name = FieldType.Names.TextArea), @JsonSubTypes.Type(value = UploadDataPersist.class, name = FieldType.Names.Upload), @JsonSubTypes.Type(value = ValidationDataPersist.class, name = FieldType.Names.Validation), @JsonSubTypes.Type(value = DatasetIdentifierDataPersist.class, name = FieldType.Names.DatasetIdentifier), @JsonSubTypes.Type(value = CurrencyDataPersist.class, name = FieldType.Names.Currency), @JsonSubTypes.Type(value = WordListDataPersist.class, name = FieldType.Names.Wordlist), @JsonSubTypes.Type(value = DataRepositoryDataPersist.class, name = FieldType.Names.DataRepositories), @JsonSubTypes.Type(value = JournalRepositoryDataPersist.class, name = FieldType.Names.JournalRepositories), @JsonSubTypes.Type(value = PublicationRepositoryDataPersist.class, name = FieldType.Names.Publications), }) public abstract class BaseFieldDataPersist { @NotNull(message = "{validation.empty}") @NotEmpty(message = "{validation.empty}") private String label = null; @ValidEnum(message = "{validation.empty}") private FieldType fieldType; public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public FieldType getFieldType() { return fieldType; } public void setFieldType(FieldType fieldType) { this.fieldType = fieldType; } }