
fr.ird.observe.services.ObserveServiceInitializer Maven / Gradle / Ivy
Show all versions of common-service Show documentation
package fr.ird.observe.services;
/*
* #%L
* ObServe Toolkit :: Common Service
* %%
* Copyright (C) 2017 - 2020 IRD, Ultreia.io
* %%
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public
* License along with this program. If not, see
* .
* #L%
*/
import fr.ird.observe.dto.referential.ReferentialLocale;
import fr.ird.observe.services.configuration.ObserveDataSourceConfiguration;
import fr.ird.observe.services.configuration.ObserveDataSourceConfigurationAndConnection;
import fr.ird.observe.services.configuration.ObserveDataSourceConnection;
import fr.ird.observe.services.configuration.rest.ObserveDataSourceConfigurationRest;
import fr.ird.observe.services.configuration.rest.ObserveDataSourceConnectionRest;
import java.io.File;
import java.util.Locale;
import java.util.Optional;
/**
* Objet contentant les informations nécessaire pour créer un nouveau service.
*
* Ces informations viennent en général du context applicatif appelant.
*
* Created on 31/08/15.
*
* @author Tony Chemit - [email protected]
*/
public class ObserveServiceInitializer {
/**
* La locale à utiliser pour faire des traductions.
*/
private Locale applicationLocale;
/**
* La locale à utiliser pour la source de données.
*/
private ReferentialLocale referentialLocale;
/**
* La connexion à la source de données (peut être null si on a pas encore de connexion).
*/
private ObserveDataSourceConnection dataSourceConnection;
/**
* La configuration à la source de données quand on a pas encore de connexion.
*/
private ObserveDataSourceConfiguration dataSourceConfiguration;
/**
* Le répertoire où créer les répertoires temporaires.
*/
private File temporaryDirectoryRoot;
/**
* Le temps en millisecondes maximum de tentavie de connection http.
*
* @since 6.0
*/
private int httpTimeout;
protected ObserveServiceInitializer() {
}
public static ObserveServiceInitializer create(Locale applicationLocale,
ReferentialLocale referentialLocale,
int httpTimeout,
File temporaryDirectoryRoot,
ObserveDataSourceConnection dataSourceConnection) {
ObserveServiceInitializer observeServiceInitializer = new ObserveServiceInitializer();
observeServiceInitializer.setApplicationLocale(applicationLocale);
observeServiceInitializer.setReferentialLocale(referentialLocale);
observeServiceInitializer.setHttpTimeout(httpTimeout);
observeServiceInitializer.setTemporaryDirectoryRoot(temporaryDirectoryRoot);
observeServiceInitializer.setDataSourceConfiguration(null);
observeServiceInitializer.setDataSourceConnection(dataSourceConnection);
return observeServiceInitializer;
}
public static ObserveServiceInitializer create(Locale applicationLocale,
ReferentialLocale referentialLocale,
int httpTimeout,
File temporaryDirectoryRoot,
ObserveDataSourceConfiguration dataSourceConfiguration) {
ObserveServiceInitializer observeServiceInitializer = new ObserveServiceInitializer();
observeServiceInitializer.setApplicationLocale(applicationLocale);
observeServiceInitializer.setReferentialLocale(referentialLocale);
observeServiceInitializer.setHttpTimeout(httpTimeout);
observeServiceInitializer.setTemporaryDirectoryRoot(temporaryDirectoryRoot);
observeServiceInitializer.setDataSourceConfiguration(dataSourceConfiguration);
observeServiceInitializer.setDataSourceConnection(null);
return observeServiceInitializer;
}
public static ObserveServiceInitializer create(Locale applicationLocale,
ReferentialLocale referentialLocale,
int httpTimeout,
File temporaryDirectoryRoot,
ObserveDataSourceConfigurationAndConnection configurationAndConnection) {
ObserveServiceInitializer observeServiceInitializer = new ObserveServiceInitializer();
observeServiceInitializer.setApplicationLocale(applicationLocale);
observeServiceInitializer.setReferentialLocale(referentialLocale);
observeServiceInitializer.setHttpTimeout(httpTimeout);
observeServiceInitializer.setTemporaryDirectoryRoot(temporaryDirectoryRoot);
observeServiceInitializer.setDataSourceConfiguration(null);
observeServiceInitializer.setDataSourceConnection(configurationAndConnection.getConnection());
observeServiceInitializer.setDataSourceConfiguration(configurationAndConnection.getConfiguration());
return observeServiceInitializer;
}
public static ObserveServiceInitializer create(ObserveServiceInitializer otherObserveServiceInitializer) {
ObserveServiceInitializer observeServiceInitializer;
if (otherObserveServiceInitializer.withDataSourceConnection()) {
observeServiceInitializer = create(
otherObserveServiceInitializer.getApplicationLocale(),
otherObserveServiceInitializer.getReferentialLocale(),
otherObserveServiceInitializer.getHttpTimeout(),
otherObserveServiceInitializer.getTemporaryDirectoryRoot(),
otherObserveServiceInitializer.getDataSourceConnection().orElseThrow(IllegalStateException::new));
} else {
observeServiceInitializer = create(
otherObserveServiceInitializer.getApplicationLocale(),
otherObserveServiceInitializer.getReferentialLocale(),
otherObserveServiceInitializer.getHttpTimeout(),
otherObserveServiceInitializer.getTemporaryDirectoryRoot(),
otherObserveServiceInitializer.getDataSourceConfiguration().orElseThrow(IllegalStateException::new));
}
return observeServiceInitializer;
}
public Locale getApplicationLocale() {
return applicationLocale;
}
protected void setApplicationLocale(Locale applicationLocale) {
this.applicationLocale = applicationLocale;
}
public ReferentialLocale getReferentialLocale() {
return referentialLocale;
}
protected void setReferentialLocale(ReferentialLocale referentialLocale) {
this.referentialLocale = referentialLocale;
}
public Optional getDataSourceConnection() {
return Optional.ofNullable(dataSourceConnection);
}
public void setDataSourceConnection(ObserveDataSourceConnection dataSourceConnection) {
this.dataSourceConnection = dataSourceConnection;
}
public Optional getDataSourceConfiguration() {
return Optional.ofNullable(dataSourceConfiguration);
}
public void setDataSourceConfiguration(ObserveDataSourceConfiguration dataSourceConfiguration) {
this.dataSourceConfiguration = dataSourceConfiguration;
}
public File getTemporaryDirectoryRoot() {
return temporaryDirectoryRoot;
}
protected void setTemporaryDirectoryRoot(File temporaryDirectoryRoot) {
this.temporaryDirectoryRoot = temporaryDirectoryRoot;
}
public boolean withDataSourceConnection() {
return dataSourceConnection != null;
}
public boolean withDataSourceConfiguration() {
return dataSourceConfiguration != null;
}
public int getHttpTimeout() {
return httpTimeout;
}
public void setHttpTimeout(int httpTimeout) {
this.httpTimeout = httpTimeout;
}
public String getServiceUrl() {
if (withDataSourceConnection()) {
ObserveDataSourceConnectionRest dataSourceConnection = (ObserveDataSourceConnectionRest) getDataSourceConnection().orElseThrow(IllegalStateException::new);
return dataSourceConnection.getServerUrl().toString();
}
if (withDataSourceConfiguration()) {
ObserveDataSourceConfigurationRest dataSourceConfiguration = (ObserveDataSourceConfigurationRest) getDataSourceConfiguration().orElseThrow(IllegalStateException::new);
return dataSourceConfiguration.getServerUrl().toString();
}
throw new IllegalStateException("No data source configuration, nor connection defined");
}
}