package com.constellio.app.modules.rm.ui.components.facet;
import com.constellio.app.ui.entities.MetadataVO;
import com.constellio.app.ui.framework.components.MetadataFieldFactory;
import com.constellio.app.ui.pages.management.facet.AddEditFacetConfigurationPresenter;
import com.constellio.app.ui.pages.management.facet.fields.ValuesLabelFieldImpl;
import com.constellio.model.entities.records.wrappers.Facet;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.Field;
import com.vaadin.ui.OptionGroup;
public class FacetFieldFactory extends MetadataFieldFactory {
private ComboBox dataStoreCode;
private OptionGroup facetType;
private boolean dataStoreCodeSupportingLabelValues;
private AddEditFacetConfigurationPresenter presenter;
public FacetFieldFactory(ComboBox dataStoreCode, OptionGroup facetType, AddEditFacetConfigurationPresenter presenter) {
this.dataStoreCode = dataStoreCode;
this.facetType = facetType;
this.dataStoreCodeSupportingLabelValues = presenter.isDataStoreCodeSupportingLabelValues(presenter.getDataFieldCode());
this.presenter = presenter;
}
@Override
public Field<?> build(MetadataVO metadata) {
Field<?> field;
String metadataCode = metadata.getCode();
if (metadataCode.endsWith(Facet.FIELD_DATA_STORE_CODE)) {
field = dataStoreCode;
} else if (metadataCode.endsWith(Facet.ORDER)) {
field = null;
} else if (metadataCode.endsWith(Facet.PAGES)) {
field = null;
} else if (metadataCode.endsWith(Facet.FACET_TYPE)) {
field = facetType;
} else if ((metadataCode.endsWith(Facet.FIELD_VALUES_LABEL) && dataStoreCodeSupportingLabelValues) || metadataCode
.endsWith(Facet.LIST_QUERIES)) {
field = new ValuesLabelFieldImpl(presenter);
} else {
field = super.build(metadata);
}
return field;
}
}