package com.constellio.app.api.extensions;
import java.io.Serializable;
import java.util.Locale;
import java.util.Map;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.data.frameworks.extensions.ExtensionBooleanResult;
import com.constellio.data.utils.Provider;
import com.constellio.model.entities.Language;
import com.constellio.model.entities.records.wrappers.User;
import com.constellio.model.entities.schemas.Metadata;
import com.constellio.model.entities.schemas.MetadataSchema;
import com.constellio.model.services.schemas.SchemaUtils;
import com.vaadin.ui.Field;
public abstract class BatchProcessingExtension implements Serializable {
public ExtensionBooleanResult isMetadataDisplayedWhenModified(IsMetadataDisplayedWhenModifiedParams params) {
return ExtensionBooleanResult.NOT_APPLICABLE;
}
public ExtensionBooleanResult isMetadataModifiable(IsMetadataModifiableParams params) {
return ExtensionBooleanResult.NOT_APPLICABLE;
}
public void addCustomLabel(AddCustomLabelsParams params) {
}
public Field buildMetadataField(MetadataVO metadataVO, RecordVO recordVO) {
return null;
}
public boolean hasMetadataSpecificAssociatedField(MetadataVO metadataVO) {
return false;
}
public static class IsMetadataDisplayedWhenModifiedParams {
Metadata metadata;
public IsMetadataDisplayedWhenModifiedParams(Metadata metadata) {
this.metadata = metadata;
}
public Metadata getMetadata() {
return metadata;
}
public boolean isSchemaType(String schemaType) {
return metadata.getSchemaCode().startsWith(schemaType + "_");
}
}
public static class IsMetadataModifiableParams {
String recordId;
Metadata metadata;
User user;
public IsMetadataModifiableParams(Metadata metadata, User user, String recordId) {
this.metadata = metadata;
this.user = user;
this.recordId = recordId;
}
public Metadata getMetadata() {
return metadata;
}
public User getUser() {
return user;
}
public String getRecordId() {
return recordId;
}
public boolean isSchemaType(String schemaType) {
return metadata.getSchemaCode().startsWith(schemaType + "_");
}
}
public static class AddCustomLabelsParams {
MetadataSchema schema;
Provider<String, String> resourceProvider;
Map<String, String> customLabels;
Locale locale;
public AddCustomLabelsParams(MetadataSchema schema, Locale locale,
Provider<String, String> resourceProvider, Map<String, String> customLabels) {
this.locale = locale;
this.schema = schema;
this.resourceProvider = resourceProvider;
this.customLabels = customLabels;
}
public void setCustomLabelUsingResourceKey(String codeOrLocalCode, String key) {
String value = getResource(key);
setCustomLabelToValue(codeOrLocalCode, value);
}
public void setCustomPrefixLabelWithKey(String codeOrLocalCode, String key) {
String localCode = new SchemaUtils().getLocalCodeFromMetadataCode(codeOrLocalCode);
String code = schema.getCode() + "_" + localCode;
String metadataLabel = schema.getMetadata(code).getLabel(Language.withCode(locale.getLanguage()));
String value = getResource(key);
customLabels.put(code, metadataLabel + " " + value);
}
public void setCustomLabelToValue(String codeOrLocalCode, String value) {
String localCode = new SchemaUtils().getLocalCodeFromMetadataCode(codeOrLocalCode);
String code = schema.getCode() + "_" + localCode;
customLabels.put(code, value);
}
public String getResource(String key) {
return resourceProvider.get(key);
}
public boolean isSchemaType(String schemaType) {
return schema.getCode().startsWith(schemaType + "_");
}
}
}