package com.constellio.app.modules.rm.model.calculators.document; import com.constellio.app.modules.rm.wrappers.Document; import com.constellio.model.entities.calculators.CalculatorParameters; import com.constellio.model.entities.calculators.MetadataValueCalculator; import com.constellio.model.entities.calculators.dependencies.Dependency; import com.constellio.model.entities.calculators.dependencies.LocalDependency; import com.constellio.model.entities.records.Content; import com.constellio.model.entities.schemas.MetadataValueType; import java.util.Arrays; import java.util.List; import static com.constellio.app.ui.i18n.i18n.$; /** * Created by Constellio on 2017-03-03. */ public class DocumentMimeTypeCalculator implements MetadataValueCalculator<String> { LocalDependency<Content> contentParam = LocalDependency.toAContent(Document.CONTENT); @Override public String calculate(CalculatorParameters parameters) { Content content = parameters.get(contentParam); String mimeType = content != null && content.getCurrentVersion() != null ? content.getCurrentVersion().getMimetype() : null; mimeType = mimeType != null ? regroupMicrosoftMimeTypes(mimeType) : null; return mimeType; } @Override public String getDefaultValue() { return null; } @Override public MetadataValueType getReturnType() { return MetadataValueType.STRING; } @Override public boolean isMultiValue() { return false; } @Override public List<? extends Dependency> getDependencies() { return Arrays.asList(contentParam); } private String regroupMicrosoftMimeTypes(String mimeType) { String newMimeType = mimeType; if (mimeType != null) { switch (mimeType) { case "application/vnd.ms-word.document.macroenabled.12": case "application/vnd.ms-word.template.macroenabled.12": case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": case "application/vnd.openxmlformats-officedocument.wordprocessingml.template": newMimeType = $("Mimetype.microsoftWord"); break; case "application/vnd.ms-excel.sheet.binary.macroenabled.12": case "application/vnd.ms-excel": case "application/vnd.ms-excel.template.macroenabled.12": case "application/vnd.ms-excel.sheet.macroenabled.12": case "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet": case "application/vnd.openxmlformats-officedocument.spreadsheetml.template": newMimeType = $("Mimetype.microsoftExcel"); break; case "application/vnd.openxmlformats-officedocument.presentationml.presentation": case "application/vnd.openxmlformats-officedocument.presentationml.slide": case "application/vnd.openxmlformats-officedocument.presentationml.slideshow": case "application/vnd.openxmlformats-officedocument.presentationml.template": case "application/vnd.ms-powerpoint": case "application/vnd.ms-powerpoint.presentation.macroenabled.12": case "application/vnd.ms-powerpoint.slideshow.macroenabled.12": case "application/vnd.ms-powerpoint.template.macroenabled.12": newMimeType = $("Mimetype.microsoftPowerPoint"); break; } } return newMimeType; } }