refactor: database connection and add Store class
parent
2c0b705ab6
commit
8256f2c8a6
24
pom.xml
24
pom.xml
|
|
@ -44,7 +44,7 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.servlet</groupId>
|
<groupId>javax.servlet</groupId>
|
||||||
<artifactId>javax.servlet-api</artifactId>
|
<artifactId>javax.servlet-api</artifactId>
|
||||||
<version>4.0.1</version> <!-- Remplacez par la version appropriée -->
|
<version>4.0.1</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
|
@ -52,9 +52,29 @@
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.fasterxml.jackson.core</groupId>
|
<groupId>com.fasterxml.jackson.core</groupId>
|
||||||
<artifactId>jackson-databind</artifactId>
|
<artifactId>jackson-databind</artifactId>
|
||||||
<version>2.13.0</version> <!-- Utilisez la dernière version disponible -->
|
<version>2.13.0</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- LOG dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-core</artifactId>
|
||||||
|
<version>1.4.11</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- LOG dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>ch.qos.logback</groupId>
|
||||||
|
<artifactId>logback-classic</artifactId>
|
||||||
|
<version>1.4.11</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
|
<!-- LOG dependencies -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.slf4j</groupId>
|
||||||
|
<artifactId>slf4j-api</artifactId>
|
||||||
|
<version>2.0.9</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
package com.example.services;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class DatabaseConnectDOTSOFT implements AutoCloseable {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(DatabaseConnectDOTSOFT.class);
|
||||||
|
|
||||||
|
private Connection connection;
|
||||||
|
|
||||||
|
public DatabaseConnectDOTSOFT(String username) throws SQLException {
|
||||||
|
String environment = loadEnvironment();
|
||||||
|
Properties dbProperties = loadDatabaseProperties();
|
||||||
|
|
||||||
|
String url = dbProperties.getProperty(environment + ".db.url");
|
||||||
|
String userpassword = dbProperties.getProperty(environment + ".db." + username + ".password");
|
||||||
|
|
||||||
|
connection = DriverManager.getConnection(url, username, userpassword);
|
||||||
|
|
||||||
|
logger.info("DOTSOFT Connection OK for user " + username + " on environment " + environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Connection getConnection() {
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws SQLException {
|
||||||
|
if (connection != null && !connection.isClosed()) {
|
||||||
|
connection.close();
|
||||||
|
logger.info("DOTSOFT Connection closed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private String loadEnvironment() {
|
||||||
|
Properties envProperties = loadProperties("env.properties");
|
||||||
|
return envProperties.getProperty("environment");
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties loadDatabaseProperties() {
|
||||||
|
Properties dbProperties = loadProperties("db.properties");
|
||||||
|
return dbProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties loadProperties(String fileName) {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
try (InputStream input = getClass().getClassLoader().getResourceAsStream(fileName)) {
|
||||||
|
properties.load(input);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// Handle the exception correctly for your application
|
||||||
|
}
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,57 @@
|
||||||
|
package com.example.services;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.sql.Connection;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
import java.sql.SQLException;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class DatabaseConnectXSTORE implements AutoCloseable {
|
||||||
|
private static final Logger logger = LoggerFactory.getLogger(DatabaseConnectXSTORE.class);
|
||||||
|
|
||||||
|
private Connection connection;
|
||||||
|
|
||||||
|
public DatabaseConnectXSTORE(String dbHost, String username) throws SQLException {
|
||||||
|
Properties dbProperties = loadDatabaseProperties();
|
||||||
|
|
||||||
|
String url = dbProperties.getProperty("xstore.db.url").replace("HOST", dbHost);
|
||||||
|
String userpassword = dbProperties.getProperty("xstore.db." + username + ".password");
|
||||||
|
|
||||||
|
// Initialiser votre connexion à la base de données ici
|
||||||
|
connection = DriverManager.getConnection(url, username, userpassword);
|
||||||
|
|
||||||
|
logger.info("XSTORE Connection OK for user " + username + " on host " + dbHost);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Connection getConnection() {
|
||||||
|
return connection;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() throws SQLException {
|
||||||
|
if (connection != null && !connection.isClosed()) {
|
||||||
|
connection.close();
|
||||||
|
logger.info("XSTORE Connection closed");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties loadDatabaseProperties() {
|
||||||
|
Properties dbProperties = loadProperties("db.properties");
|
||||||
|
return dbProperties;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Properties loadProperties(String fileName) {
|
||||||
|
Properties properties = new Properties();
|
||||||
|
try (InputStream input = getClass().getClassLoader().getResourceAsStream(fileName)) {
|
||||||
|
properties.load(input);
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// Handle the exception correctly for your application
|
||||||
|
}
|
||||||
|
return properties;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,26 +0,0 @@
|
||||||
package com.example.services;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
public class DatabaseConnection implements AutoCloseable {
|
|
||||||
|
|
||||||
private Connection connection;
|
|
||||||
|
|
||||||
public DatabaseConnection(String dbHost, String username, String password) throws SQLException {
|
|
||||||
// Initialiser votre connexion à la base de données ici
|
|
||||||
connection = DriverManager.getConnection("jdbc:oracle:thin:@" + dbHost + ":1521/XSTORE", username, password);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Connection getConnection() {
|
|
||||||
return connection;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() throws SQLException {
|
|
||||||
if (connection != null && !connection.isClosed()) {
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
package com.example.services;
|
|
||||||
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
|
|
||||||
public class DatabaseConnectionDS implements AutoCloseable {
|
|
||||||
|
|
||||||
private Connection connection;
|
|
||||||
|
|
||||||
public DatabaseConnectionDS(String username, String password) throws SQLException {
|
|
||||||
// Initialiser votre connexion à la base de données ici
|
|
||||||
// jdbc:oracle:thin:@v-aspd-b01-ii-d.adic.lan:1521/IASPDI
|
|
||||||
// jdbc:oracle:thin:@v-aspd-b01-irdc.adic.lan:1521/MASPDI
|
|
||||||
connection = DriverManager.getConnection("jdbc:oracle:thin:@v-aspd-b01-irdc.adic.lan:1521/MASPDI", username, password);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Connection getConnection() {
|
|
||||||
return connection;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void close() throws SQLException {
|
|
||||||
if (connection != null && !connection.isClosed()) {
|
|
||||||
connection.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -26,7 +26,7 @@ public class DatabaseService {
|
||||||
|
|
||||||
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
||||||
|
|
||||||
try (DatabaseConnection databaseConnection = new DatabaseConnection(dbHost, "repqueue", "repqueue")) {
|
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost, "repqueue")) {
|
||||||
String query = "SELECT COUNT(*) FROM CTL_REPLICATION_QUEUE";
|
String query = "SELECT COUNT(*) FROM CTL_REPLICATION_QUEUE";
|
||||||
|
|
||||||
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query);
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query);
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,6 @@ public class HelloWebService {
|
||||||
|
|
||||||
@GET
|
@GET
|
||||||
public String sayHello() {
|
public String sayHello() {
|
||||||
return "Hello, world!";
|
return "Hello, I'm here to serve you!";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,7 +38,7 @@ public class ItemService {
|
||||||
|
|
||||||
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
||||||
|
|
||||||
try (DatabaseConnection databaseConnection = new DatabaseConnection(dbHost, "dtv", "dtv")) {
|
try (DatabaseConnectXSTORE databaseConnection = new DatabaseConnectXSTORE(dbHost, "dtv")) {
|
||||||
String query = "SELECT * FROM ITM_ITEM WHERE ITEM_ID LIKE ?" ;
|
String query = "SELECT * FROM ITM_ITEM WHERE ITEM_ID LIKE ?" ;
|
||||||
|
|
||||||
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,7 @@
|
||||||
package com.example.services;
|
package com.example.services;
|
||||||
|
|
||||||
|
import com.example.services.store.*;
|
||||||
|
|
||||||
import javax.ws.rs.GET;
|
import javax.ws.rs.GET;
|
||||||
import javax.ws.rs.Path;
|
import javax.ws.rs.Path;
|
||||||
import javax.ws.rs.Produces;
|
import javax.ws.rs.Produces;
|
||||||
|
|
@ -22,9 +24,15 @@ import java.util.concurrent.locks.ReentrantLock;
|
||||||
|
|
||||||
@Path("/stores")
|
@Path("/stores")
|
||||||
public class StoreService {
|
public class StoreService {
|
||||||
private static List<store> cachedStoreList;
|
private static List<Store> cachedStoreList;
|
||||||
private static final Lock cacheLock = new ReentrantLock();
|
private static final Lock cacheLock = new ReentrantLock();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves a store by its ID.
|
||||||
|
*
|
||||||
|
* @param storeId the ID of the store to retrieve
|
||||||
|
* @return a response containing the store information in JSON format
|
||||||
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/get")
|
@Path("/get")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
|
|
@ -35,9 +43,7 @@ public class StoreService {
|
||||||
|
|
||||||
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
||||||
|
|
||||||
// IASPDI com02 / B1Xto9pAbtBCOxuecG7W
|
try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) {
|
||||||
// MASPDI com02 /
|
|
||||||
try (DatabaseConnectionDS databaseConnection = new DatabaseConnectionDS("com02", "B1Xto9pAbtBCOxuecG7W")) {
|
|
||||||
String query = "SELECT id_structure,nom,'10.100.0.18' AS ip, tel1 AS telephone FROM structure WHERE id_structure = ?" ;
|
String query = "SELECT id_structure,nom,'10.100.0.18' AS ip, tel1 AS telephone FROM structure WHERE id_structure = ?" ;
|
||||||
|
|
||||||
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query)) {
|
||||||
|
|
@ -45,7 +51,7 @@ public class StoreService {
|
||||||
|
|
||||||
try (ResultSet resultSet = statement.executeQuery()) {
|
try (ResultSet resultSet = statement.executeQuery()) {
|
||||||
if (resultSet.next()) {
|
if (resultSet.next()) {
|
||||||
store store = mapResultSetTostore(resultSet);
|
Store store = mapResultSetTostore(resultSet);
|
||||||
|
|
||||||
ObjectMapper objectMapper = new ObjectMapper();
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
String jsonResponse = objectMapper.writeValueAsString(store);
|
String jsonResponse = objectMapper.writeValueAsString(store);
|
||||||
|
|
@ -60,22 +66,27 @@ public class StoreService {
|
||||||
String errorResponse = "{\"error\":\"" + e.getMessage() + "\"}";
|
String errorResponse = "{\"error\":\"" + e.getMessage() + "\"}";
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorResponse).build();
|
||||||
} catch (JsonProcessingException e) {
|
} catch (JsonProcessingException e) {
|
||||||
e.printStackTrace(); // Gérer les exceptions correctement dans un environnement de production
|
e.printStackTrace(); // Handle exceptions correctly in a production environment
|
||||||
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"Error processing JSON\"}").build();
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"Error processing JSON\"}").build();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves all stores from the database and returns them as a JSON response.
|
||||||
|
*
|
||||||
|
* @return A JSON response containing the list of stores
|
||||||
|
*/
|
||||||
@GET
|
@GET
|
||||||
@Path("/getAll")
|
@Path("/getAll")
|
||||||
@Produces(MediaType.APPLICATION_JSON)
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
public Response getAllStores() {
|
public Response getAllStores() {
|
||||||
if (cachedStoreList == null) {
|
if (cachedStoreList == null) {
|
||||||
// Utilisation d'un verrou pour éviter que plusieurs requêtes déclenchent la récupération simultanée
|
// Use of a lock to prevent multiple requests from triggering simultaneous retrieval
|
||||||
cacheLock.lock();
|
cacheLock.lock();
|
||||||
try {
|
try {
|
||||||
// Vérification à nouveau après avoir acquis le verrou
|
// Check again after acquiring the lock
|
||||||
if (cachedStoreList == null) {
|
if (cachedStoreList == null) {
|
||||||
// Récupérer depuis la base de données seulement si la liste n'est pas en cache
|
// Retrieve from database only if list is not cached
|
||||||
cachedStoreList = retrieveStoresFromDatabase();
|
cachedStoreList = retrieveStoresFromDatabase();
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|
@ -98,10 +109,15 @@ public class StoreService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<store> retrieveStoresFromDatabase() {
|
/**
|
||||||
|
* Retrieves stores from the database.
|
||||||
|
*
|
||||||
|
* @return a list of stores retrieved from the database
|
||||||
|
*/
|
||||||
|
private List<Store> retrieveStoresFromDatabase() {
|
||||||
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
DriverManager.setLoginTimeout(5); // Définir le timeout à 5 secondes
|
||||||
|
|
||||||
try (DatabaseConnectionDS databaseConnection = new DatabaseConnectionDS("com02", "B1Xto9pAbtBCOxuecG7W")) {
|
try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) {
|
||||||
String query = "SELECT st.id_structure, TRIM(st.nom) as nom, '10.100.0.18' AS ip, " +
|
String query = "SELECT st.id_structure, TRIM(st.nom) as nom, '10.100.0.18' AS ip, " +
|
||||||
"st.tel1 AS telephone " +
|
"st.tel1 AS telephone " +
|
||||||
"FROM COM02.STRUCTURE st " +
|
"FROM COM02.STRUCTURE st " +
|
||||||
|
|
@ -111,10 +127,10 @@ public class StoreService {
|
||||||
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query);
|
try (PreparedStatement statement = databaseConnection.getConnection().prepareStatement(query);
|
||||||
ResultSet resultSet = statement.executeQuery()) {
|
ResultSet resultSet = statement.executeQuery()) {
|
||||||
|
|
||||||
List<store> storeList = new ArrayList<>();
|
List<Store> storeList = new ArrayList<>();
|
||||||
|
|
||||||
while (resultSet.next()) {
|
while (resultSet.next()) {
|
||||||
store store = mapResultSetTostore(resultSet);
|
Store store = mapResultSetTostore(resultSet);
|
||||||
storeList.add(store);
|
storeList.add(store);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -126,8 +142,15 @@ public class StoreService {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private store mapResultSetTostore(ResultSet resultSet) throws SQLException {
|
/**
|
||||||
store store = new store();
|
* Maps a ResultSet to a store object.
|
||||||
|
*
|
||||||
|
* @param resultSet the ResultSet containing the data to be mapped
|
||||||
|
* @return the store object with mapped data
|
||||||
|
* @throws SQLException if there is an error accessing the data from the ResultSet
|
||||||
|
*/
|
||||||
|
private Store mapResultSetTostore(ResultSet resultSet) throws SQLException {
|
||||||
|
Store store = new Store();
|
||||||
|
|
||||||
store.setId_structure(resultSet.getInt("ID_STRUCTURE"));
|
store.setId_structure(resultSet.getInt("ID_STRUCTURE"));
|
||||||
store.setNom(resultSet.getString("NOM"));
|
store.setNom(resultSet.getString("NOM"));
|
||||||
|
|
@ -137,43 +160,129 @@ public class StoreService {
|
||||||
return store;
|
return store;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class store {
|
@GET
|
||||||
private Integer id_structure;
|
@Path("/getStoreDetails")
|
||||||
private String nom;
|
@Produces(MediaType.APPLICATION_JSON)
|
||||||
private String ip;
|
public Response getStoreDetails() {
|
||||||
private String telephone;
|
try {
|
||||||
|
StoreDetails storeDetails = retrieveStoreDetailsFromDatabase();
|
||||||
|
|
||||||
public Integer getId_structure() {
|
if (storeDetails != null) {
|
||||||
return id_structure;
|
ObjectMapper objectMapper = new ObjectMapper();
|
||||||
|
try {
|
||||||
|
String jsonResponse = objectMapper.writeValueAsString(storeDetails);
|
||||||
|
//System.out.println("JSON Response: " + jsonResponse); // Ajoutez ceci pour vérifier la sortie JSON
|
||||||
|
return Response.ok(jsonResponse).build();
|
||||||
|
} catch (JsonProcessingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR)
|
||||||
|
.entity("{\"error\":\"Error converting StoreDetails to JSON\"}")
|
||||||
|
.build();
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
public void setId_structure(Integer id_structure) {
|
return Response.status(Response.Status.NOT_FOUND).entity("{\"error\":\"Store details not found\"}").build();
|
||||||
this.id_structure = id_structure;
|
|
||||||
}
|
}
|
||||||
|
} catch (RuntimeException e) {
|
||||||
public String getNom() {
|
// Capture the RuntimeException to manage SQL errors
|
||||||
return nom;
|
e.printStackTrace();
|
||||||
}
|
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity("{\"error\":\"" + e.getMessage() + "\"}").build();
|
||||||
|
|
||||||
public void setNom(String nom) {
|
|
||||||
this.nom = nom;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIp() {
|
|
||||||
return ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setIp(String ip) {
|
|
||||||
this.ip = ip;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getTelephone() {
|
|
||||||
return telephone;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTelephone(String telephone) {
|
|
||||||
this.telephone = telephone;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves storeDetails from the database.
|
||||||
|
*
|
||||||
|
* @return a list of stores retrieved from the database
|
||||||
|
*/
|
||||||
|
private StoreDetails retrieveStoreDetailsFromDatabase() {
|
||||||
|
DriverManager.setLoginTimeout(5);
|
||||||
|
|
||||||
|
StoreDetails storeDetails = new StoreDetails(); // Déclarer l'objet en dehors des blocs try
|
||||||
|
|
||||||
|
try (DatabaseConnectDOTSOFT databaseConnection = new DatabaseConnectDOTSOFT("com02")) {
|
||||||
|
// Partie Store
|
||||||
|
String storeQuery = "SELECT st.id_structure, TRIM(st.nom) as nom, '10.100.0.18' AS ip, " +
|
||||||
|
"st.tel1 AS telephone, 'https://mp4.ikksgroup.com/photos/1/6/5/7/3/16573-large.JPG' as photoLink " +
|
||||||
|
"FROM COM02.STRUCTURE st " +
|
||||||
|
"WHERE st.id_structure = 4";
|
||||||
|
|
||||||
|
try (PreparedStatement storeStatement = databaseConnection.getConnection().prepareStatement(storeQuery);
|
||||||
|
ResultSet storeResultSet = storeStatement.executeQuery()) {
|
||||||
|
|
||||||
|
if (storeResultSet.next()) {
|
||||||
|
Store store = mapResultSetToStore(storeResultSet);
|
||||||
|
storeDetails.setStore(store); // Définir la partie Store dans l'objet StoreDetails
|
||||||
|
// Faites quelque chose avec la partie Store
|
||||||
|
} else {
|
||||||
|
// Ajustez selon le comportement souhaité si aucun résultat n'est trouvé pour la partie Store
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Partie Réplication
|
||||||
|
String replicationQuery = "SELECT 1 AS replicationOk, " +
|
||||||
|
"5 AS pendingReplications, " +
|
||||||
|
"TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS minReplicationDate, " +
|
||||||
|
"TO_CHAR(SYSDATE + INTERVAL '1' DAY, 'YYYY-MM-DD HH24:MI:SS') AS maxReplicationDate " +
|
||||||
|
"FROM DUAL";
|
||||||
|
|
||||||
|
try (PreparedStatement storeStatement = databaseConnection.getConnection().prepareStatement(replicationQuery);
|
||||||
|
ResultSet storeReplicationResultSet = storeStatement.executeQuery()) {
|
||||||
|
|
||||||
|
if (storeReplicationResultSet.next()) {
|
||||||
|
StoreReplication storeReplication = mapResultSetToStoreReplication(storeReplicationResultSet);
|
||||||
|
storeDetails.setReplication(storeReplication);
|
||||||
|
} else {
|
||||||
|
// Ajustez selon le comportement souhaité si aucun résultat n'est trouvé pour la partie Store
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Partie Ticket
|
||||||
|
String ticketQuery = "SELECT 10 AS totalTicketsInCaisse, " +
|
||||||
|
"15 AS totalTicketsInBackOffice " +
|
||||||
|
"FROM DUAL";
|
||||||
|
|
||||||
|
try (PreparedStatement ticketStatement = databaseConnection.getConnection().prepareStatement(ticketQuery);
|
||||||
|
ResultSet ticketResultSet = ticketStatement.executeQuery()) {
|
||||||
|
|
||||||
|
if (ticketResultSet.next()) {
|
||||||
|
StoreTicket storeTicket = mapResultSetToStoreTicket(ticketResultSet);
|
||||||
|
storeDetails.setTickets(storeTicket);
|
||||||
|
} else {
|
||||||
|
// Ajustez selon le comportement souhaité si aucun résultat n'est trouvé pour la partie Ticket
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
// Gérer les exceptions correctement dans un environnement de production
|
||||||
|
}
|
||||||
|
|
||||||
|
// Retournez l'objet StoreDetails complet
|
||||||
|
return storeDetails;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Store mapResultSetToStore(ResultSet resultSet) throws SQLException {
|
||||||
|
Integer id_structure = resultSet.getInt("id_structure");
|
||||||
|
String nom = resultSet.getString("nom");
|
||||||
|
String ip = resultSet.getString("ip");
|
||||||
|
String telephone = resultSet.getString("telephone");
|
||||||
|
String photoLink = resultSet.getString("photoLink");
|
||||||
|
|
||||||
|
return new Store(id_structure, nom, ip, telephone, photoLink);
|
||||||
|
}
|
||||||
|
|
||||||
|
private StoreReplication mapResultSetToStoreReplication(ResultSet resultSet) throws SQLException {
|
||||||
|
boolean replicationOk = resultSet.getBoolean("replicationOk");
|
||||||
|
int pendingReplications = resultSet.getInt("pendingReplications");
|
||||||
|
String minReplicationDate = resultSet.getString("minReplicationDate");
|
||||||
|
String maxReplicationDate = resultSet.getString("maxReplicationDate");
|
||||||
|
|
||||||
|
return new StoreReplication(replicationOk, pendingReplications, minReplicationDate, maxReplicationDate);
|
||||||
|
}
|
||||||
|
|
||||||
|
private StoreTicket mapResultSetToStoreTicket(ResultSet resultSet) throws SQLException {
|
||||||
|
int totalTicketsInCaisse = resultSet.getInt("totalTicketsInCaisse");
|
||||||
|
int totalTicketsInBackOffice = resultSet.getInt("totalTicketsInBackOffice");
|
||||||
|
|
||||||
|
return new StoreTicket(totalTicketsInCaisse, totalTicketsInBackOffice);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,62 @@
|
||||||
|
package com.example.services.store;
|
||||||
|
|
||||||
|
public class Store {
|
||||||
|
private Integer id_structure;
|
||||||
|
private String nom;
|
||||||
|
private String ip;
|
||||||
|
private String telephone;
|
||||||
|
private String photoLink;
|
||||||
|
|
||||||
|
|
||||||
|
// Default constructor
|
||||||
|
public Store() {}
|
||||||
|
|
||||||
|
// Constructor with parameters
|
||||||
|
public Store(Integer id_structure, String nom, String ip, String telephone, String photoLink) {
|
||||||
|
this.id_structure = id_structure;
|
||||||
|
this.nom = nom;
|
||||||
|
this.ip = ip;
|
||||||
|
this.telephone = telephone;
|
||||||
|
this.photoLink = photoLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Integer getId_structure() {
|
||||||
|
return id_structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId_structure(Integer id_structure) {
|
||||||
|
this.id_structure = id_structure;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNom() {
|
||||||
|
return nom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setNom(String nom) {
|
||||||
|
this.nom = nom;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getIp() {
|
||||||
|
return ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setIp(String ip) {
|
||||||
|
this.ip = ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getTelephone() {
|
||||||
|
return telephone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTelephone(String telephone) {
|
||||||
|
this.telephone = telephone;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPhotoLink() {
|
||||||
|
return photoLink;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPhotoLink(String photoLink) {
|
||||||
|
this.photoLink = photoLink;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
package com.example.services.store;
|
||||||
|
|
||||||
|
public class StoreDetails {
|
||||||
|
private Store store;
|
||||||
|
private StoreReplication replication;
|
||||||
|
private StoreTicket tickets;
|
||||||
|
|
||||||
|
public StoreDetails() {
|
||||||
|
// Constructeur par défaut nécessaire pour la désérialisation JSON
|
||||||
|
}
|
||||||
|
|
||||||
|
public StoreDetails(Store store, StoreReplication replication, StoreTicket tickets) {
|
||||||
|
this.store = store;
|
||||||
|
this.replication = replication;
|
||||||
|
this.tickets = tickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Store getStore() {
|
||||||
|
return store;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setStore(Store store) {
|
||||||
|
this.store = store;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StoreReplication getReplication() {
|
||||||
|
return replication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReplication(StoreReplication replication) {
|
||||||
|
this.replication = replication;
|
||||||
|
}
|
||||||
|
|
||||||
|
public StoreTicket getTickets() {
|
||||||
|
return tickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTickets(StoreTicket tickets) {
|
||||||
|
this.tickets = tickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Ajoutez éventuellement d'autres méthodes ou personnalisez selon vos besoins
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -0,0 +1,55 @@
|
||||||
|
package com.example.services.store;
|
||||||
|
|
||||||
|
public class StoreReplication {
|
||||||
|
private boolean replicationOk; // Ajoutez les propriétés nécessaires pour la partie réplication
|
||||||
|
private int pendingReplications;
|
||||||
|
private String minReplicationDate;
|
||||||
|
private String maxReplicationDate;
|
||||||
|
|
||||||
|
// Constructeur par défaut
|
||||||
|
public StoreReplication() {
|
||||||
|
// Default constructor required for JSON deserialization
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructeur avec paramètres
|
||||||
|
public StoreReplication(boolean replicationOk, int pendingReplications, String minReplicationDate, String maxReplicationDate) {
|
||||||
|
this.replicationOk = replicationOk;
|
||||||
|
this.pendingReplications = pendingReplications;
|
||||||
|
this.minReplicationDate = minReplicationDate;
|
||||||
|
this.maxReplicationDate = maxReplicationDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters et setters
|
||||||
|
|
||||||
|
public boolean isReplicationOk() {
|
||||||
|
return replicationOk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReplicationOk(boolean replicationOk) {
|
||||||
|
this.replicationOk = replicationOk;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPendingReplications() {
|
||||||
|
return pendingReplications;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPendingReplications(int pendingReplications) {
|
||||||
|
this.pendingReplications = pendingReplications;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMinReplicationDate() {
|
||||||
|
return minReplicationDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMinReplicationDate(String minReplicationDate) {
|
||||||
|
this.minReplicationDate = minReplicationDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMaxReplicationDate() {
|
||||||
|
return maxReplicationDate;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxReplicationDate(String maxReplicationDate) {
|
||||||
|
this.maxReplicationDate = maxReplicationDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,35 @@
|
||||||
|
package com.example.services.store;
|
||||||
|
|
||||||
|
public class StoreTicket {
|
||||||
|
private int cashRegisterTickets; // Ajoutez les propriétés nécessaires pour la partie tickets
|
||||||
|
private int backOfficeTickets;
|
||||||
|
|
||||||
|
// Constructeur par défaut
|
||||||
|
public StoreTicket() {
|
||||||
|
// Default constructor required for JSON deserialization
|
||||||
|
}
|
||||||
|
|
||||||
|
// Constructeur avec paramètres
|
||||||
|
public StoreTicket(int cashRegisterTickets, int backOfficeTickets) {
|
||||||
|
this.cashRegisterTickets = cashRegisterTickets;
|
||||||
|
this.backOfficeTickets = backOfficeTickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Getters et setters
|
||||||
|
|
||||||
|
public int getCashRegisterTickets() {
|
||||||
|
return cashRegisterTickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCashRegisterTickets(int cashRegisterTickets) {
|
||||||
|
this.cashRegisterTickets = cashRegisterTickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getBackOfficeTickets() {
|
||||||
|
return backOfficeTickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBackOfficeTickets(int backOfficeTickets) {
|
||||||
|
this.backOfficeTickets = backOfficeTickets;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
# Development environment settings (dev)
|
||||||
|
dev.db.url=jdbc:oracle:thin:@v-aspd-b01-irdc.adic.lan:1521/MASPDI
|
||||||
|
dev.db.oai.password=base
|
||||||
|
dev.db.com02.password=B1Xto9pAbtBCOxuecG7W
|
||||||
|
|
||||||
|
# Pre-production environment settings (preprod)
|
||||||
|
preprod.db.url=jdbc:oracle:thin:@v-aspd-b01-ii-d.adic.lan:1521/IASPDI
|
||||||
|
preprod.db.oai.password=base
|
||||||
|
preprod.db.com02.password=B1Xto9pAbtBCOxuecG7W
|
||||||
|
|
||||||
|
# Production environment settings (prod)
|
||||||
|
prod.db.url=jdbc:oracle:thin:@prod-host:1521/PRODDB
|
||||||
|
prod.db.oai.password=base
|
||||||
|
prod.db.com02.password=com20
|
||||||
|
|
||||||
|
# XSTORE environment settings
|
||||||
|
xstore.db.url=jdbc:oracle:thin:@HOST:1521/XSTORE
|
||||||
|
xstore.db.dtv.password=dtv
|
||||||
|
xstore.db.repqueue.password=repqueue
|
||||||
|
|
@ -0,0 +1,2 @@
|
||||||
|
# Indicates the current environment (dev, preprod, prod, etc.).
|
||||||
|
environment=dev
|
||||||
|
|
@ -0,0 +1,12 @@
|
||||||
|
<configuration>
|
||||||
|
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<!-- encoders are assigned the type ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<root level="debug">
|
||||||
|
<appender-ref ref="STDOUT" />
|
||||||
|
</root>
|
||||||
|
</configuration>
|
||||||
Loading…
Reference in New Issue