package com.constellio.app.modules.tasks.extensions;
import com.constellio.app.extensions.records.RecordAppExtension;
import com.constellio.app.extensions.records.params.BuildRecordVOParams;
import com.constellio.app.extensions.records.params.GetIconPathParams;
import com.constellio.app.modules.tasks.model.wrappers.Task;
import com.constellio.app.services.factories.AppLayerFactory;
import com.constellio.app.ui.entities.RecordVO;
import com.constellio.model.entities.records.Record;
import com.constellio.model.entities.schemas.Metadata;
import com.constellio.model.entities.schemas.MetadataSchemaTypes;
import com.constellio.model.services.schemas.SchemaUtils;
public class TaskRecordAppExtension extends RecordAppExtension {
private static final String IMAGES_DIR = "images";
String collection;
AppLayerFactory appLayerFactory;
public TaskRecordAppExtension(String collection, AppLayerFactory appLayerFactory) {
this.collection = collection;
this.appLayerFactory = appLayerFactory;
}
@Override
public void buildRecordVO(BuildRecordVOParams params) {
String resourceKey = null;
String extension = null;
RecordVO recordVO = params.getBuiltRecordVO();
String schemaCode = recordVO.getSchema().getCode();
String schemaTypeCode = SchemaUtils.getSchemaTypeCode(schemaCode);
if (schemaTypeCode.equals(Task.SCHEMA_TYPE)) {
resourceKey = getTaskIconPath();
extension = "task";
setNiceTitle(recordVO, params.getRecord(), schemaTypeCode, schemaCode, Task.DESCRIPTION);
}
if (resourceKey != null) {
recordVO.setResourceKey(resourceKey);
}
if (extension != null) {
recordVO.setExtension(extension);
}
}
private void setNiceTitle(RecordVO recordVO, Record record, String schemaTypeCode, String schemaCode, String metadataCode) {
MetadataSchemaTypes metadataSchemaTypes = appLayerFactory.getModelLayerFactory().getMetadataSchemasManager()
.getSchemaTypes(collection);
Metadata metadata = metadataSchemaTypes.getSchemaType(schemaTypeCode).getSchema(schemaCode).getMetadata(metadataCode);
String niceTitle = record.get(metadata);
if (niceTitle != null) {
recordVO.setNiceTitle(niceTitle);
}
}
@Override
public String getIconPathForRecord(GetIconPathParams params) {
String fileName = null;
String schemaCode = params.getRecord().getSchemaCode();
String schemaTypeCode = SchemaUtils.getSchemaTypeCode(schemaCode);
if (schemaTypeCode.equals(Task.SCHEMA_TYPE)) {
fileName = getTaskIconPath();
}
return fileName != null ? fileName : null;
}
private String getTaskIconPath() {
return IMAGES_DIR + "/icons/task/task.png";
}
}