diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/ShibConfigurationProperty.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/ShibConfigurationProperty.java index 345592ae3..eb0f4ea77 100644 --- a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/ShibConfigurationProperty.java +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/ui/domain/ShibConfigurationProperty.java @@ -1,9 +1,12 @@ package edu.internet2.tier.shibboleth.admin.ui.domain; +import com.fasterxml.jackson.annotation.JsonIgnore; +import edu.internet2.tier.shibboleth.admin.util.EmptyStringToNullConverter; import lombok.Data; import org.hibernate.envers.Audited; import javax.persistence.Column; +import javax.persistence.Convert; import javax.persistence.Entity; import javax.persistence.Id; import java.util.UUID; @@ -23,35 +26,52 @@ public class ShibConfigurationProperty { String configFile; @Column(name = "default_value") + @Convert(converter = EmptyStringToNullConverter.class) String defaultValue; @Column(name = "description") + @Convert(converter = EmptyStringToNullConverter.class) String description; @Column(name = "idp_version", nullable = false) String idpVersion; @Column(name = "module") + @Convert(converter = EmptyStringToNullConverter.class) String module; @Column(name = "module_version") + @Convert(converter = EmptyStringToNullConverter.class) String moduleVersion; @Column(name = "note") + @Convert(converter = EmptyStringToNullConverter.class) String note; @Column(name = "property_name", nullable = false) String propertyName; @Column(name = "property_type", nullable = false) + @JsonIgnore // display type is sent to the ui instead PropertyType propertyType; - @Column(name = "property_value") - String propertyValue; - @Column(name = "selection_items") + @Convert(converter = EmptyStringToNullConverter.class) String selectionItems; + public String getDisplayType() { + switch (propertyType) { + case BOOLEAN: + return propertyType.name().toLowerCase(); + case INTEGER: + return "number"; + case SELECTION_LIST: + return "list"; + default: // DURATION, SPRING_BEAN_ID, STRING + return "string"; + } + } + public void setPropertyType(String val) { this.propertyType = PropertyType.valueOf(val); } diff --git a/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EmptyStringToNullConverter.java b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EmptyStringToNullConverter.java new file mode 100644 index 000000000..0e3073bfc --- /dev/null +++ b/backend/src/main/java/edu/internet2/tier/shibboleth/admin/util/EmptyStringToNullConverter.java @@ -0,0 +1,21 @@ +package edu.internet2.tier.shibboleth.admin.util; + +import org.apache.commons.lang3.StringUtils; + +import javax.persistence.AttributeConverter; +import javax.persistence.Converter; + +@Converter +public class EmptyStringToNullConverter implements AttributeConverter { + @Override + public String convertToDatabaseColumn(String string) { + // if whitespace is set on a value, send null to the db + return StringUtils.defaultIfBlank(string, null); + } + + @Override + public String convertToEntityAttribute(String dbData) { + // keep nulls from the db as nulls + return dbData; + } +} \ No newline at end of file