package com.constellio.app.ui.pages.home; import java.io.IOException; 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.framework.data.RecordLazyTreeDataProvider; import com.constellio.app.ui.pages.base.PresenterService; import com.constellio.app.ui.pages.base.SessionContext; import com.constellio.model.entities.Taxonomy; import com.constellio.model.entities.records.wrappers.User; import com.constellio.model.services.factories.ModelLayerFactory; import com.constellio.model.services.taxonomies.TaxonomiesManager; public class TaxonomyTabSheet implements Serializable { private transient ModelLayerFactory modelLayerFactory; private transient User user; private int defaultTab = 0; public TaxonomyTabSheet(ModelLayerFactory modelLayerFactory, SessionContext sessionContext) { init(modelLayerFactory, sessionContext); } public List<RecordLazyTreeDataProvider> getDataProviders() { List<RecordLazyTreeDataProvider> providers = new ArrayList<>(); for (String taxonomy : getTaxonomyCodes()) { providers.add(new RecordLazyTreeDataProvider(taxonomy)); } return providers; } public int getDefaultTab() { return defaultTab; } private void init(ModelLayerFactory modelLayerFactory, SessionContext sessionContext) { this.modelLayerFactory = modelLayerFactory; user = new PresenterService(modelLayerFactory).getCurrentUser(sessionContext); PresenterService presenterService = new PresenterService(modelLayerFactory); String userDefaultTaxonomy = user.getDefaultTaxonomy(); String configDefaultTaxonomy = presenterService.getSystemConfigs().getDefaultTaxonomy(); int index = 0; for (String taxonomy : getTaxonomyCodes()) { if (userDefaultTaxonomy != null) { if (taxonomy.equals(userDefaultTaxonomy)) { defaultTab = index; } } else if (taxonomy.equals(configDefaultTaxonomy)) { defaultTab = index; } index++; } } private List<String> getTaxonomyCodes() { TaxonomiesManager taxonomiesManager = modelLayerFactory.getTaxonomiesManager(); List<String> result = new ArrayList<>(); for (Taxonomy taxonomy : taxonomiesManager.getAvailableTaxonomiesInHomePage(user)) { result.add(taxonomy.getCode()); } return result; } private void readObject(java.io.ObjectInputStream stream) throws IOException, ClassNotFoundException { stream.defaultReadObject(); init(ConstellioFactories.getInstance().getModelLayerFactory(), ConstellioUI.getCurrentSessionContext()); } }