package com.constellio.app.ui.framework.components.fields.taxonomy; import static com.constellio.app.services.factories.ConstellioFactories.getInstance; import java.io.Serializable; import java.util.ArrayList; import java.util.List; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.ui.application.ConstellioUI; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.entities.RecordVO.VIEW_MODE; import com.constellio.app.ui.entities.UserVO; import com.constellio.app.ui.framework.builders.RecordToVOBuilder; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.taxonomies.TaxonomiesSearchOptions; import com.constellio.model.services.taxonomies.TaxonomiesSearchServices; import com.constellio.model.services.taxonomies.TaxonomySearchRecord; import com.constellio.model.services.users.UserServices; public class TaxonomyFieldPresenter implements Serializable { private TaxonomyField taxonomyField; public TaxonomyFieldPresenter(TaxonomyField taxonomyField) { this.taxonomyField = taxonomyField; } public void forTaxonomyAndSchemaTypeCodes(String taxonomyCode, String schemaTypeCode) { SessionContext sessionContext = taxonomyField.getSessionContext(); String currentCollection = sessionContext.getCurrentCollection(); UserVO currentUserVO = sessionContext.getCurrentUser(); ConstellioFactories constellioFactories = getInstance(); ModelLayerFactory modelLayerFactory = constellioFactories.getModelLayerFactory(); TaxonomiesSearchServices taxonomiesSearchServices = modelLayerFactory.newTaxonomiesSearchService(); UserServices userServices = modelLayerFactory.newUserServices(); User currentUser = userServices.getUserInCollection(currentUserVO.getUsername(), currentCollection); TaxonomiesSearchOptions taxonomiesSearchOptions = new TaxonomiesSearchOptions(); List<TaxonomySearchRecord> matches = taxonomiesSearchServices.getLinkableRootConcept(currentUser, currentCollection, taxonomyCode, schemaTypeCode, taxonomiesSearchOptions); RecordToVOBuilder voBuilder = new RecordToVOBuilder(); List<RecordVO> recordVOs = new ArrayList<RecordVO>(); for (TaxonomySearchRecord match : matches) { RecordVO recordVO = voBuilder.build(match.getRecord(), VIEW_MODE.TABLE, ConstellioUI.getCurrentSessionContext()); recordVOs.add(recordVO); } taxonomyField.setOptions(recordVOs); } }