All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.ird.observe.services.ObserveServiceInitializer Maven / Gradle / Ivy

The newest version!
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"); } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy