From 39b287f37e611e317528f7835c939ca349ab9345 Mon Sep 17 00:00:00 2001 From: Dmitry Dorofeev Date: Tue, 29 Jan 2019 23:59:50 +0300 Subject: [PATCH 01/22] Added Exlusion constraint as described at https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-EXCLUSION --- .../instance/isExclusionConstraint.st | 3 +++ .../properties.json | 3 +++ .../instance/asFmxSQLEntityIn.withMappingdict..st | 9 +++++++++ .../SqlExclusionConstraint.extension/properties.json | 3 +++ .../FmxSQLExclusionConstraint.class/README.md | 10 ++++++++++ .../class/annotation.st | 7 +++++++ .../class/generatedSlotNames.st | 5 +++++ .../class/generatedTraitNames.st | 4 ++++ .../class/requirements.st | 5 +++++ .../FmxSQLExclusionConstraint.class/properties.json | 11 +++++++++++ 10 files changed, 60 insertions(+) create mode 100644 repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/instance/isExclusionConstraint.st create mode 100644 repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/properties.json create mode 100644 repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/instance/asFmxSQLEntityIn.withMappingdict..st create mode 100644 repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/properties.json create mode 100644 repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/README.md create mode 100644 repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/annotation.st create mode 100644 repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedSlotNames.st create mode 100644 repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedTraitNames.st create mode 100644 repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/requirements.st create mode 100644 repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/properties.json diff --git a/repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/instance/isExclusionConstraint.st b/repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/instance/isExclusionConstraint.st new file mode 100644 index 00000000..1e44fe7f --- /dev/null +++ b/repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/instance/isExclusionConstraint.st @@ -0,0 +1,3 @@ +*FamixNGSQL-Extensions +isExclusionConstraint + ^ true \ No newline at end of file diff --git a/repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/properties.json b/repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/properties.json new file mode 100644 index 00000000..869ced2b --- /dev/null +++ b/repository/FamixNGSQL-Extensions.package/FmxSQLExclusionConstraint.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "FmxSQLExclusionConstraint" +} \ No newline at end of file diff --git a/repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/instance/asFmxSQLEntityIn.withMappingdict..st b/repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/instance/asFmxSQLEntityIn.withMappingdict..st new file mode 100644 index 00000000..caa4c4e2 --- /dev/null +++ b/repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/instance/asFmxSQLEntityIn.withMappingdict..st @@ -0,0 +1,9 @@ +*FamixNGSQL-Importer +asFmxSQLEntityIn: aMooseModel withMappingdict: pgToFamixEntities + ^ FmxSQLExclusionConstraint new + name: self name; + columns: (self constrainedColumns collect: [ :pgColumn | pgToFamixEntities at: pgColumn ]); + table: (pgToFamixEntities at: self constrainedColumns anyOne) columnsContainer; + source: self code; + mooseModel: aMooseModel; + yourself \ No newline at end of file diff --git a/repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/properties.json b/repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/properties.json new file mode 100644 index 00000000..492b7000 --- /dev/null +++ b/repository/FamixNGSQL-Importer.package/SqlExclusionConstraint.extension/properties.json @@ -0,0 +1,3 @@ +{ + "name" : "SqlExclusionConstraint" +} \ No newline at end of file diff --git a/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/README.md b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/README.md new file mode 100644 index 00000000..6aa1925f --- /dev/null +++ b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/README.md @@ -0,0 +1,10 @@ +I represent a EXCLUDE constraint as defined in SQL standard. + +Example: + +ALTER TABLE vcp.attachments +ADD CONSTRAINT unique_vcp_attachment_task_constr +EXCLUDE USING gist (dataset_id WITH =, metric_id WITH =, location_id WITH =, + period_type WITH =, user_id WITH =, assignee_id WITH =, + tstzrange(start_time, expiration_time, '()') WITH &&) +WHERE (attachment_type = 'vcp-task'); \ No newline at end of file diff --git a/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/annotation.st b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/annotation.st new file mode 100644 index 00000000..24611ee3 --- /dev/null +++ b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/annotation.st @@ -0,0 +1,7 @@ +meta +annotation + + + + + ^self \ No newline at end of file diff --git a/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedSlotNames.st b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedSlotNames.st new file mode 100644 index 00000000..0dd42f4a --- /dev/null +++ b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedSlotNames.st @@ -0,0 +1,5 @@ +generator +generatedSlotNames + + 'FmxSQLExclusionConstraint class>>#generatedSlotNames'. + ^ #() \ No newline at end of file diff --git a/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedTraitNames.st b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedTraitNames.st new file mode 100644 index 00000000..6d7d0cbf --- /dev/null +++ b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/generatedTraitNames.st @@ -0,0 +1,4 @@ +generator +generatedTraitNames + + ^ #() \ No newline at end of file diff --git a/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/requirements.st b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/requirements.st new file mode 100644 index 00000000..49f56ca8 --- /dev/null +++ b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/class/requirements.st @@ -0,0 +1,5 @@ +meta +requirements + + + ^ { } \ No newline at end of file diff --git a/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/properties.json b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/properties.json new file mode 100644 index 00000000..25f31f51 --- /dev/null +++ b/repository/FamixNGSQL.package/FmxSQLExclusionConstraint.class/properties.json @@ -0,0 +1,11 @@ +{ + "commentStamp" : "DmitryDorofeev 1/29/2019 23:51", + "super" : "FmxSQLConstraint", + "category" : "FamixNGSQL-Entities", + "classinstvars" : [ ], + "pools" : [ ], + "classvars" : [ ], + "instvars" : [ ], + "name" : "FmxSQLExclusionConstraint", + "type" : "normal" +} \ No newline at end of file From 325f6b748064007ad468735bd314d9302948b61c Mon Sep 17 00:00:00 2001 From: Dmitry Dorofeev Date: Sun, 21 Feb 2021 16:17:03 +0300 Subject: [PATCH 02/22] Added ExclusionConstraint to the MetaModel generation process. --- ...mxSQLStructuralMetamodelGenerator.class.st | 15 +++++++++++- src/FamixNGSQL/FmxSQLEntity.class.st | 7 ++++++ .../FmxSQLExclusionConstraint.class.st | 24 +++++++++++++++++++ src/FamixNGSQL/FmxSQLTable.class.st | 5 ++++ 4 files changed, 50 insertions(+), 1 deletion(-) create mode 100644 src/FamixNGSQL/FmxSQLExclusionConstraint.class.st diff --git a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st index cc60f926..03e366c3 100644 --- a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st +++ b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st @@ -24,7 +24,8 @@ Class { 'tWithColumnReference', 'tWithTableReference', 'namespaceReference', - 'tWithNamespaceReference' + 'tWithNamespaceReference', + 'exclusionConstraint' ], #category : #FAMIXNGSQLMetamodelGenerator } @@ -107,6 +108,11 @@ FmxSQLStructuralMetamodelGenerator >> defineStructuralEntities [ newClassNamed: #CheckConstraint comment: self checkConstraintComment. checkConstraint withTesting. + exclusionConstraint := builder + newClassNamed: #ExclusionConstraint + comment: self exclusionConstraintComment. + exclusionConstraint withTesting. + primaryKeyConstraint := builder newClassNamed: #PrimaryKeyConstraint comment: self primaryKeyConstraintComment. @@ -181,6 +187,8 @@ FmxSQLStructuralMetamodelGenerator >> defineStructuralHierarchy [ type --|> structuralEntity. type --|> tAbstractType. + checkConstraint --|> constraint. + exclusionConstraint --|> constraint. primaryKeyConstraint --|> constraint. foreignKeyConstraint --|> constraint. notNullConstraint --|> constraint. @@ -261,6 +269,11 @@ FmxSQLStructuralMetamodelGenerator >> entityInNamespaceComment [ ^ 'I am a trait that any entity which can be part of a namespace use.' ] +{ #category : #'comments - SQL' } +FmxSQLStructuralMetamodelGenerator >> exclusionConstraintComment [ + ^ 'I represent an EXCLUSION constraint as defined in SQL standard.' +] + { #category : #'comments - SQL' } FmxSQLStructuralMetamodelGenerator >> foreignKeyConstraintComment [ ^ 'I represent a FOREIGN KEY constraint as defined in SQL standard.' diff --git a/src/FamixNGSQL/FmxSQLEntity.class.st b/src/FamixNGSQL/FmxSQLEntity.class.st index 9aaf79e4..48ab4cd2 100644 --- a/src/FamixNGSQL/FmxSQLEntity.class.st +++ b/src/FamixNGSQL/FmxSQLEntity.class.st @@ -102,6 +102,13 @@ FmxSQLEntity >> isExceptClause [ ^ false ] +{ #category : #testing } +FmxSQLEntity >> isExclusionConstraint [ + + + ^ false +] + { #category : #testing } FmxSQLEntity >> isForeignKey [ self deprecated: 'Use #isForeignKeyConstraint instead.' transformWith: '`@receiver isForeignKey' -> '`@receiver isForeignKeyConstraint'. diff --git a/src/FamixNGSQL/FmxSQLExclusionConstraint.class.st b/src/FamixNGSQL/FmxSQLExclusionConstraint.class.st new file mode 100644 index 00000000..cfbe0057 --- /dev/null +++ b/src/FamixNGSQL/FmxSQLExclusionConstraint.class.st @@ -0,0 +1,24 @@ +" +I represent a EXCLUSION constraint as defined in SQL standard. +" +Class { + #name : #FmxSQLExclusionConstraint, + #superclass : #FmxSQLConstraint, + #category : #'FamixNGSQL-Entities' +} + +{ #category : #meta } +FmxSQLExclusionConstraint class >> annotation [ + + + + + ^self +] + +{ #category : #testing } +FmxSQLExclusionConstraint >> isExclusionConstraint [ + + + ^ true +] diff --git a/src/FamixNGSQL/FmxSQLTable.class.st b/src/FamixNGSQL/FmxSQLTable.class.st index eff41a86..1b8a1bd2 100644 --- a/src/FamixNGSQL/FmxSQLTable.class.st +++ b/src/FamixNGSQL/FmxSQLTable.class.st @@ -87,6 +87,11 @@ FmxSQLTable >> constraintsSatisfying: aBlock [ ^ self constraints select: aBlock ] +{ #category : #accessing } +FmxSQLTable >> exclusionConstraints [ + ^ self constraintsSatisfying: [ :c | c class = FmxSQLExclusionConstraint ] +] + { #category : #accessing } FmxSQLTable >> foreignKeyConstraints [ ^ self constraintsSatisfying: [ :c | c class = FmxSQLForeignKeyConstraint ] From 7af7700305360d03f4af5292c3f73418979ec434 Mon Sep 17 00:00:00 2001 From: Dmitriy Dorofeev Date: Sun, 21 Feb 2021 16:20:42 +0300 Subject: [PATCH 03/22] Fix the update metamodel help text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d450eebe..c1bbe125 100644 --- a/README.md +++ b/README.md @@ -19,4 +19,4 @@ meta-model. If you modified the generator and want to re-generate the meta-model, you have to: 1. Ensure that no more instances of the meta-model exist in the system. -2. Run `FmxNewSQLMetamodelGenerator class>>#regenerateMetaModel` +2. Run `FmxSQLMetamodelGenerator generate.` From 2d12fc5efcf24b6a36b2cb76a29a5a2ca3c492e7 Mon Sep 17 00:00:00 2001 From: Dmitriy Dorofeev Date: Mon, 30 May 2022 00:08:28 +0300 Subject: [PATCH 04/22] Update BaselineOfFAMIXNGSQL.class.st --- src/BaselineOfFAMIXNGSQL/BaselineOfFAMIXNGSQL.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BaselineOfFAMIXNGSQL/BaselineOfFAMIXNGSQL.class.st b/src/BaselineOfFAMIXNGSQL/BaselineOfFAMIXNGSQL.class.st index af320210..f0ca8911 100644 --- a/src/BaselineOfFAMIXNGSQL/BaselineOfFAMIXNGSQL.class.st +++ b/src/BaselineOfFAMIXNGSQL/BaselineOfFAMIXNGSQL.class.st @@ -25,7 +25,7 @@ BaselineOfFAMIXNGSQL >> baseline: spec [ spec baseline: 'Famix' with: [ spec - repository: 'github://jecisc/Famix:v4.x.x/src'; + repository: 'github://moosetechnology/Famix:development/src'; loads: #('Core' 'Basic') ]. spec baseline: 'SymbolResolver' From af698ac68135b8bd318bec48549d53e35054c32e Mon Sep 17 00:00:00 2001 From: Dmitriy Dorofeev Date: Mon, 30 May 2022 01:17:09 +0300 Subject: [PATCH 05/22] Reflect Moose changes for TNamespaceEntity -> TNamedEntity --- .../FmxSQLStructuralMetamodelGenerator.class.st | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st index 03e366c3..937fc0af 100644 --- a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st +++ b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLStructuralMetamodelGenerator.class.st @@ -168,7 +168,7 @@ FmxSQLStructuralMetamodelGenerator >> defineStructuralEntitiesRelations [ FmxSQLStructuralMetamodelGenerator >> defineStructuralHierarchy [ "Abstract entities inheritance relations." structuralEntity --|> namedEntity. - structuralEntity --|> #TNamespaceEntity. + structuralEntity --|> #TNamedEntity. constraint --|> structuralEntity. constraint --|> tWithColumnReference. From 89be4fb394a0daf3f08dd249d42cf1cd8b6faa55 Mon Sep 17 00:00:00 2001 From: Dmitry Dorofeev Date: Mon, 30 May 2022 01:34:20 +0300 Subject: [PATCH 06/22] fix trait TNamespaceEntity --- .../FmxSQLMetamodelGenerator.class.st | 6 +++--- src/FamixNGSQL/FmxSQLStoredProcedure.class.st | 4 ++-- src/FamixNGSQL/FmxSQLStructuralEntity.class.st | 4 ++-- src/FamixNGSQL/FmxSQLTrigger.class.st | 4 ++-- src/FamixNGSQL/FmxSQLView.class.st | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st index 92662a2c..e340cf12 100644 --- a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st +++ b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st @@ -309,7 +309,7 @@ FmxSQLMetamodelGenerator >> defineBehaviouralHierarchy [ view --|> tAbstractType. view --|> tColumnsContainer. view --|> tQueryContainer. - view --|> #TNamespaceEntity. + view --|> #TNamedEntity. view --|> #TWithImmediateSource. view --|> namedEntity. @@ -321,7 +321,7 @@ FmxSQLMetamodelGenerator >> defineBehaviouralHierarchy [ storedProcedure --|> behaviouralEntity. storedProcedure --|> tQueryContainer. storedProcedure --|> namedEntity. - storedProcedure--|> #TNamespaceEntity. + storedProcedure--|> #TNamedEntity. storedProcedure --|> #TWithReferences. storedProcedure --|> #TInvocable. storedProcedure --|> #TWithInvocations. @@ -341,7 +341,7 @@ FmxSQLMetamodelGenerator >> defineBehaviouralHierarchy [ trigger --|> namedEntity. trigger --|> behaviouralEntity. - trigger --|> #TNamespaceEntity. + trigger --|> #TNamedEntity. selectQuery --|> crudQuery. selectQuery --|> tDefiningDerivedTables. diff --git a/src/FamixNGSQL/FmxSQLStoredProcedure.class.st b/src/FamixNGSQL/FmxSQLStoredProcedure.class.st index ea981f4d..2c711242 100644 --- a/src/FamixNGSQL/FmxSQLStoredProcedure.class.st +++ b/src/FamixNGSQL/FmxSQLStoredProcedure.class.st @@ -4,8 +4,8 @@ I am a stored procedure. That is to say, a function that is defined inside the d Class { #name : #FmxSQLStoredProcedure, #superclass : #FmxSQLNamedEntity, - #traits : 'FamixTInvocable + FamixTNamespaceEntity + FamixTWithAccesses + FamixTWithImmediateSource + FamixTWithInvocations + FamixTWithLocalVariables + FamixTWithParameters + FamixTWithReferences + FmxSQLBehaviouralEntity + FmxSQLTQueryContainer + FmxSQLTWithAlias + FmxSQLTWithColumnReference + FmxSQLTWithCursor + FmxSQLTWithCursorReference + FmxSQLTWithNamespaceReference + FmxSQLTWithTableReference + FmxSQLTWithViewReference', - #classTraits : 'FamixTInvocable classTrait + FamixTNamespaceEntity classTrait + FamixTWithAccesses classTrait + FamixTWithImmediateSource classTrait + FamixTWithInvocations classTrait + FamixTWithLocalVariables classTrait + FamixTWithParameters classTrait + FamixTWithReferences classTrait + FmxSQLBehaviouralEntity classTrait + FmxSQLTQueryContainer classTrait + FmxSQLTWithAlias classTrait + FmxSQLTWithColumnReference classTrait + FmxSQLTWithCursor classTrait + FmxSQLTWithCursorReference classTrait + FmxSQLTWithNamespaceReference classTrait + FmxSQLTWithTableReference classTrait + FmxSQLTWithViewReference classTrait', + #traits : 'FamixTInvocable + FamixTNamedEntity + FamixTWithAccesses + FamixTWithImmediateSource + FamixTWithInvocations + FamixTWithLocalVariables + FamixTWithParameters + FamixTWithReferences + FmxSQLBehaviouralEntity + FmxSQLTQueryContainer + FmxSQLTWithAlias + FmxSQLTWithColumnReference + FmxSQLTWithCursor + FmxSQLTWithCursorReference + FmxSQLTWithNamespaceReference + FmxSQLTWithTableReference + FmxSQLTWithViewReference', + #classTraits : 'FamixTInvocable classTrait + FamixTNamedEntity classTrait + FamixTWithAccesses classTrait + FamixTWithImmediateSource classTrait + FamixTWithInvocations classTrait + FamixTWithLocalVariables classTrait + FamixTWithParameters classTrait + FamixTWithReferences classTrait + FmxSQLBehaviouralEntity classTrait + FmxSQLTQueryContainer classTrait + FmxSQLTWithAlias classTrait + FmxSQLTWithColumnReference classTrait + FmxSQLTWithCursor classTrait + FmxSQLTWithCursorReference classTrait + FmxSQLTWithNamespaceReference classTrait + FmxSQLTWithTableReference classTrait + FmxSQLTWithViewReference classTrait', #instVars : [ '#checkConstraintsCalling => FMMany type: #FmxSQLCheckConstraint opposite: #storedProceduresCalled', '#returnType => FMOne type: #FmxSQLAbstractType opposite: #storedProceduresReturning' diff --git a/src/FamixNGSQL/FmxSQLStructuralEntity.class.st b/src/FamixNGSQL/FmxSQLStructuralEntity.class.st index aa7be260..2fadd361 100644 --- a/src/FamixNGSQL/FmxSQLStructuralEntity.class.st +++ b/src/FamixNGSQL/FmxSQLStructuralEntity.class.st @@ -4,8 +4,8 @@ I am an abstract superclass for structural entities. A structural entity is an e Class { #name : #FmxSQLStructuralEntity, #superclass : #FmxSQLNamedEntity, - #traits : 'FamixTNamespaceEntity', - #classTraits : 'FamixTNamespaceEntity classTrait', + #traits : 'FamixTNamedEntity', + #classTraits : 'FamixTNamedEntity classTrait', #category : 'FamixNGSQL-Entities' } diff --git a/src/FamixNGSQL/FmxSQLTrigger.class.st b/src/FamixNGSQL/FmxSQLTrigger.class.st index c42e2732..4be74326 100644 --- a/src/FamixNGSQL/FmxSQLTrigger.class.st +++ b/src/FamixNGSQL/FmxSQLTrigger.class.st @@ -4,8 +4,8 @@ I am a trigger. A trigger allows to define actions to performs when a specific e Class { #name : #FmxSQLTrigger, #superclass : #FmxSQLNamedEntity, - #traits : 'FamixTNamespaceEntity + FmxSQLBehaviouralEntity', - #classTraits : 'FamixTNamespaceEntity classTrait + FmxSQLBehaviouralEntity classTrait', + #traits : 'FamixTNamedEntity + FmxSQLBehaviouralEntity', + #classTraits : 'FamixTNamedEntity classTrait + FmxSQLBehaviouralEntity classTrait', #instVars : [ '#firingAction => FMProperty', '#when => FMProperty', diff --git a/src/FamixNGSQL/FmxSQLView.class.st b/src/FamixNGSQL/FmxSQLView.class.st index 7556c9b5..2e8a717a 100644 --- a/src/FamixNGSQL/FmxSQLView.class.st +++ b/src/FamixNGSQL/FmxSQLView.class.st @@ -4,8 +4,8 @@ I am a view. I can be used transparently as a table but I do not hold data. My d Class { #name : #FmxSQLView, #superclass : #FmxSQLNamedEntity, - #traits : 'FamixTNamespaceEntity + FamixTWithImmediateSource + FmxSQLAbstractType + FmxSQLBehaviouralEntity + FmxSQLColumnsContainer + FmxSQLTQueryContainer', - #classTraits : 'FamixTNamespaceEntity classTrait + FamixTWithImmediateSource classTrait + FmxSQLAbstractType classTrait + FmxSQLBehaviouralEntity classTrait + FmxSQLColumnsContainer classTrait + FmxSQLTQueryContainer classTrait', + #traits : 'FamixTNamedEntity + FamixTWithImmediateSource + FmxSQLAbstractType + FmxSQLBehaviouralEntity + FmxSQLColumnsContainer + FmxSQLTQueryContainer', + #classTraits : 'FamixTNamedEntity classTrait + FamixTWithImmediateSource classTrait + FmxSQLAbstractType classTrait + FmxSQLBehaviouralEntity classTrait + FmxSQLColumnsContainer classTrait + FmxSQLTQueryContainer classTrait', #instVars : [ '#query => FMOne type: #FmxSQLSelectQuery opposite: #viewDefining', '#references => FMMany type: #FmxSQLViewReference opposite: #view' From 83d53793d4509965f47d4c12def300a55fd26750 Mon Sep 17 00:00:00 2001 From: Dmitry Dorofeev Date: Thu, 27 Jul 2023 23:42:12 +0300 Subject: [PATCH 07/22] Model is generated under Pharo 10, but there are some issues with traits. Also, we can not import data into model, due to wrong things with #TNamespace etc... --- .../FmxSQLMetamodelGenerator.class.st | 75 +++++----- ...mxSQLStructuralMetamodelGenerator.class.st | 16 ++- src/FamixNGSQL/FmxSQLAbstractType.trait.st | 34 ++++- src/FamixNGSQL/FmxSQLAlias.class.st | 24 +--- src/FamixNGSQL/FmxSQLAliasAccess.class.st | 2 +- src/FamixNGSQL/FmxSQLAssociation.class.st | 8 +- .../FmxSQLBehaviouralEntity.trait.st | 2 +- src/FamixNGSQL/FmxSQLCRUDQuery.class.st | 56 ++------ src/FamixNGSQL/FmxSQLCheckConstraint.class.st | 16 ++- src/FamixNGSQL/FmxSQLClause.class.st | 44 +----- src/FamixNGSQL/FmxSQLColumn.class.st | 56 +------- src/FamixNGSQL/FmxSQLColumnAlias.class.st | 28 +--- .../FmxSQLColumnAliasAccess.class.st | 2 +- src/FamixNGSQL/FmxSQLColumnReference.class.st | 45 +----- .../FmxSQLColumnsContainer.trait.st | 15 +- .../FmxSQLColumnsContainerAlias.class.st | 12 +- ...FmxSQLColumnsContainerAliasAccess.class.st | 2 +- src/FamixNGSQL/FmxSQLComment.class.st | 4 +- src/FamixNGSQL/FmxSQLConstraint.class.st | 30 +--- src/FamixNGSQL/FmxSQLCursor.class.st | 32 +---- src/FamixNGSQL/FmxSQLCursorParameter.class.st | 38 +---- .../FmxSQLCursorParameterAccess.class.st | 2 +- src/FamixNGSQL/FmxSQLCursorReference.class.st | 8 +- src/FamixNGSQL/FmxSQLDeleteQuery.class.st | 4 +- src/FamixNGSQL/FmxSQLDerivedTable.class.st | 43 +----- .../FmxSQLDerivedTableReference.class.st | 4 +- src/FamixNGSQL/FmxSQLEntity.class.st | 23 +--- .../FmxSQLEntitySourceAnchor.class.st | 31 +---- src/FamixNGSQL/FmxSQLExceptClause.class.st | 2 +- .../FmxSQLExclusionConstraint.class.st | 4 +- .../FmxSQLForeignKeyConstraint.class.st | 46 +------ src/FamixNGSQL/FmxSQLForeignTable.class.st | 2 +- src/FamixNGSQL/FmxSQLFromClause.class.st | 6 +- src/FamixNGSQL/FmxSQLGroupByClause.class.st | 11 +- src/FamixNGSQL/FmxSQLHavingClause.class.st | 6 +- src/FamixNGSQL/FmxSQLInsertQuery.class.st | 4 +- src/FamixNGSQL/FmxSQLIntersectClause.class.st | 2 +- src/FamixNGSQL/FmxSQLIntoClause.class.st | 2 +- src/FamixNGSQL/FmxSQLJoinClause.class.st | 2 +- src/FamixNGSQL/FmxSQLLimitClause.class.st | 2 +- src/FamixNGSQL/FmxSQLLocalVariable.class.st | 38 +---- .../FmxSQLLocalVariableAccess.class.st | 3 +- src/FamixNGSQL/FmxSQLModel.class.st | 18 +++ src/FamixNGSQL/FmxSQLMooseModel.class.st | 17 --- src/FamixNGSQL/FmxSQLNamedEntity.class.st | 10 +- src/FamixNGSQL/FmxSQLNamespace.class.st | 10 +- .../FmxSQLNamespaceReference.class.st | 8 +- .../FmxSQLNewLocalVariable.class.st | 4 +- src/FamixNGSQL/FmxSQLNoSourceAnchor.class.st | 25 ---- .../FmxSQLNotNullConstraint.class.st | 14 +- .../FmxSQLOldLocalVariable.class.st | 4 +- .../FmxSQLOnConflictClause.class.st | 2 +- src/FamixNGSQL/FmxSQLOrderByClause.class.st | 11 +- src/FamixNGSQL/FmxSQLParameter.class.st | 43 +----- src/FamixNGSQL/FmxSQLParameterAccess.class.st | 9 +- .../FmxSQLPrimaryKeyConstraint.class.st | 16 +-- .../FmxSQLQualifiedReference.class.st | 10 +- .../FmxSQLRecordLocalVariable.class.st | 5 +- src/FamixNGSQL/FmxSQLReference.class.st | 87 +----------- src/FamixNGSQL/FmxSQLReferencesGroup.class.st | 20 ++- .../FmxSQLReferencesGroupReference.class.st | 41 +----- src/FamixNGSQL/FmxSQLReturningClause.class.st | 13 +- src/FamixNGSQL/FmxSQLSelectClause.class.st | 11 +- src/FamixNGSQL/FmxSQLSelectQuery.class.st | 20 +-- src/FamixNGSQL/FmxSQLSetClause.class.st | 13 +- src/FamixNGSQL/FmxSQLSourceAnchor.class.st | 2 +- src/FamixNGSQL/FmxSQLSourceLanguage.class.st | 4 +- .../FmxSQLSourceTextAnchor.class.st | 8 +- src/FamixNGSQL/FmxSQLSourcedEntity.class.st | 6 +- src/FamixNGSQL/FmxSQLStoredProcedure.class.st | 83 +---------- .../FmxSQLStoredProcedureCall.class.st | 17 +-- .../FmxSQLStructuralEntity.class.st | 8 +- src/FamixNGSQL/FmxSQLTArgument.trait.st | 2 +- src/FamixNGSQL/FmxSQLTColumn.trait.st | 7 +- .../FmxSQLTDefiningDerivedTables.trait.st | 8 +- src/FamixNGSQL/FmxSQLTNamedEntity.trait.st | 13 ++ src/FamixNGSQL/FmxSQLTQueryContainer.trait.st | 10 +- .../FmxSQLTReferencesGroupReference.trait.st | 6 +- src/FamixNGSQL/FmxSQLTWithAccesses.trait.st | 13 ++ src/FamixNGSQL/FmxSQLTWithAlias.trait.st | 10 +- .../FmxSQLTWithColumnReference.trait.st | 12 +- src/FamixNGSQL/FmxSQLTWithCursor.trait.st | 10 +- .../FmxSQLTWithCursorReference.trait.st | 12 +- .../FmxSQLTWithDerivedTableReference.trait.st | 12 +- .../FmxSQLTWithEntitySourceAnchor.trait.st | 12 +- .../FmxSQLTWithImmediateSource.trait.st | 13 ++ .../FmxSQLTWithNamespaceReference.trait.st | 10 +- .../FmxSQLTWithQualifiedReference.trait.st | 3 +- ...xSQLTWithReferencesGroupReference.trait.st | 10 +- .../FmxSQLTWithTableReference.trait.st | 12 +- .../FmxSQLTWithViewReference.trait.st | 12 +- src/FamixNGSQL/FmxSQLTable.class.st | 92 ++++--------- src/FamixNGSQL/FmxSQLTableReference.class.st | 4 +- src/FamixNGSQL/FmxSQLTrigger.class.st | 51 +------ .../FmxSQLTriggerStoredProcedure.class.st | 21 ++- src/FamixNGSQL/FmxSQLType.class.st | 20 ++- src/FamixNGSQL/FmxSQLTypeReference.class.st | 5 +- src/FamixNGSQL/FmxSQLUnionClause.class.st | 2 +- .../FmxSQLUniqueConstraint.class.st | 16 +-- .../FmxSQLUnknownSourceLanguage.class.st | 6 +- src/FamixNGSQL/FmxSQLUpdateQuery.class.st | 5 +- src/FamixNGSQL/FmxSQLUsingClause.class.st | 2 +- src/FamixNGSQL/FmxSQLValuesClause.class.st | 8 +- src/FamixNGSQL/FmxSQLValuesQuery.class.st | 2 +- src/FamixNGSQL/FmxSQLView.class.st | 130 ++---------------- src/FamixNGSQL/FmxSQLViewReference.class.st | 4 +- src/FamixNGSQL/FmxSQLWhereClause.class.st | 11 +- src/FamixNGSQL/FmxSQLWithClause.class.st | 2 +- 108 files changed, 552 insertions(+), 1341 deletions(-) create mode 100644 src/FamixNGSQL/FmxSQLModel.class.st delete mode 100644 src/FamixNGSQL/FmxSQLMooseModel.class.st delete mode 100644 src/FamixNGSQL/FmxSQLNoSourceAnchor.class.st create mode 100644 src/FamixNGSQL/FmxSQLTNamedEntity.trait.st create mode 100644 src/FamixNGSQL/FmxSQLTWithAccesses.trait.st create mode 100644 src/FamixNGSQL/FmxSQLTWithImmediateSource.trait.st diff --git a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st index e340cf12..c011e9bd 100644 --- a/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st +++ b/src/FAMIXNGSQLMetamodelGenerator/FmxSQLMetamodelGenerator.class.st @@ -67,7 +67,9 @@ Class { 'tWithEntitySourceAnchor', 'tDefiningDerivedTables', 'qualifiedReference', - 'tWithQualifiedReference' + 'tWithQualifiedReference', + 'tWithImmediateSource', + 'tWithAccesses' ], #category : #FAMIXNGSQLMetamodelGenerator } @@ -77,18 +79,18 @@ FmxSQLMetamodelGenerator class >> generate [ "This method is just there to make regeneration of the MM easy."