package com.constellio.app.services.importExport.settings.model; import java.util.ArrayList; import java.util.List; import org.apache.commons.lang3.builder.EqualsBuilder; import org.apache.commons.lang3.builder.HashCodeBuilder; import org.apache.commons.lang3.builder.ToStringBuilder; import org.apache.commons.lang3.builder.ToStringStyle; public class ImportedType { private String code; private String label; private List<ImportedTab> tabs = new ArrayList<>(); private ImportedMetadataSchema defaultSchema = new ImportedMetadataSchema().setCode("default"); private List<ImportedMetadataSchema> customSchemata = new ArrayList<>(); public String getCode() { return code; } public ImportedType setCode(String code) { this.code = code; return this; } public List<ImportedTab> getTabs() { return tabs; } public ImportedType setTabs(List<ImportedTab> importedTabs) { this.tabs = importedTabs; return this; } public void addTab(ImportedTab importedTab) { tabs.add(importedTab); } public ImportedTab getTab(String code) { for (ImportedTab importedTab : tabs) { if (importedTab.getCode().equals(code)) { return importedTab; } } return null; } public ImportedMetadataSchema newSchema(String code) { ImportedMetadataSchema schema = new ImportedMetadataSchema().setCode(code); this.customSchemata.add(schema); return schema; } public ImportedType addSchema(ImportedMetadataSchema customSchema) { this.customSchemata.add(customSchema); return this; } public List<ImportedMetadataSchema> getCustomSchemata() { return customSchemata; } public ImportedType setCustomSchemata(List<ImportedMetadataSchema> customSchemata) { this.customSchemata = customSchemata; return this; } public ImportedMetadataSchema getDefaultSchema() { return defaultSchema; } public ImportedType setDefaultSchema(ImportedMetadataSchema defaultSchema) { this.defaultSchema = defaultSchema; return this; } public String getLabel() { return label; } public ImportedType setLabel(String label) { this.label = label; return this; } @Override public boolean equals(Object obj) { return EqualsBuilder.reflectionEquals(this, obj); } @Override public int hashCode() { return HashCodeBuilder.reflectionHashCode(this); } @Override public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.SHORT_PREFIX_STYLE); } public ImportedMetadataSchema getSchemaNotNull(String code) { ImportedMetadataSchema schema = getSchema(code); if (schema == null) { throw new RuntimeException("No such schema with code '" + code + "'"); } return schema; } public ImportedMetadataSchema getSchema(String code) { if ("default".equals(code)) { return defaultSchema; } for (ImportedMetadataSchema importedMetadataSchema : customSchemata) { if (importedMetadataSchema.getCode().equals(code)) { return importedMetadataSchema; } } return null; } public ImportedMetadataSchema newDefaultSchema() { ImportedMetadataSchema schema = new ImportedMetadataSchema().setCode("default"); this.defaultSchema = schema; return defaultSchema; } public List<ImportedMetadata> getAllMetadata() { List<ImportedMetadata> importedMetadatas = new ArrayList<>(); importedMetadatas.addAll(defaultSchema.getAllMetadata()); for (ImportedMetadataSchema customSchema : customSchemata) { importedMetadatas.addAll(customSchema.getAllMetadata()); } return importedMetadatas; } public ImportedMetadata getMetadata(String code) { for (ImportedMetadata importedMetadata : getAllMetadata()) { if (importedMetadata.getCode().equals(code)) { return importedMetadata; } } return null; } }