package com.constellio.app.ui.framework.components; import java.io.Serializable; import com.constellio.app.api.extensions.taxonomies.GetCustomResultDisplayParam; import com.constellio.app.services.factories.AppLayerFactory; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.entities.SearchResultVO; import com.constellio.app.ui.entities.UserVO; @SuppressWarnings("serial") public class RecordDisplayFactory implements Serializable { private UserVO currentUser; private MetadataDisplayFactory componentFactory; public RecordDisplayFactory(UserVO currentUser, MetadataDisplayFactory componentFactory) { this.currentUser = currentUser; this.componentFactory = componentFactory; } public RecordDisplayFactory(UserVO currentUser) { this(currentUser, new MetadataDisplayFactory()); } public RecordDisplay build(RecordVO recordVO) { return new RecordDisplay(recordVO, componentFactory); } public SearchResultDisplay build(SearchResultVO searchResultVO) { AppLayerFactory appLayerFactory = ConstellioFactories.getInstance().getAppLayerFactory(); GetCustomResultDisplayParam param = new GetCustomResultDisplayParam(searchResultVO, componentFactory); SearchResultDisplay searchResultDisplay = appLayerFactory.getExtensions() .forCollection(currentUser.getSchema().getCollection()).getCustomResultDisplayFor(param); if (searchResultDisplay == null) { return new SearchResultDisplay(searchResultVO, componentFactory, appLayerFactory); } else { return searchResultDisplay; } } }