package com.constellio.app.ui.pages.management.schemaRecords; import com.constellio.app.extensions.AppLayerCollectionExtensions; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.model.entities.CorePermissions; import com.constellio.model.entities.records.Record; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.entities.schemas.MetadataSchemaType; import com.constellio.model.entities.schemas.MetadataSchemaTypes; import com.constellio.model.services.records.RecordServices; import com.constellio.model.services.schemas.MetadataSchemasManager; import com.constellio.model.services.schemas.SchemaUtils; import com.constellio.model.services.taxonomies.TaxonomiesManager; public class SchemaRecordsPresentersServices { AppLayerFactory appLayerFactory; MetadataSchemasManager schemasManager; RecordServices recordServices; TaxonomiesManager taxonomiesManager; public SchemaRecordsPresentersServices(AppLayerFactory appLayerFactory) { this.appLayerFactory = appLayerFactory; this.schemasManager = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager(); this.recordServices = appLayerFactory.getModelLayerFactory().newRecordServices(); this.taxonomiesManager = appLayerFactory.getModelLayerFactory().getTaxonomiesManager(); } public boolean canManageSchemaType(String schemaTypeCode, final User user) { MetadataSchemaTypes types = schemasManager.getSchemaTypes(user.getCollection()); MetadataSchemaType metadataSchemaType = types.getSchemaType(schemaTypeCode); AppLayerCollectionExtensions extensions = appLayerFactory.getExtensions().forCollectionOf(user); boolean defaultValue = schemaTypeCode.startsWith("ddv") && user.has(CorePermissions.MANAGE_VALUELIST).globally(); return extensions.canManageSchema(defaultValue, user, metadataSchemaType); } public boolean canViewSchemaTypeRecord(final Record restrictedRecord, final User user) { String schemaTypeCode = new SchemaUtils().getSchemaTypeCode(restrictedRecord.getSchemaCode()); if (!canManageSchemaType(schemaTypeCode, user)) { return false; } MetadataSchemaTypes types = schemasManager.getSchemaTypes(user.getCollection()); final MetadataSchemaType metadataSchemaType = types.getSchemaType(schemaTypeCode); AppLayerCollectionExtensions extensions = appLayerFactory.getExtensions().forCollectionOf(user); boolean defaultValue = user.has(CorePermissions.MANAGE_VALUELIST).globally(); return extensions.canViewSchemaRecord(defaultValue, user, metadataSchemaType, restrictedRecord); } }