package com.rapidftr.forms; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.rapidftr.RapidFtrApplication; import lombok.*; import java.util.*; @JsonIgnoreProperties(ignoreUnknown = true) @Getter @Setter @EqualsAndHashCode @NoArgsConstructor @AllArgsConstructor(suppressConstructorProperties = true) public class FormSection implements Comparable<FormSection> { @JsonProperty("name") protected Map<String, String> name = new HashMap<String, String>(); protected int order; protected boolean enabled; @JsonProperty("help_text") protected Map<String, String> helpText = new HashMap<String, String>(); protected List<FormField> fields = new ArrayList<FormField>(); public String getLocalizedName() { return getLocalized(name); } public String getLocalizedHelpText() { return getLocalized(helpText); } private String getLocalized(Map<String, String> valueMap) { if (valueMap != null) { String value = valueMap.get(Locale.getDefault().getLanguage()); return (value == null || "".equals(value)) ? valueMap.get(RapidFtrApplication.getDefaultLocale()) : value; } return null; } @Override public int compareTo(FormSection other) { int otherOrder = other == null ? Integer.MIN_VALUE : other.getOrder(); return Integer.valueOf(this.order).compareTo(otherOrder); } public String toString() { return getLocalizedName(); } public List<FormField> getOrderedHighLightedFields() { SortedMap<Integer, FormField> sortedFormFields = new TreeMap<Integer, FormField>(); for (FormField formField : fields) { if (formField.getHighlightInfo() != null && formField.getHighlightInfo().getHighlighted()) { Integer order = Integer.parseInt(formField.getHighlightInfo().getOrder()); sortedFormFields.put(order, formField); } } return Arrays.asList(sortedFormFields.values().toArray(new FormField[]{})); } public List<FormField> getOrderedTitleFields() { SortedMap<Integer, FormField> sortedFormFields = new TreeMap<Integer, FormField>(); for (FormField formField : fields) { if (formField.isTitleField() && formField.getHighlightInfo() != null && formField.getHighlightInfo().getHighlighted()) { Integer order = Integer.parseInt(formField.getHighlightInfo().getOrder()); sortedFormFields.put(order, formField); } } return Arrays.asList(sortedFormFields.values().toArray(new FormField[]{})); } }