• Nenhum resultado encontrado

Este anexo apresenta as consultas SQLs executadas sobre a camada de persistência do modelo para geração do DPModel. Este modelo de dados é utilizado na implementação da proposta deste trabalho.

Entidade Model

Entidade que contém um identificador único para o modelo, o autor, a data de criação, a descrição e o nome.

SQL

SELECT mit.id, mif.author, mif.creationtime, mif.description, mif.name from modelinstance mit left outer join modelinformation mif on mit.modelinformation_id = mif.id

Entidade Model Element

Entidade que representa todos os elementos dos modelos, sejam relações ou tipos. Contém um identificador único, o identificador do modelo o qual a entidade pertence e o nome da entidade.

SQL:

SELECT modelinstance_id model_id, instances_id id, ore.value name FROM

modelinstance_ontoeinstance m

left outer join ontoeentity_ontoerestriction oo on (m.instances_id = oo.ontoeentity_id)

left outer join ontoerestriction ore on oo."restrictionsMap_uuid" = ore.uuid WHERE

ore.name='name'

Entidade Model Element Relationship

Entidade que representa somente os relacionamentos dos modelos. Contém um identificador único, o modelo que contém a relação, e as entidades fonte e alvo da relação.

SQL:

SELECT m.model_id, m.id, m.value, source_id, target_id FROM ontoerelationobject oe, view.modelelement_vw m

Entidade Estereótipos

Entidade que representa todas as metaclasses contidas em um metamodelo. O estereótipo utilizado na linguagem são essas metaclasses. Contém um identificador único, um nome amigável e um nome que é idêntico ao que aparece no metamodelo.

SQL:

select id, label, name from ontoerelation union

select id, label, name from ontoeclass

Entidade Classification

Entidade que representa a classificação de um model element, ou seja qual o papel dentro de um padrão de projeto que a entidade está executando. Esta informação é útil para várias pesquisas como demonstrado durante o trabalho. Esta SQL é composta vários trechos que são unidos por uniões – em SQL o comando “UNION” – cada trecho extrai do modelo elementos que estão executando um determinado papel.

SQL:

select modelelement_stereotype_vw.element_id, 11 role_id from view.modelelement_vw,

view.stereotype_vw, view.modelelement_stereotype_vw where stereotype_vw.name = 'Phase' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id --PhaseSuperType

union

select distinct m.id, 10 role_id

from view.modelelement_vw m, view.stereotype_vw, view.modelelement_stereotype_vw where

m.id in (

select m.source_id from view.modelelement_relations_vw m, view.stereotype_vw, view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select modelelement_stereotype_vw.element_id from view.modelelement_vw, view.stereotype_vw, view.modelelement_stereotype_vw

where

stereotype_vw.name = 'Role' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id

) ) union

-- Role

select modelelement_stereotype_vw.element_id, 31 role_id from view.modelelement_vw, view.stereotype_vw,

view.modelelement_stereotype_vw where stereotype_vw.name = 'Role' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id --RoleSuperType

union

select distinct m.id, 30 role_id

from view.modelelement_vw m, view.stereotype_vw, view.modelelement_stereotype_vw where m.id in ( select m.source_id from view.modelelement_relations_vw m, view.stereotype_vw, view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id and m.target_id in ( select modelelement_stereotype_vw.element_id from view.modelelement_vw, view.stereotype_vw, view.modelelement_stereotype_vw where

stereotype_vw.name = 'Role' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id ) ) -- Subkind union

select modelelement_stereotype_vw.element_id, 21 role_id

from view.modelelement_vw, view.stereotype_vw, view.modelelement_stereotype_vw where

stereotype_vw.name = 'SubKind' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id --SubKindSuperType union select distinct m.id,20 role_id from view.modelelement_vw m, view.stereotype_vw, view.modelelement_stereotype_vw where m.id in ( select m.source_id from view.modelelement_relations_vw m,

view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select modelelement_stereotype_vw.element_id from view.modelelement_vw, view.stereotype_vw, view.modelelement_stereotype_vw

where

stereotype_vw.name = 'SubKind' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id

)

)

Associação entre os Classifications

Esta SQL é responsável por extrair do modelo a relação entre entidades que atuam em uma mesma instância de um padrão de projeto.

OCL:

--Ser Superphase.

select (m.source_id || m.target_id || 10) id, m.source_id, m.target_id, 10 association_type_id from

view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c

where role_id = 11 )

union

--Ser SuperSubKind

select (m.source_id || m.target_id || 20) id, m.source_id, m.target_id, 20 association_type_id from

view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c

where role_id = 21 )

--Ser SuperRole

select (m.source_id || m.target_id || 30) id, m.source_id, m.target_id,30 association_type_id from

view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c

where role_id = 31 )

union

-- Phase Partition

select (m1.source_id || m2.target_id || 11) id, m1.target_id, m2.target_id , 11 association_type_id

from

(select m.source_id, m.target_id, m.name from view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c

where role_id = 11 ) ) m1,

(select m.source_id, m.target_id, m.name from view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c where role_id = 11 ) ) m2 where m1.source_id=m2.source_id and m1.target_id<> m2.target_id

and COALESCE(m1.name,’STANDARDGSET’)= COALESCE (m2.name, ’STANDARDGSET’) union

-- SubKindPartition

association_type_id from

(select m.source_id, m.target_id from

view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c

where role_id = 21 ) ) m1,

(select m.source_id, m.target_id from

view.modelelement_relations_vw m, view.stereotype_vw,

view.modelelement_stereotype_vw where

stereotype_vw.name = 'Generalization' and

modelelement_stereotype_vw.stereotype_id = stereotype_vw.id and m.id = modelelement_stereotype_vw.element_id

and m.target_id in (

select c.element_id target from view.classification_vw c where role_id = 21 ) ) m2 where m1.source_id=m2.source_id and m1.target_id<> m2.target_id

ANEXO B – REGRAS DE PESQUISAS PARA PADRÕES