package com.constellio.app.modules.rm.model.labelTemplate; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang.StringUtils; import org.jdom2.Document; import org.jdom2.Element; import com.constellio.app.modules.rm.model.labelTemplate.LabelTemplateField.LabelTemplateFieldHorizontalAlignment; import com.constellio.app.modules.rm.model.labelTemplate.LabelTemplateField.LabelTemplateFieldVerticalAlignment; import com.constellio.app.modules.rm.reports.model.labels.LabelsReportLayout; public class LabelTemplateReader { private static final String KEY = "key"; private static final String NAME = "name"; private static final String SCHEMA_TYPE = "schemaType"; private static final String LAYOUT = "layout"; private static final String COLUMNS = "columns"; private static final String LINES = "lines"; private static final String FIELD = "field"; private static final String PRINT_BORDERS = "printBorders"; private static final String METADATA_CODE_FIELD = "metadataCode"; private static final String REFERENCE_METADATA_CODE_FIELD = "referenceMetadataCode"; private static final String REFERENCE_METADATA_CODE2_FIELD = "referenceMetadataCode2"; private static final String REFERENCE_METADATA_CODE3_FIELD = "referenceMetadataCode3"; private static final String X_FIELD = "x"; private static final String Y_FIELD = "y"; private static final String WIDTH_FIELD = "width"; private static final String HEIGHT_FIELD = "height"; private static final String FONT_NAME_FIELD = "fontName"; private static final String FONT_SIZE_FIELD = "fontSize"; private static final String HORIZONTAL_ALIGMENT_FIELD = "horizontalAlignment"; private static final String VERTICAL_ALIGMENT_FIELD = "verticalAlignment"; public static final String MAX_LENGTH = "maxLength"; public static final String PREFIX = "prefix"; public static final String SUFFIX = "suffix"; public static final String PATTERN = "pattern"; public static final String ITALIC = "italic"; public static final String BOLD = "bold"; public static final String CONCATENATE_METADATA_CODE = "concatenateMetadataCode"; public static final String CONCATENATE_REFERENCE_METADATA_CODE = "concatenateReferenceMetadataCode"; public static final String UPPERCASE = "uppercase"; public static final String SEPARATOR = "separator"; public static final String EMPTY = "empty"; public static final String DISPLAY_ENUM_TITLE = "displayEnumTitle"; Document document; public LabelTemplateReader(Document document) { this.document = document; } public LabelTemplate createLabelTemplate() { LabelTemplate labelTemplate = createLabelTemplateObject(); return labelTemplate; } private LabelTemplate createLabelTemplateObject() { LabelTemplate labelTemplate; Element labelTemplateElement = document.getRootElement(); String key = labelTemplateElement.getChildText(KEY); String name = labelTemplateElement.getChildText(NAME); String schemaType = labelTemplateElement.getChildText(SCHEMA_TYPE); LabelsReportLayout layout = LabelsReportLayout.valueOf(labelTemplateElement.getChildText(LAYOUT)); int columns = Integer.valueOf(labelTemplateElement.getChildText(COLUMNS)); int lines = Integer.valueOf(labelTemplateElement.getChildText(LINES)); boolean printBorders = "true".equals(labelTemplateElement.getChildText(PRINT_BORDERS)); List<LabelTemplateField> labelTemplateFields = new ArrayList<>(); for (Element fieldElement : labelTemplateElement.getChildren(FIELD)) { String metadataCode = fieldElement.getChildText(METADATA_CODE_FIELD); String referenceMetadataCode = fieldElement.getChildText(REFERENCE_METADATA_CODE_FIELD); String referenceMetadataCode2 = fieldElement.getChildText(REFERENCE_METADATA_CODE2_FIELD); String referenceMetadataCode3 = fieldElement.getChildText(REFERENCE_METADATA_CODE3_FIELD); int x = Integer.valueOf(fieldElement.getChildText(X_FIELD)); int y = Integer.valueOf(fieldElement.getChildText(Y_FIELD)); int width = Integer.valueOf(fieldElement.getChildText(WIDTH_FIELD)); int height = Integer.valueOf(fieldElement.getChildText(HEIGHT_FIELD)); String fontName = fieldElement.getChildText(FONT_NAME_FIELD); float fontSize = Float.valueOf(fieldElement.getChildText(FONT_SIZE_FIELD)); boolean bold = Boolean.valueOf(fieldElement.getChildText(BOLD)); boolean italic = Boolean.valueOf(fieldElement.getChildText(ITALIC)); int maxLength = Integer.valueOf(fieldElement.getChildText(MAX_LENGTH)); String horizontalAligment = fieldElement.getChildText(HORIZONTAL_ALIGMENT_FIELD); LabelTemplateFieldHorizontalAlignment labelTemplateFieldHorizontalAlignment = LabelTemplateFieldHorizontalAlignment .valueOf(horizontalAligment); String verticalAligment = fieldElement.getChildText(VERTICAL_ALIGMENT_FIELD); LabelTemplateFieldVerticalAlignment labelTemplateFieldVerticalAlignment = LabelTemplateFieldVerticalAlignment .valueOf(verticalAligment); String prefix = fieldElement.getChildText(PREFIX); String suffix = fieldElement.getChildText(SUFFIX); String pattern = fieldElement.getChildText(PATTERN); String concatenateMetadataCode = fieldElement.getChildText(CONCATENATE_METADATA_CODE); String concatenateReferenceMetadataCode = fieldElement.getChildText(CONCATENATE_REFERENCE_METADATA_CODE); boolean uppercase = Boolean.valueOf(fieldElement.getChildText(UPPERCASE)); String separator = fieldElement.getChildText(SEPARATOR); boolean empty = Boolean.valueOf(fieldElement.getChildText(EMPTY)); boolean displayEnumTitle = Boolean.valueOf(fieldElement.getChildText(DISPLAY_ENUM_TITLE)); LabelTemplateField labelTemplateField; if (StringUtils.isBlank(referenceMetadataCode2) && StringUtils.isBlank(concatenateMetadataCode) && StringUtils .isBlank(fieldElement.getChildText(UPPERCASE)) && StringUtils.isBlank(fieldElement.getChildText(EMPTY))) { labelTemplateField = new LabelTemplateField(metadataCode, referenceMetadataCode, x, y, width, height, fontName, fontSize, bold, italic, maxLength, labelTemplateFieldHorizontalAlignment, labelTemplateFieldVerticalAlignment, prefix, suffix, pattern); } else { labelTemplateField = new LabelTemplateField(metadataCode, referenceMetadataCode, referenceMetadataCode2, referenceMetadataCode3, x, y, width, height, fontName, fontSize, bold, italic, maxLength, labelTemplateFieldHorizontalAlignment, labelTemplateFieldVerticalAlignment, prefix, suffix, pattern, concatenateMetadataCode, concatenateReferenceMetadataCode, uppercase, separator, empty); } labelTemplateField.setDisplayEnumTitle(displayEnumTitle); labelTemplateFields.add(labelTemplateField); } labelTemplate = new LabelTemplate(key, name, layout, schemaType, columns, lines, labelTemplateFields, printBorders); return labelTemplate; } }