package com.constellio.app.ui.framework.data;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedMap;
import java.util.TreeMap;
import com.constellio.app.services.factories.ConstellioFactories;
import com.constellio.app.ui.entities.SystemConfigurationGroupVO;
import com.constellio.app.ui.entities.SystemConfigurationVO;
import com.constellio.app.ui.framework.builders.SystemConfigurationToVOBuilder;
import com.constellio.model.entities.configs.SystemConfiguration;
import com.constellio.model.entities.configs.SystemConfigurationGroup;
import com.constellio.model.services.configs.SystemConfigurationsManager;
public class SystemConfigurationGroupdataProvider extends AbstractDataProvider {
transient private SortedMap<String, SystemConfigurationGroupVO > systemConfigurationGroupVOSortedMap;
private void readObject(ObjectInputStream stream)
throws IOException, ClassNotFoundException {
if(systemConfigurationGroupVOSortedMap == null){
initConfigs();
}
}
private void initConfigs() {
ConstellioFactories constellioFactories = ConstellioFactories.getInstance();
systemConfigurationGroupVOSortedMap = new TreeMap<>();
SystemConfigurationsManager systemConfigurationsManager = constellioFactories.getModelLayerFactory()
.getSystemConfigurationsManager();
SystemConfigurationToVOBuilder builder = new SystemConfigurationToVOBuilder();
List<SystemConfigurationGroup> sysConfigGroup = systemConfigurationsManager.getConfigurationGroups();
for (SystemConfigurationGroup group : sysConfigGroup) {
List<SystemConfigurationVO> sysConfigGroupVOList = new ArrayList<>();
for (SystemConfiguration config : systemConfigurationsManager.getNonHiddenGroupConfigurationsWithCodeOrderedByName(group.getCode())){
//if (!config.isHidden()) {
sysConfigGroupVOList.add(builder.build(config, systemConfigurationsManager.getValue(config)));
//}
}
systemConfigurationGroupVOSortedMap.put(group.getCode(), new SystemConfigurationGroupVO(group.getCode(), sysConfigGroupVOList));
}
}
public int size() {
if(systemConfigurationGroupVOSortedMap == null){
initConfigs();
}
return systemConfigurationGroupVOSortedMap.size();
}
public List<String> getCodesList() {
if(systemConfigurationGroupVOSortedMap == null){
initConfigs();
}
return new ArrayList<>(systemConfigurationGroupVOSortedMap.keySet());
}
public SystemConfigurationGroupVO getSystemConfigurationGroup(String code) {
if(systemConfigurationGroupVOSortedMap == null){
initConfigs();
}
return systemConfigurationGroupVOSortedMap.get(code);
}
public SystemConfigurationVO getValue(String groupCode, int i) {
return systemConfigurationGroupVOSortedMap.get(groupCode).getSystemConfigurationVO(i);
}
public void valueChange(String groupCode, int i, Object newStringValue) {
SystemConfigurationGroupVO groupConfig = systemConfigurationGroupVOSortedMap.get(groupCode);
groupConfig.valueChange(i, newStringValue);
}
}