import java.util.UUID;
import org.apache.log4j.Logger;
+import org.eclipse.core.runtime.Status;
+import org.springframework.security.Authentication;
+import org.springframework.security.context.SecurityContextHolder;
import org.springframework.security.providers.ProviderManager;
+import org.springframework.security.providers.UsernamePasswordAuthenticationToken;
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
import eu.etaxonomy.cdm.api.conversation.ConversationHolder;
import eu.etaxonomy.cdm.api.service.INameService;
import eu.etaxonomy.cdm.api.service.IReferenceService;
import eu.etaxonomy.cdm.api.service.ITaxonService;
+import eu.etaxonomy.cdm.api.service.IUserService;
import eu.etaxonomy.cdm.api.service.config.ITaxonServiceConfigurator;
import eu.etaxonomy.cdm.api.service.config.impl.TaxonServiceConfiguratorImpl;
import eu.etaxonomy.cdm.database.DbSchemaValidation;
import eu.etaxonomy.cdm.database.ICdmDataSource;
import eu.etaxonomy.cdm.model.common.IdentifiableEntity;
import eu.etaxonomy.cdm.model.common.Language;
+import eu.etaxonomy.cdm.model.common.User;
import eu.etaxonomy.cdm.model.name.TaxonNameBase;
import eu.etaxonomy.cdm.model.reference.Article;
import eu.etaxonomy.cdm.model.reference.Book;
import eu.etaxonomy.cdm.model.taxon.TaxonomicTree;
import eu.etaxonomy.cdm.persistence.query.MatchMode;
import eu.etaxonomy.taxeditor.datasource.CdmDataSourceRepository;
+import eu.etaxonomy.taxeditor.datasource.ChooseDatasourceDialog;
/**
* This implementation of ICdmDataRepository depends on hibernate sessions to store the data correctly
private ConversationHolder globalReadOnlyConversation;
private static DbSchemaValidation dbSchemaValidation;
+
+ private static LoginManager loginManager;
/**
*
public static CdmStore getDefault(String applicationContextBean){
if(instance == null){
logger.info("Initializing application context ...");
- ICdmDataSource cdmDatasource = CdmDataSourceRepository.getDefault().
- getCurrentDataSource();
-
- instance = new CdmStore(cdmDatasource, getDbSchemaValidation(), applicationContextBean);
- logger.info("Application context initialized.");
+ // Prompt user for datasource if there are more than one
+ if(CdmDataSourceRepository.getDefault().getAll().size() > 1){
+ ChooseDatasourceDialog chooseDataSource = new ChooseDatasourceDialog(StoreUtil.getShell());
+ if(chooseDataSource.open() == Status.OK){
+ initialize(applicationContextBean);
+
+ }else{
+ // no datasource chosen.
+ logger.warn("No datasource chosen. Exiting now.");
+ System.exit(1);
+ }
+ }else{
+ // Start default cdm database
+ initialize(applicationContextBean);
+ }
+
}
return instance;
}
+
+ private static CdmStore initialize(String applicationContextBean){
+
+ ICdmDataSource cdmDatasource = CdmDataSourceRepository.getDefault().getCurrentDataSource();
+
+ CdmStore instance = new CdmStore(cdmDatasource, getDbSchemaValidation(), applicationContextBean);
+
+ logger.info("Application context initialized.");
+
+ return instance;
+ }
/**
* @return
public static ProviderManager getAuthenticationManager() { return getDefault().getApplicationControllerInternal().getAuthenticationManager();}
+ public static IUserService getUserService() { return getDefault().getApplicationControllerInternal().getUserService(); }
/**
* @param searchText
return nomReferenceTypeMap;
}
-
+
+ /**
+ * incomplete! do note use!
+ */
+ public static LoginManager getLoginManager(){
+ if(loginManager == null){
+ loginManager = new LoginManager();
+ }
+ return loginManager;
+ }
}