package com.constellio.app.modules.rm.ui.components.retentionRule; import com.constellio.app.modules.rm.services.RMSchemasRecordsServices; import com.constellio.app.ui.application.ConstellioUI; import com.constellio.app.ui.entities.RecordVO; import com.constellio.app.ui.framework.components.converters.RecordIdToCaptionConverter; import com.constellio.app.ui.framework.components.display.ReferenceDisplay; import com.constellio.model.entities.records.Record; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.records.RecordServices; public class AdministrativeUnitReferenceDisplay extends ReferenceDisplay { private static final String SEPARATOR = " > "; public AdministrativeUnitReferenceDisplay(RecordVO recordVO) { super(recordVO); } public AdministrativeUnitReferenceDisplay(String recordId) { super(recordId); } @Override public void setCaption(String caption) { RecordIdToCaptionConverter recordIdToCaptionConverter = new RecordIdToCaptionConverter(); ConstellioUI ui = ConstellioUI.getCurrent(); String collection = ui.getSessionContext().getCurrentCollection(); ModelLayerFactory modelLayerFactory = ui.getConstellioFactories().getModelLayerFactory(); RecordServices recordServices = modelLayerFactory.newRecordServices(); RMSchemasRecordsServices rmSchemasRecordsServices = new RMSchemasRecordsServices(collection, ui); Record record = recordServices.getDocumentById(getRecordId()); String id = record.get(rmSchemasRecordsServices.administrativeUnit.parent()); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.append(caption); while (id != null) { record = recordServices.getDocumentById(id); String value = recordIdToCaptionConverter.convertToPresentation(id, String.class, getLocale()) + SEPARATOR; stringBuilder.insert(0, value); id = record.get(rmSchemasRecordsServices.administrativeUnit.parent()); } super.setCaption(stringBuilder.toString()); } }