parent
2319db2f71
commit
9951e101d0
@ -0,0 +1,237 @@
|
|||||||
|
@startuml
|
||||||
|
|
||||||
|
hide circle
|
||||||
|
allowmixing
|
||||||
|
skinparam classAttributeIconSize 0
|
||||||
|
skinparam classBackgroundColor #ffffb9
|
||||||
|
skinparam classBorderColor #800000
|
||||||
|
skinparam classArrowColor #800000
|
||||||
|
skinparam classFontColor black
|
||||||
|
skinparam classFontName Tahoma
|
||||||
|
|
||||||
|
class Main {
|
||||||
|
+start(Stage primaryStage): void
|
||||||
|
+main(String args): void
|
||||||
|
}
|
||||||
|
|
||||||
|
Application <|-- Main
|
||||||
|
class DiagramController {
|
||||||
|
+canvas: Pane
|
||||||
|
+entities: List
|
||||||
|
+relationships: List
|
||||||
|
+entityBlocks: List
|
||||||
|
+relationshipBlocks: List
|
||||||
|
+selectedEntity: Entity
|
||||||
|
+addEntity(String name, double x, double y): void
|
||||||
|
+addRelationship(Entity source, Entity target, String name): void
|
||||||
|
+updateRelationships(): void
|
||||||
|
+generateSQL(): void
|
||||||
|
+getSQLType(String type): String
|
||||||
|
+saveToJson(File file): void
|
||||||
|
+loadFromJson(File file): void
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramController --> Entity
|
||||||
|
class DiagramData {
|
||||||
|
+entities: List
|
||||||
|
+relationships: List
|
||||||
|
+getEntities(): List
|
||||||
|
+setEntities(List entities): void
|
||||||
|
+getRelationships(): List
|
||||||
|
+setRelationships(List relationships): void
|
||||||
|
}
|
||||||
|
|
||||||
|
class Attribute {
|
||||||
|
+name: String
|
||||||
|
+type: String
|
||||||
|
+isPrimaryKey: boolean
|
||||||
|
+isForeignKey: boolean
|
||||||
|
+isNullable: boolean
|
||||||
|
+getName(): String
|
||||||
|
+setName(String name): void
|
||||||
|
+getType(): String
|
||||||
|
+setType(String type): void
|
||||||
|
+isPrimaryKey(): boolean
|
||||||
|
+setPrimaryKey(boolean primaryKey): void
|
||||||
|
+isForeignKey(): boolean
|
||||||
|
+setForeignKey(boolean foreignKey): void
|
||||||
|
+isNullable(): boolean
|
||||||
|
+setNullable(boolean nullable): void
|
||||||
|
}
|
||||||
|
|
||||||
|
class Entity {
|
||||||
|
+name: String
|
||||||
|
+attributes: List
|
||||||
|
+x: double
|
||||||
|
+y: double
|
||||||
|
+autoGenerateId: boolean
|
||||||
|
+getName(): String
|
||||||
|
+setName(String name): void
|
||||||
|
+getAttributes(): List
|
||||||
|
+addAttribute(Attribute attribute): void
|
||||||
|
+getX(): double
|
||||||
|
+setX(double x): void
|
||||||
|
+getY(): double
|
||||||
|
+setY(double y): void
|
||||||
|
+isAutoGenerateId(): boolean
|
||||||
|
+setAutoGenerateId(boolean autoGenerateId): void
|
||||||
|
}
|
||||||
|
|
||||||
|
class Relationship {
|
||||||
|
+name: String
|
||||||
|
+sourceEntity: Entity
|
||||||
|
+targetEntity: Entity
|
||||||
|
+sourceCardinality: String
|
||||||
|
+targetCardinality: String
|
||||||
|
+x: double
|
||||||
|
+y: double
|
||||||
|
+getName(): String
|
||||||
|
+setName(String name): void
|
||||||
|
+getSourceEntity(): Entity
|
||||||
|
+setSourceEntity(Entity sourceEntity): void
|
||||||
|
+getTargetEntity(): Entity
|
||||||
|
+setTargetEntity(Entity targetEntity): void
|
||||||
|
+getSourceCardinality(): String
|
||||||
|
+setSourceCardinality(String sourceCardinality): void
|
||||||
|
+getTargetCardinality(): String
|
||||||
|
+setTargetCardinality(String targetCardinality): void
|
||||||
|
+getX(): double
|
||||||
|
+setX(double x): void
|
||||||
|
+getY(): double
|
||||||
|
+setY(double y): void
|
||||||
|
}
|
||||||
|
|
||||||
|
Relationship --> Entity
|
||||||
|
Relationship --> Entity
|
||||||
|
class SQLGenerationServiceImpl {
|
||||||
|
+generateCreateTableStatements(List entities): String
|
||||||
|
+generateForeignKeyStatements(List relationships): String
|
||||||
|
+generateCompleteScript(List entities, List relationships): String
|
||||||
|
+importFromSQL(String sqlScript): void
|
||||||
|
}
|
||||||
|
|
||||||
|
SQLGenerationService <|.. SQLGenerationServiceImpl
|
||||||
|
class DiagramServiceImpl {
|
||||||
|
+entities: List
|
||||||
|
+relationships: List
|
||||||
|
+fileStorageService: FileStorageService
|
||||||
|
+invalidationListeners: List
|
||||||
|
+changeListeners: List
|
||||||
|
+notifyListeners(): void
|
||||||
|
+addEntity(Entity entity): void
|
||||||
|
+removeEntity(Entity entity): void
|
||||||
|
+addRelationship(Relationship relationship): void
|
||||||
|
+removeRelationship(Relationship relationship): void
|
||||||
|
+getEntities(): List
|
||||||
|
+getRelationships(): List
|
||||||
|
+saveToFile(File file): void
|
||||||
|
+loadFromFile(File file): void
|
||||||
|
+addListener(InvalidationListener listener): void
|
||||||
|
+removeListener(InvalidationListener listener): void
|
||||||
|
+addChangeListener(Runnable listener): void
|
||||||
|
+removeChangeListener(Runnable listener): void
|
||||||
|
}
|
||||||
|
|
||||||
|
DiagramService <|.. DiagramServiceImpl
|
||||||
|
class JsonFileStorageService {
|
||||||
|
+objectMapper: ObjectMapper
|
||||||
|
+save(File file, List entities, List relationships): void
|
||||||
|
+load(File file): DiagramData
|
||||||
|
}
|
||||||
|
|
||||||
|
FileStorageService <|.. JsonFileStorageService
|
||||||
|
class SQLGenerationServiceImpl {
|
||||||
|
+diagramService: DiagramService
|
||||||
|
+generateCompleteScript(List entities, List relationships): String
|
||||||
|
+importFromSQL(String sqlScript): void
|
||||||
|
+generateCreateTableStatements(List entities): String
|
||||||
|
+generateForeignKeyStatements(List relationships): String
|
||||||
|
}
|
||||||
|
|
||||||
|
SQLGenerationService <|.. SQLGenerationServiceImpl
|
||||||
|
class SQLGenerator {
|
||||||
|
+generateCreateTables(List entities, List relationships): String
|
||||||
|
+generateTableSQL(Entity entity, boolean includeForeignKeys): String
|
||||||
|
+generateForeignKeySQL(Relationship rel): String
|
||||||
|
+getSQLType(String type): String
|
||||||
|
}
|
||||||
|
|
||||||
|
class DiagramView {
|
||||||
|
+diagramService: DiagramService
|
||||||
|
+entityBlocks: Map
|
||||||
|
+relationshipBlocks: Map
|
||||||
|
+addEntity(Entity entity): void
|
||||||
|
+addEntity(Entity entity, double x, double y): void
|
||||||
|
+addRelationship(Relationship relationship): void
|
||||||
|
+removeEntity(Entity entity): void
|
||||||
|
+removeRelationship(Relationship relationship): void
|
||||||
|
+updateRelationships(): void
|
||||||
|
+clear(): void
|
||||||
|
+getEntityAt(double x, double y): Entity
|
||||||
|
}
|
||||||
|
|
||||||
|
Pane <|-- DiagramView
|
||||||
|
class DialogManager {
|
||||||
|
+showAttributeDialog(): Optional
|
||||||
|
+showCardinalityDialog(String currentValue): Optional
|
||||||
|
}
|
||||||
|
|
||||||
|
class EntityBlock {
|
||||||
|
+entity: Entity
|
||||||
|
+nameLabel: Label
|
||||||
|
+attributesBox: VBox
|
||||||
|
+connectedRelationships: List
|
||||||
|
+refreshAttributes(): void
|
||||||
|
+showAddAttributeDialog(): void
|
||||||
|
+setupDragging(): void
|
||||||
|
+getEntity(): Entity
|
||||||
|
+addRelationship(RelationshipBlock relationship): void
|
||||||
|
+removeRelationship(RelationshipBlock relationship): void
|
||||||
|
+updateConnectedRelationships(): void
|
||||||
|
}
|
||||||
|
|
||||||
|
VBox <|-- EntityBlock
|
||||||
|
EntityBlock --> Entity
|
||||||
|
class Delta {
|
||||||
|
+x: double
|
||||||
|
+y: double
|
||||||
|
}
|
||||||
|
|
||||||
|
class MainView {
|
||||||
|
+root: BorderPane
|
||||||
|
+diagramView: DiagramView
|
||||||
|
+diagramService: DiagramService
|
||||||
|
+sqlService: SQLGenerationService
|
||||||
|
+sqlEditor: TextArea
|
||||||
|
+currentMode: String
|
||||||
|
+sourceEntity: Entity
|
||||||
|
+initializeComponents(): void
|
||||||
|
+setupSQLEditor(): VBox
|
||||||
|
+showNewEntityDialog(double x, double y): void
|
||||||
|
+showNewRelationshipDialog(Entity source, Entity target): void
|
||||||
|
+refreshDiagramView(): void
|
||||||
|
+updateSQLEditor(): void
|
||||||
|
+getRoot(): BorderPane
|
||||||
|
}
|
||||||
|
|
||||||
|
MainView --> DiagramView
|
||||||
|
MainView --> Entity
|
||||||
|
class RelationshipBlock {
|
||||||
|
+relationship: Relationship
|
||||||
|
+line: Line
|
||||||
|
+nameLabel: Label
|
||||||
|
+sourceCardLabel: Label
|
||||||
|
+targetCardLabel: Label
|
||||||
|
+sourceBlock: EntityBlock
|
||||||
|
+targetBlock: EntityBlock
|
||||||
|
+updatePosition(): void
|
||||||
|
+setupContextMenu(): void
|
||||||
|
+showCardinalityDialog(): void
|
||||||
|
+getRelationship(): Relationship
|
||||||
|
}
|
||||||
|
|
||||||
|
Group <|-- RelationshipBlock
|
||||||
|
RelationshipBlock --> Relationship
|
||||||
|
RelationshipBlock --> EntityBlock
|
||||||
|
RelationshipBlock --> EntityBlock
|
||||||
|
@enduml
|
Loading…
Reference in new issue