package com.constellio.model.services.migrations; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import com.constellio.model.entities.configs.AbstractSystemConfigurationScript; import com.constellio.model.entities.configs.SystemConfiguration; import com.constellio.model.entities.configs.SystemConfigurationGroup; import com.constellio.model.entities.configs.core.listeners.UserTitlePatternConfigScript; import com.constellio.model.entities.enums.BatchProcessingMode; import com.constellio.model.entities.enums.GroupAuthorizationsInheritance; import com.constellio.model.entities.enums.MetadataPopulatePriority; import com.constellio.model.entities.enums.SearchSortType; import com.constellio.model.entities.enums.TitleMetadataPopulatePriority; import com.constellio.model.frameworks.validation.ValidationErrors; import com.constellio.model.services.configs.SystemConfigurationsManager; import com.constellio.model.services.factories.ModelLayerFactory; public class ConstellioEIMConfigs { private static List<SystemConfiguration> modifiableConfigs = new ArrayList<>(); public static List<SystemConfiguration> configurations; //Retention calendar configs public static final SystemConfiguration USER_TITLE_PATTERN; public static final SystemConfiguration USER_ROLES_IN_AUTHORIZATIONS; public static final SystemConfiguration PARSED_CONTENT_MAX_LENGTH_IN_KILOOCTETS; public static final SystemConfiguration CONTENT_MAX_LENGTH_FOR_PARSING_IN_MEGAOCTETS; public static final SystemConfiguration METADATA_POPULATE_PRIORITY, TITLE_METADATA_POPULATE_PRIORITY; public static final SystemConfiguration LOGO; public static final SystemConfiguration LOGO_LINK; public static final SystemConfiguration CONSTELLIO_URL; public static final SystemConfiguration CLEAN_DURING_INSTALL; public static final SystemConfiguration IN_UPDATE_PROCESS; public static final SystemConfiguration BATCH_PROCESSING_MODE; public static final SystemConfiguration CMIS_NEVER_RETURN_ACL; public static final SystemConfiguration DATE_FORMAT; public static final SystemConfiguration DATE_TIME_FORMAT; public static final SystemConfiguration TRASH_PURGE_DELAI; public static final SystemConfiguration MAX_SELECTABLE_SEARCH_RESULTS; public static final SystemConfiguration WRITE_ZZRECORDS_IN_TLOG; public static final SystemConfiguration SEARCH_SORT_TYPE; public static final SystemConfiguration ICAP_SCAN_ACTIVATED; public static final SystemConfiguration ICAP_SERVER_URL; public static final SystemConfiguration ICAP_RESPONSE_TIMEOUT; public static final SystemConfiguration CKEDITOR_TOOLBAR_CONFIG; public static final SystemConfiguration GROUP_AUTHORIZATIONS_INHERITANCE; public static final SystemConfiguration REMOVE_EXTENSION_FROM_RECORD_TITLE; public static final SystemConfiguration TABLE_DYNAMIC_CONFIGURATION; public static final SystemConfiguration TRANSACTION_DELAY; public static final String DEFAULT_CKEDITOR_TOOLBAR_CONFIG = "" + " { name: 'document', items: [ 'Source', 'NewPage', 'Preview', 'Print' ] },\n" + " { name: 'clipboard', items: [ 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord', '-', 'Undo', 'Redo' ] },\n" + " { name: 'editing', items: [ 'Find', 'Replace', '-', 'SelectAll', '-' ] },\n" + " '/',\n" + " { name: 'basicstyles', items: [ 'Bold', 'Italic', 'Underline', 'Strike', 'Subscript', 'Superscript', '-', 'RemoveFormat' ] },\n" + " { name: 'paragraph', items: [ 'NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote', 'CreateDiv', '-', 'JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock', '-', 'BidiLtr', 'BidiRtl'] },\n" + " { name: 'links', items: [ 'Link', 'Unlink', 'Anchor' ] },\n" + " { name: 'insert', items: [ 'Image', 'Table', 'HorizontalRule', 'SpecialChar', 'PageBreak' ] },\n" + " '/',\n" + " { name: 'styles', items: [ 'Styles', 'Format', 'Font', 'FontSize' ] },\n" + " { name: 'colors', items: [ 'TextColor', 'BGColor' ] },\n" + " { name: 'tools', items: [ 'Maximize', 'ShowBlocks' ] }"; public static final SystemConfiguration DEFAULT_START_TAB; public static final SystemConfiguration DEFAULT_TAXONOMY; public static final SystemConfiguration LAZY_TREE_BUFFER_SIZE; //public static final SystemConfiguration DEFAULT_FONT_SIZE; static { SystemConfigurationGroup others = new SystemConfigurationGroup(null, "others"); add(USER_TITLE_PATTERN = others.createString("userTitlePattern").scriptedBy(UserTitlePatternConfigScript.class) .withDefaultValue("${firstName} ${lastName}")); // Associer ou non des rĂ´les utilisateur aux autorisations add(USER_ROLES_IN_AUTHORIZATIONS = others.createBooleanFalseByDefault("userRolesInAuthorizations")); add(LOGO = others.createBinary("logo")); add(LOGO_LINK = others.createString("logoLink", "http://www.constellio.com")); add(METADATA_POPULATE_PRIORITY = others.createEnum("metadataPopulatePriority", MetadataPopulatePriority.class) .withDefaultValue(MetadataPopulatePriority.STYLES_REGEX_PROPERTIES)); add(TITLE_METADATA_POPULATE_PRIORITY = others .createEnum("titleMetadataPopulatePriority", TitleMetadataPopulatePriority.class) .withDefaultValue(TitleMetadataPopulatePriority.STYLES_FILENAME_PROPERTIES)); add(CONSTELLIO_URL = others.createString("constellioUrl", "http://localhost:8080/constellio/")); add(DATE_FORMAT = others.createString("dateFormat").withDefaultValue("yyyy-MM-dd")); add(DATE_TIME_FORMAT = others.createString("dateTimeFormat").withDefaultValue("yyyy-MM-dd HH:mm:ss")); SystemConfigurationGroup advanced = new SystemConfigurationGroup(null, "advanced"); add(PARSED_CONTENT_MAX_LENGTH_IN_KILOOCTETS = advanced.createInteger("parsedContentMaxLengthInKilooctets") .withDefaultValue(3000)); add(CONTENT_MAX_LENGTH_FOR_PARSING_IN_MEGAOCTETS = advanced.createInteger("contentMaxLengthForParsingInMegaoctets") .withDefaultValue(30)); add(CLEAN_DURING_INSTALL = advanced.createBooleanFalseByDefault("cleanDuringInstall")); SystemConfigurationGroup hiddenSystemConfigs = new SystemConfigurationGroup(null, "system"); add(IN_UPDATE_PROCESS = hiddenSystemConfigs.createBooleanFalseByDefault("inUpdateProcess").whichIsHidden()); add(BATCH_PROCESSING_MODE = others.createEnum("batchProcessingMode", BatchProcessingMode.class) .withDefaultValue(BatchProcessingMode.ALL_METADATA_OF_SCHEMA).whichIsHidden()); add(TRASH_PURGE_DELAI = others.createInteger("trashPurgeDelaiInDays").withDefaultValue(30)); add(DEFAULT_START_TAB = others.createString("defaultStartTab").withDefaultValue("taxonomies")); add(DEFAULT_TAXONOMY = others.createString("defaultTaxonomy")); add(LAZY_TREE_BUFFER_SIZE = others.createInteger("lazyTreeBufferSize").withDefaultValue(50) .scriptedBy(LazyTreeBufferSizeValidationScript.class)); SystemConfigurationGroup search = new SystemConfigurationGroup(null, "search"); add(SEARCH_SORT_TYPE = search.createEnum("sortType", SearchSortType.class).withDefaultValue(SearchSortType.RELEVENCE)); add(MAX_SELECTABLE_SEARCH_RESULTS = advanced.createInteger("maxSelectableSearchResults").withDefaultValue(500)); add(WRITE_ZZRECORDS_IN_TLOG = advanced.createBooleanFalseByDefault("writeZZRecordsInTlog") .scriptedBy(WriteZZRecordsScript.class)); add(CMIS_NEVER_RETURN_ACL = advanced.createBooleanTrueByDefault("cmisNeverReturnACL")); add(REMOVE_EXTENSION_FROM_RECORD_TITLE = advanced.createBooleanFalseByDefault("removeExtensionFromDocument")); add(TABLE_DYNAMIC_CONFIGURATION = advanced.createBooleanTrueByDefault("tableDynamicConfiguration")); // SystemConfigurationGroup icapConfigurationGroup = new SystemConfigurationGroup(null, "icapScan"); add(ICAP_SCAN_ACTIVATED = icapConfigurationGroup.createBooleanFalseByDefault("icapScanActivated")); add(ICAP_SERVER_URL = icapConfigurationGroup.createString("icapServerUrl")); add(ICAP_RESPONSE_TIMEOUT = icapConfigurationGroup.createInteger("icapResponseTimeout").withDefaultValue(5000)); add(CKEDITOR_TOOLBAR_CONFIG = others.createString("ckeditorToolbarConfig") .withDefaultValue(DEFAULT_CKEDITOR_TOOLBAR_CONFIG)); add(GROUP_AUTHORIZATIONS_INHERITANCE = others .createEnum("groupAuthorizationsInheritance", GroupAuthorizationsInheritance.class) .withDefaultValue(GroupAuthorizationsInheritance.FROM_PARENT_TO_CHILD)); add(TRANSACTION_DELAY = others.createInteger("transactionDelay").withDefaultValue(10)); //add(DEFAULT_FONT_SIZE = others.createInteger("defaultFontSize").withDefaultValue(16)); // configurations = Collections.unmodifiableList(modifiableConfigs); } static void add(SystemConfiguration configuration) { modifiableConfigs.add(configuration); } SystemConfigurationsManager manager; public ConstellioEIMConfigs(SystemConfigurationsManager manager) { this.manager = manager; } public MetadataPopulatePriority getMetadataPopulatePriority() { return manager.getValue(METADATA_POPULATE_PRIORITY); } public TitleMetadataPopulatePriority getTitleMetadataPopulatePriority() { return manager.getValue(TITLE_METADATA_POPULATE_PRIORITY); } public String getUserTitlePattern() { return manager.getValue(USER_TITLE_PATTERN); } public boolean seeUserRolesInAuthorizations() { return manager.getValue(USER_ROLES_IN_AUTHORIZATIONS); } public String getConstellioUrl() { return manager.getValue(CONSTELLIO_URL); } public Boolean isWriteZZRecordsInTlog() { return manager.getValue(WRITE_ZZRECORDS_IN_TLOG); } public Boolean isTableDynamicConfiguration() { return manager.getValue(TABLE_DYNAMIC_CONFIGURATION); } public Boolean isCleanDuringInstall() { return manager.getValue(CLEAN_DURING_INSTALL); } public Boolean isInUpdateProcess() { return manager.getValue(IN_UPDATE_PROCESS); } public String getDateFormat() { return manager.getValue(DATE_FORMAT); } public String getDateTimeFormat() { return manager.getValue(DATE_TIME_FORMAT); } public Integer getTrashPurgeDelai() { return manager.getValue(TRASH_PURGE_DELAI); } public BatchProcessingMode getBatchProcessingMode() { return manager.getValue(BATCH_PROCESSING_MODE); } public SearchSortType getSearchSortType() { return manager.getValue(SEARCH_SORT_TYPE); } public Boolean isCmisNeverReturnAcl() { return manager.getValue(CMIS_NEVER_RETURN_ACL); } public Boolean isRemoveExtensionFromRecordTitle() { return manager.getValue(REMOVE_EXTENSION_FROM_RECORD_TITLE); } public static Collection<? extends SystemConfiguration> getCoreConfigs() { return configurations; } public GroupAuthorizationsInheritance getGroupAuthorizationsInheritance() { return manager.getValue(GROUP_AUTHORIZATIONS_INHERITANCE); } public static class WriteZZRecordsScript extends AbstractSystemConfigurationScript<Boolean> { @Override public void onValueChanged(Boolean previousValue, Boolean newValue, ModelLayerFactory modelLayerFactory) { modelLayerFactory.getDataLayerFactory().getDataLayerConfiguration().setWriteZZRecords(newValue); } } public static class LazyTreeBufferSizeValidationScript extends AbstractSystemConfigurationScript<Integer> { @Override public void validate(Integer newValue, ValidationErrors errors) { int max = 100; if (newValue < 0 || newValue > 100) { errors.add(LazyTreeBufferSizeValidationScript.class, "invalidLazyTreeBufferSize", max(max)); } } private Map<String, Object> max(int max) { Map<String, Object> parameters = new HashMap<>(); parameters.put("maxValue", max); return parameters; } } public boolean getIcapScanActivated() { return manager.getValue(ICAP_SCAN_ACTIVATED); } public String getIcapServerUrl() { return manager.getValue(ICAP_SERVER_URL); } public int getIcapResponseTimeout() { return manager.getValue(ICAP_RESPONSE_TIMEOUT); } public String getCKEditorToolbarConfig() { return manager.getValue(CKEDITOR_TOOLBAR_CONFIG); } public String getDefaultStartTab() { return manager.getValue(DEFAULT_START_TAB); } public String getDefaultTaxonomy() { return manager.getValue(DEFAULT_TAXONOMY); } public int getTransactionDelay() { return manager.getValue(TRANSACTION_DELAY); } public int getLazyTreeBufferSize() { return manager.getValue(LAZY_TREE_BUFFER_SIZE); } //public int getDefaultFontSize() { return manager.getValue(DEFAULT_FONT_SIZE); } }