package com.constellio.app.ui.pages.firstSetup; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Set; import com.constellio.app.services.factories.ConstellioFactories; import com.constellio.app.ui.framework.data.CollectionVODataProvider.CollectionVO; import com.constellio.model.conf.FoldersLocator; import com.constellio.model.entities.Language; import com.constellio.model.entities.modules.Module; import com.constellio.model.entities.records.Record; import com.constellio.model.services.extensions.ConstellioModulesManager; import com.constellio.model.services.factories.ModelLayerFactory; public class FirstSetupPresenter { private ConstellioFactories factories; public FirstSetupPresenter(ConstellioFactories factories) { this.factories = factories; } public List<Module> getAvailableModules() { // NOTE: I may have to change the typecast here. return (List<Module>) factories.getAppLayerFactory().getModulesManager().getAllModules(); } public List<Language> getAvailableSystemLanguages() { // NOTE: The initial collection will have the selected system langauge return Language.getAvailableLanguages(); } public CollectionVO newCollectionVO() { return new CollectionVO(); } public void setSystemLanguage(String languageCode) { FoldersLocator foldersLocator = new FoldersLocator(); // foldersLocator. } private void createCollection(String code, Set<String> modules, String language) { Record collectionRecord = factories.getAppLayerFactory().getCollectionsManager().createCollectionInCurrentVersion(code, Arrays.asList(language)); ConstellioModulesManager modulesManager = factories.getAppLayerFactory().getModulesManager(); List<String> roles = new ArrayList<>(); for (String moduleCode : modules) { Module module = modulesManager.getInstalledModule(moduleCode); modulesManager.enableValidModuleAndGetInvalidOnes(code, module); roles.addAll(getRolesForCreator(module)); } ModelLayerFactory modelLayerFactory = factories.getModelLayerFactory(); // TODO Create admin user with specified password // |--> But how will the user provide the password? // UserServices userServices = modelLayerFactory.newUserServices(); // User user = userServices.getUserInCollection("admin", code); // try { // modelLayerFactory.newRecordServices().update(user.setUserRoles(roles).setCollectionAllAccess(true)); // } catch (RecordServicesException e) { // throw new RuntimeException(e); // } } List<String> getRolesForCreator(Module module) { return (module.getRolesForCreator() == null) ? new ArrayList<String>() : module.getRolesForCreator(); } }