package com.constellio.app.modules.es.ui.pages.mapping;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.constellio.app.modules.es.navigation.ESViews;
import com.constellio.app.modules.es.services.mapping.ConnectorField;
import com.constellio.app.modules.es.services.mapping.MappingParams;
import com.constellio.app.modules.es.ui.entities.DocumentType;
import com.constellio.app.modules.es.ui.entities.MappingVO;
import com.constellio.app.ui.application.ConstellioUI;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.model.entities.Language;
public class DisplayConnectorMappingsPresenter extends MappingsPresenter<DisplayConnectorMappingsView> {
public DisplayConnectorMappingsPresenter(DisplayConnectorMappingsView view) {
super(view);
}
public DisplayConnectorMappingsPresenter forParams(String parameters) {
instanceId = parameters;
return this;
}
public List<DocumentType> getDocumentTypes() {
List<DocumentType> result = new ArrayList<>();
for (String code : mappingService().getDocumentTypes(connectorInstance())) {
Language language = Language.withCode(ConstellioUI.getCurrentSessionContext().getCurrentLocale().getLanguage());
String label = schema(code + "_default").getLabel(language);
result.add(new DocumentType(code, label));
}
return result;
}
public List<MappingVO> getMappings(String documentType) {
Map<String, ConnectorField> fields = getFieldMapById(documentType);
ArrayList<MappingVO> result = new ArrayList<>();
for (Entry<String, List<String>> mapping : mappingService().getMapping(connectorInstance(), documentType).entrySet()) {
MetadataVO metadata = getMetadataVO(documentType + "_" + instanceId + "_" + mapping.getKey());
List<ConnectorField> mappedFields = new ArrayList<>();
for (String field : mapping.getValue()) {
mappedFields.add(fields.get(field));
}
result.add(new MappingVO(metadata, mappedFields));
}
return result;
}
public void backButtonClicked() {
view.navigate().to(ESViews.class).displayConnectorInstance(instanceId);
}
public void addMappingRequested(String documentType) {
view.navigate().to(ESViews.class).addConnectorMapping(instanceId, documentType);
}
public void editMappingRequested(String documentType, MappingVO mapping) {
view.navigate().to(ESViews.class).editConnectorMapping(instanceId, documentType, mapping.getMetadata().getLocalCode());
}
public void deleteMappingRequested(String documentType, MappingVO mappingVO) {
Map<String, List<String>> mapping = mappingService().getMapping(connectorInstance(), documentType);
mapping.remove(mappingVO.getMetadataLocalCode());
saveMapping(documentType, mapping);
}
public boolean canQuickConfig(String documentType) {
return mappingService().canQuickConfig(connectorInstance(), documentType);
}
public void quickConfigRequested(String documentType) {
view.displayQuickConfig(documentType);
}
public List<MappingParams> getDefaultQuickConfig(String documentType) {
return mappingService().getDefaultMappingParams(connectorInstance(), documentType);
}
public void quickConfigRequested(String documentType, List<MappingParams> mappingConfig) {
mappingService().setMapping(connectorInstance(), documentType, mappingConfig);
view.reload();
}
private void saveMapping(String documentType, Map<String, List<String>> mapping) {
mappingService().setMapping(connectorInstance(), documentType, mapping);
view.reload();
}
}