Skip to content

gabindehu/ObjetDB

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ObjetDB - Base de Données Orientée Objet en Java

Java Build

Solution pour gérer des collections d'objets Java et les rendre persistantes avec une interface client-serveur

Un système de base de données Java permettant :

  • 🛠️ Des opérations CRUD (Create/Read/Update/Delete) sur des Objets Java via sockets TCP/IP
  • 🗃️ La sérialisation des données en JSON à l'aide de la bibliothèque Jackson
  • 👥 Accès concurrentiel sécurisé des données avec mécanismes de synchronisation (ReadWriteLock)
  • 📟 Interface CMD et GUI
  • 🔒 Cryptage simple des mots de passes (SHA-256)

Fonctionnalités

  • Permet aux utilisateurs de s'inscrire et de se connecter au serveur avec validation des identifiants et mots de passes.
  • Créer, consulter, ajouter et supprimer des objets via des commandes CRUD implémentées dans la librairie client.
  • Création dynamique de types d'objets en mode CMD et GUI
  • Persistance automatique en fichiers JSON sur le serveur
  • Gestion multi-utilisateurs avec threads
  • Logs détaillés sur la console serveur

Installation

Prérequis

  • Java 11+ (Oracle)
  • Port 8080 disponible côté serveur
# 1. Cloner le dépôt
git clone https://github.com/gabindehu/ObjetDB.git

# 2. Démarrer le serveur
java -jar out/artifacts/serveur/serveur.jar

# 4. Lancer l'invite de commande client clientCMD
java -jar out/artifacts/clientCMD/clientCMD.jar
# ou en mode GUI
java -jar out/artifacts/clientGUI/clientGUI.jar

Tests

Le projet inclut plusieurs classes de test pour valider les opérations CRUD :

  • TestVoiture.java : Teste les opérations sur les objets de type Voiture.
# Crée des objets de la classe Voiture et teste les opérations CRUD sur des listes d'objets de la classe
java -jar clientTestVoiture.jar localhost nomUtilisateur motDePasse
  • TestLivre.java : Teste les opérations sur les objets de type Livre.

Pour manipuler des objets Livre, vous devez d'abord les créer via l'interface en respectant strictement cette structure qui correspond à celle de la classe Livre dans TestLivre.java:

Étape 1 - Création via l'interface CMD

CREER Livre
> Nom attribut : nom (Type: String)
> Nom attribut : auteur (Type: String)
> Nom attribut : prix (Type: double)
> [Saisir 'fin' pour terminer] fin
## Ajouter ensuite les livres que vous voulez
--- Saisie des valeurs pour un nouvel objet ---
nom (String): "1984"
auteur (String): "George Orwell"
prix (double): 12.99
#... etc

Vous pouvez maintenant lancer TestLivre.java en lancant le jar qui inclut déja la librairie clientTestLivre.jar pour lire les objets sous forme d'objets Java :

# Lis les objets de la classe Livre enregistrés sur le serveur
java -jar clientTestLivre.jar localhost nomUtilisateur motDePasse

Utilisation de la Bibliothèque Client

Pour enregistrer vos propres objets sur le serveur, vous pouvez utiliser la bibliothèque client fournie avec ce projet. Voici comment importer et utiliser cette bibliothèque dans votre projet Java :

Ajouter la Bibliothèque Client à Votre Projet

  • Télécharger le JAR : Assurez-vous d'avoir le fichier JAR de la bibliothèque client ClientLibrairie.jar

  • Ajouter le JAR à Votre Projet :

    • Si vous utilisez un IDE comme IntelliJ IDEA ou Eclipse, ajoutez le fichier ClientLibrairie.jar à votre projet en tant que dépendance.
    • Si vous utilisez un système de build comme Maven ou Gradle, ajoutez le JAR à votre classpath ou configurez-le comme dépendance locale.

Utiliser la Méthode getConnection

La méthode getConnection de la bibliothèque client permet de se connecter au serveur et d'effectuer des opérations CRUD sur vos objets. Voici un exemple de code pour utiliser cette méthode :

import java.io.IOException;
import java.util.ArrayList;
import ClientLibrairie;

public class ExempleUtilisation {
    public static void main(String[] args) {
        try (ClientLibrairie client = ClientLibrairie.getConnection("localhost", "nomUtilisateur", "motDePasse")) {
            // Exemple : Lecture des objets de type "Voiture" depuis le serveur
            ArrayList<Voiture> listeVoitures = client.lire("Voiture", Voiture.class);
            System.out.println("Liste des voitures : \n" + listeVoitures);

            // Vous pouvez également créer, ajouter ou supprimer des objets ici
        } catch (IOException | ClassNotFoundException e) {
            System.err.println("Erreur : " + e.getMessage());
        }
    }
}

Ce projet a été réalisé dans le cadre du module "Principes des Systèmes d'Exploitation" de deuxième année de licence à l'UFR Sciences et Techniques de Dijon.

About

Ce projet Java gère des objets comme une base de données, avec enregistrement en JSON via Jackson.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages