Accès au code source
L'archive distribuée contient l'exécutable et le code source. Ce dernier est également accessible via le SGV git :
git clone git://git.tuxfamily.org/gitroot/dbconcept/dbconcept.git
Intégration
DBConcept est conçu pour être intégré dans d'autres projets. Il est développé en langage Haxe et supporte ainsi de nombreuses plateformes d'exécution. De plus, la bibliothèque Javascript - en ligne peut être intégrée dans une page web (sa taille est inférieure à 150 kio).
DBConcept expose une API dont les principales fonctions sont :
- Analyse du code source et génération du diagramme :
source.Mocodo.load(texteSource : String) : Diagram
- Génération du modèle logique de données :
transform.DiagramToMLD.transform(dia : Diagram) : MLD
- Initialisation des attributs de navigation, des constructeurs et des accesseurs
des classes du diagramme :
transform.DiagramToUML.transform(dia : Diagram)
Cette étape est un prérequis pour le tracé des schémas UML et la génération de code (cf concepts de la programmation orientée objets).
Les fonctions de génération des schémas sont les suivantes :
- Un objet de la classe
MLD
dispose de la méthodetoString(auFormatUniv : Bool)
qui renvoie le modèle relationnel au format Éducation Nationale ou Universitaire. schema.MCDToSVG.generateSVG(dia : Diagram) : Xml
L'objet de la classeXml
obtenu (de type SVG) dispose de la méthodetoString()
.schema.MLDToSVG.generateSVG(mld : MLD, avecTypes : Bool) : Xml
schema.UMLToSVG.generateSVG(dia : Diagram, deClasse : Bool, voirPrive : Bool) : Xml
Un diagramme de domaine est obtenu avecdeClasse=false
etvoirPrive=true
.
Les fonctions de génération de code SQL sont :
database.DBMariaDB.generateSQL(mld : MLD) : String
database.DBPostgreSQL.generateSQL(mld : MLD) : String
database.DBSqlite.generateSQL(mld : MLD) : String
Les fonctions de génération de code (divers langages de programmation) sont :
code.HaxeCode.generate(diagram : Diagram) : StringMap<String>
L'objet retourné a une propriétéh
qui est un tableau associatif / dictionnaire, dont les clés sont les noms de fichiers et les valeurs leurs contenus.code.JavaCode.generate(diagram : Diagram) : StringMap<String>
code.PythonCode.generate(diagram : Diagram) : StringMap<String>
Informations techniques
Prérequis pour la compilation
L'application web (DBConcept Online), distincte de DBConcept est développée en HTML, CSS et Javascript, sans utilisation de cadriciel.
Le SDK Haxe, version 4.1 au minimum est requis pour compiler DBConcept, quelle que soit la cible.
-
C++ :
- bibliothèque additionnelle Haxe "hxcpp" :
haxelib install hxcpp
- sous Linux : compilateur GCC, sous Windows : compilateur MSVC
- bibliothèque additionnelle Haxe "hxcpp" :
-
HashLink/C :
- bibliothèque additionnelle Haxe "hashlink" :
haxelib install hashlink
- sous Linux : compilateur GCC, sous Windows : compilateur MSVC
- machine virtuelle HashLink
- bibliothèque additionnelle Haxe "hashlink" :
-
Java :
- bibliothèque additionnelle Haxe "hxjava" :
haxelib install hxjava
- OpenJDK
- bibliothèque additionnelle Haxe "hxjava" :
-
Neko : /
Note : Neko ne supporte pas la nouvelle APIUnicodeString
. - Node.js : bibliothèque additionnelle Haxe "hxnodejs" :
haxelib install hxnodejs
Note : L'API d'accès aux bases de données diffère de celle de la bibliothèque standard (non implémentée en Node.js). Les fonctionnalités de génération et de rétroconception de bases de données sont donc désactivées. - PHP : /
- Python : /
Note : L'API d'accès aux bases de données n'est pas implémentée dans la bibliothèque standard pour le Python. Les fonctionnalités de génération et de rétroconception de bases de données sont donc désactivées. - Web / Javascript : /
Prérequis pour le contrôle de la qualité
- Tests unitaires : bibliothèque additionnelle Haxe "utest" :
haxelib install utest
- Qualité du code : bibliothèque additionnelle Haxe "checkstyle" :
haxelib install checkstyle
Construction et installation
La construction et l'installation utilise un fichier Makefile ;
make / make cpp - construit l'exécutable out/cpp/dbconcept
make all - compile le programme pour toutes les plateformes
make java - construit l'archive out/java/dbconcept.jar
make neko - génère out/neko/dbconcept
make web - génère out/web/*
make install - installe l'exécutable out/cpp/dbconcept (les paramètres "DESTDIR" et "PREFIX" sont supportés)
make uninstall
make clean - efface les fichiers *générés*
make test - lance les tests unitaires
make checkstyle - vérifie la qualité du code
Il reste possible de construire le programme sans utiliser le fichier Makefile, par exemple en Java, avec la commande :
haxe -cp src -main DBConcept -java-lib java-lib/*.jar -java out/java
Les cibles HashLink/C, Node.js et Python sont pour le moment désactivées en raison d'incompatibilités dans le support des bases de données.
Prérequis pour l'exécution
- C++ : /
- HashLink/C : machine virtuelle HashLink
- Java : JRE + pilote(s) JDBC
- Neko : machine virtuelle Neko
- Node.js : interptéteur Node.js
- PHP : interpréteur PHP
- Python : interpréteur Python
- Web / Javascript : navigateur web (Chromium, Firefox, ...)
Organisation des fichiers
-
Le code source du programme est dans le dossier
src
:- Le fichier
DBConcept.hx
est le point d'entrée du programme en ligne de commande. -
Le sous-dossier (paquetage)
model
contient les classes métier :- communes :
Obj
etField
; - modèle relationnel :
MLD
,Relation
,ForeignKey
etMergedFK
; - MCD et UML :
Diagram
,Set
(entité et classe),Association
,Link
(patte d'association),Method
;
- communes :
-
Le sous-dossier
source
contient la classe utilitaireMocodo
d'import-export de description textuelle. - Le sous-dossier
schema
contient les classes utilitaires permettant de générer les diagrammes SVG ; les classesSvg
etLine
sont communes. - Le sous-dossier
database
contient les classes utilitaires pour la génération (ou la rétroconception) de bases de données. - Le sous-dossier
code
contient les classes utilitaires pour la génération de code. - Le sous-dossier
graph
contient les classes (et adaptateurs) pour le positionnement automatique des objets d'un graphe.
- Le fichier
-
Le dossier
web
contient l'interface web de l'application en ligne. -
Le dossier
web-lib
contient les bibliothèques Javascript additionnelles : -
Le dossier
tests
contient les classes utiles aux tests unitaires ; ils sont écrits en utilisant la bibliothèque UTest. - Le fichier
Makefile
contient les recettes (construction, tests, ...),sitegen.json
la configuration pour la génération du site web,checkstyle.json
le paramétrage pour le contrôle de qualité du code etbuild.hxml
le paramétrage de Visual Studio Code. - Le dossier
doc
contient la documentation (utilisateur, développeurs, journal des changements, licence et exemples). - Le dossier
java-lib
contient les connecteurs JDBC (bibliothèques externes), etjs-lib
les bibliothèques Javascript externes.