! " " #$ %
{veronica.bollati, belen.vela, juanmanuel.vara, esperanza.marcos}@urjc.es
& ' ( " ) " ( " " " " * # *%
+ , - #+ % " " " ( " " " " ( "
" ) ( " . / ( " ( " " ( " " , " ) "
0 ( #( " ( " % ! ( " 1 1 ( " *+ 2 (
0 ( ( " ' ) $3. 1 ( ( 1 ( " *+ .
( ( ( ( 4* / # % "5 " )
( " & ( " " " *+
! * " $ 0 6 * ) " " " * + ,
-/ 0 ( " " " " )
"
#
" ( " " * # *% 7 ( " "
) ( " " " " 1 "
* " ( , " "6 ) " (5 0 "
, ( , 8 " ,
( " " " ( , " ( " 7( " *
( " , , " "
" , 1 " " ( " ( , " (
" " ( 9:; 8 ! ( ! ) " *<
* + " + , #++% 1 * + , - #+ % 94=;
)& " 5 " 9>; ( ( " ( , 1
" " 0 " " )
" ( ( " ( *+ 5( " "
! ) 1 1 ) " " " " ( 9? =@ =>;
$ ( ) 0 )&
( " )& 1 " A " " *+ " " (
" ( * 9B; ( " )& " ( "
+ " ) ! ( ( < " )&
" " ( ) " " " 0 ( ( (
, " " * " $ 0 6 * ) " " #*$* %
94C; " " *+ . " *$* " ( " " ! "
$ ( " D 0 ( #$D% " 0 " "
" " 0 " ) " 0 ( " ( "
" " 1 " " D " " " 8 0 (
# 8D % 1 , " ) " 0 ( "
&0 " 8 0 ( # 8$ % 1 5 1 ( " *+
2 ( " 0 ( " ( " ' # 4/%
" ) $3. 1 ( ( 1 ( " *+ " + =C)
*$* " *+ " ( ( " " " ( 1 "
( " )& " ) " ( " " D* $ ( ' 5 )
" , " ) ( < ( ) 4
" 0 ( ( " " " " *+ "
( ( " + 0 ( " 8D 8$ : "
" 1 ( ( ( " ( " " 2 (
E 0 ,
$
#
%
F 5 ( " D* $ 9==; ( " )& " ) " ( "
" " $D ( ( 2 ) = D* $ ( " " " $D " "
" " ( ) 8 " " " " * #
% 9=?; D* $ " 0 " 0 ( " 0 " ( 0
" ! " < ( " " " " ( #
D % 8D 8$ 8 " " 5 " "
$D< ' " ( ( . " 0 " ( " "
" " $D 1 " ! & 0 " " A " "
! 1 " (
!
" #$ %& CRE ATE OR RE PLACE Jef e_Proyect o AS TY PE (Codigo_Id NUM BER, Nombre V ARC HAR 2(30), Tel efono NUM BER, Dirig e REF Pro yecto);
SQL XML Sche ma
& " 1 ( 0 " " D* $< * " *+
, " 1 " "
" * ( " ! 8D 8$ ( 2 ) = ! 8D " 0
( " " " " ( " " ) ( " . ! 8$
" 0 " ( " ( " + ( " " 1 ( G . " " " " )&
" ( ( " * 8 " )& + " "
8$ " 0 < ( " 5 " $3.<4CC: 9>; ) " "
&0 + =C) 9=>; , " " (
*+ H " " * G . " 9@ 4B; $ " 0 "
" ( ( " ( " " " *+ 5 " $3.<4CC:
" + =C) 7 ( ( 5 ) &
" ( ( " 5 " $3.<4CC: 1 ( ( " "
+ =C) " (5 " 8$ " 0 " " + =C) " ) " )
8 ( " " " 0 " 0 ( " 8D 8$
# 4 % 0 ( 1 ( " ) $3. *+ # 4/% &
" " 0 " 8D " 0 ( " 0 " "
" ) $3. " * " + =C)
/ " *$* " *+ ) " ( 4* / #
% 1 " ( ( " )& D* $ ) ( - (5
" $D . ( " " D* $ 0 " ( " " 4* / 8
" " ( 5 " " " " " D* $
( ( " " ( ) ! " , "
0 ( " ( 4* /
" " " ( " "
# 8% " 1 ) ! " ) " ( "
*$* " " (7 "
!# 2% & " " 8 " ( "
" ( " !# 2% ( " 0 ( ( /.
D / ) " " " ) ( +2$ G " ( ( " 5 "
( .4 + . " /. 9=C; ( (
0 ( 4 +2$ 9=B; ( ( " 0 ( 4/
5 " , 0 5 " ( ( 7 0
" , " 0 " " # " *$*
" *+ % 1 ) " ( 0 " " " " 94: 4E 4@;
( ( " " 0 " ( " " " *+ #
" + =C)% ( ) " 0 ( ! 8D 8$
$ "
( " " " *+ ( " 0 " ( ( " + 1 ,
" " 0 . ) , &0 " * ( # # *$.% 9=:;
" ( " , ! " ) ( *$*
" " ' ( ' < " 0 . " 0 " !
) , " +2 D ( " 0 " 0 . ( " " "
*+ 9=4 4:; 1 ( G . 94I; 8 ( " "
) ( " " *$.
" " 0 " ( ( 1 0 " " " 8
! , *$. ( " # % *$.
$ " " " +2 9E =:; * ( " )&
" 1 ( " 0 . ( % # (
J . ( J 9=;% 5 " " K " 0 "
) , " +2 ) ! ( " &
) , " +2 " " " " " ) "
! 0 ( " ( " " 1 ( *$. " ( " $D
5 ( ( ( " 0 . "& "
" " ( " G D ) ( "
8 " )& ' (5 " '
" *$* *+ ( " " ( ( " " +2
5 " " + =C) ( " ,
( ( " 5 " < + " &
" ' ( 1 ' ( " (
( ( 1 " 5 " $3.<4CC:
& $ ( " + + =C)L
$ $' ( # %
* " " " *+ " 0 " , " ) "
0 ( " ( " " " #8D % ( " + #8$ %
0 ( 1 " " 0 9=?; " 1 M " " 0 (
" " ) , ) ( ( " " 0 ( N *
( , 94:; " 0 1 " " "
0 ( ( " D* $<
o 8 ( " 0 0 ( ( " " ) ,
o . ) ) " 0 ( 0 ( " " ) (5 " ) 0
o 8 7 ( ) ( ( " " ) " "
( " " 0 ( ' 8 , " ) , /.
( " " "
5 " " ) ( 1 " "
5( " 0 ( " ( " < ' " "
" 0 " ( " " 0 ( " 5 (5
! , ! " , " " ( " "
( " " 0 " 0 ( " ) 0 94;
0 ( " ) " 0 ( " ( ( 0 " "
( 0 " " " ( " " "
( " " & ( " ) ) " " ( ( * ) ( "
0 ( " 0 ( ( 0 ) 0 ! ( " " ( "
1 0 1 " ) " ( "
( " ( ( " ) " 0 ( "
) , /. 9=C; ) , " 0 ( " ( " " " ) /. $
/. ( 5 " + . 9=I; 0 1 " ! (
( ! 1 ( " " 0 1 " ! " ( ( $ "
/. 1 ( " " 5 " " 0 0 ( " ( "
. " " " ) *+, + #3 /% 9=E; ) + (
( ( 8 " /. ! , " ( " "
0 ( " ( " " (5 ) ( " " " 0 (
( , " ( " 0 ( " ( " 8 ( (
0 ( /. " 0 , " ) " ) " 0 ( "
" # % ( " " # % ( ! " ( ( "
" , 0 ( /. ( ( "
" ( " " " . ) " ' ( "
" ( " " " : ( 5 ( ( " ) "
) " 0 ( " /. " " "
= ( ) " 0 ( " 8D 8$ " *$*
*+ ) 0 " " 0 ( " (
! " ( ( 0 " 5 " $3.<=>>> ! ? " + 9=4;
/ " 0 ) , ) " 0 ( " ) "
0 ( " 0 " " " 0 ( " ) 0 94; . 0 (
( " ) " 0 ( 8D 8$ " " ( " +
" 0 ( " ) 0 " 94:;
' " / 0 ( + " 8D 8$
# % ) *
+%,-!$../0
%
+ ". 0
$ " / O / " / + , / O + , /
$ ( # ( % # ( %
! " K KF " /
( +JK$ " / # ( % + , / # ( %
" / )) K " / )) K "
=<= 0K 0 0K 0
=< 0 - K 0 - F " / K
F< K - K F " / KF " / - K
) ) K F " / K 0 0
( K F " / K 0 + ,
/ K/ " / / K/ " /
/
)
*$* *+ ! " " "
" " < *+ ) " 0 ( " " " "
1 ( " " ( ) " 0 ( " " "
#8D % " ( " " ) ( " . # : =% 8 ( "
" 8D " ) ( ( " /. ) 8$ *+
# : 4 : :% 8 7 ( " " 8$ " ) $3. "
" +2$ " 0 " # : E%
! " 0 " 8D " " ( 1 " 0 (
(5 " 0 ( ( $ ( ) " A " " 0 K
( " 0 ( " + ) " " ( " ) " " ) "
" ) 50 " ( " 0 ( ( ( " ( " 4 = 1
/ "
( ( " " " " *+ " " ) " " 0
8D #! 2 ) :%< 0 " 8 # % " ) " # % 5
( " , " # % 1 ! , " 0 ) # %
0 ) " &) # % 1 5 0 ( " & ## %
8 ) 50 " ( " ( 4* / .4
944; ( ( " ( ( " " . " 2 0 ( "
& / " " * #8D % " "
/ $' ( # %
( ) " ) " 0 ( " 8D
( " + " + =C) 8 " " 0 ( "
" ) ) (5 " ) 0 " ( ( /.
' ( 1 . 1 " " 2 ) E ( ) "
0 ( " ) 0 0 ( # 8D % ( "
1 ( *+ # 8$ % $ ( 1 . ! 8D
# P % 5 ! 8$ " # * ( * %
" #* ( % # L% " ! " " 5 " 1
" 5 ' " " 8 " " " " # *%
" A " 5 " # L%
" " 2 ) E ( ) /. -. *- ( 1
" 0 ( " ) 0 " 0 " . ) -. 0 1
" " ( " " ) #. #/ % " "
" ( " " " # 0&/ * 0&/ * ( % "5 "
" (5 ! " " " " " ( , (
" "' 8 ) /. *- ( 0 ( " " " .
" ) " " 1 8 " "
" " ) " A " " " ( "
0 ( # :C% " ( /. ! 7 ' " ! 0
" 1 " ) ( " " * (
" ! ) ( " " " " 0
0 ( ( " " 0 0 (
0 ( " ( " "
ownedAttibute * * ???:UML::Class name:String=??? 1 ???:UML::Class name:String=??? ???:UML::Class name:String=??? 1 match(1).name:OR::Typed Table 1’ match(1).name:OR::Typed Table match(1).name:OR::Typed Table 1’ match(2).name:OR::Attribute
datatype = match(2).datatype 2’
match(2).name:OR::Attribute
datatype = match(2).datatype match(2).name:OR::Attribute
datatype = match(2).datatype 2’
match(1).name + “_Type”:OR::Structured Type 1’ match(1).name + “_Type”:OR::Structured Type match(1).name + “_Type”:OR::Structured Type 1’ ???:UML::Property name:String=?? datatype:Datatype=?? 2 ???:UML::Property name:String=?? datatype:Datatype=?? ???:UML::Property name:String=?? datatype:Datatype=?? 2 :UML::Stereotype
name: String= Persistent 3 :UML::Stereotype
name: String= Persistent :UML::Stereotype
name: String= Persistent 3
LHS
- UML Class Diagram - - OR Model -RHS
ruleClass2UDT {
from
c : UML!Class
to
udt : modeloOR!StructuredType( Name <- c.name + '<<udt>>', typed <- tt, method <- meth_seq,
supertype <-if(notc.generalization-> first()->oclIsUndefined()) then
c.generalization->first().general
else
OclUndefined
endif, model <- thisModule.package ),
meth_seq : distinctmodeloOR!Method foreach
(op in c.ownedOperation)(Name <- op.name), tt : modeloOR!TypedTable(
Name <- c.name + 's<<persistent>>') }
ruleProperty2Attribute {
from
p:UML!Property (notp.isDerived and notp.isMultivalued() and
p.refImmediateComposite().oclIsTypeOf(UML!Class))
to
a : modeloOR!Attribute( Name <- p.name, Type <- p.type,
structured <- p->refImmediateComposite()) } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
ruleClass2UDT {
from
c : UML!Class
to
udt : modeloOR!StructuredType( Name <- c.name + '<<udt>>', typed <- tt, method <- meth_seq,
supertype <-if(notc.generalization-> first()->oclIsUndefined()) then
c.generalization->first().general
else
OclUndefined
endif, model <- thisModule.package ),
meth_seq : distinctmodeloOR!Method foreach
(op in c.ownedOperation)(Name <- op.name), tt : modeloOR!TypedTable(
Name <- c.name + 's<<persistent>>') }
ruleProperty2Attribute {
from
p:UML!Property (notp.isDerived and notp.isMultivalued() and
p.refImmediateComposite().oclIsTypeOf(UML!Class))
to
a : modeloOR!Attribute( Name <- p.name, Type <- p.type,
structured <- p->refImmediateComposite()) } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
& 2 ) " / 0 ( " 8
2 ) @ ( " ) 1 " ( '
" ( " " " < . " " " "
0 ) ( " " ) 50 " 4* / " " )
/.< " " "
ATL Implementation
ruleClass2UDT {…}
ruleProperty2Attribute {…}
& 3 / 0 ( "
' ( . ) " 0 ( "
( ! 0 ( ) ( " !
/ = ' " (5 ) &0 " " " " " " 1
" " 0 " ) 0 ( ( ! " ( "
" ! " 8 " , 5 7 ( ) "
0 ( ( ! "
. ( ! " " 8D " "
1 ( *+ + =C) ' " " 0 " "
< , * ' ( . " 0 " 1 , *
( A (5' ( 0 , " ( ( ) " ( ( 1
( 1 ' ( " ( A ! ( " 0 ( " "
5 " 1 5 " 0 " 2 ) B ( ) " 0 (
" ) 0 1 0 ( ( ! " " '
( < . # % " " ( ! " # % " ! "
8 " " 0 " " # L%
" ' ( # LP L% ( ( " , *
& ( 1 " A " 1 , *
' ( ( ( " 0 ( $ ( ) /. 0 (
" 0 ( ( " ( " " " A &
) " 0 ( ( ! " " 0 ( ) ( " "
' ( ( 5 , " ! ( " , (
( " " 9I;
" " 2 ) B ( ) " 0 ( "
" 1 ( 0 ( ( ! " " .
# :-E% " 0 1 ( " " " " " ( " " "
" ( " " ) < + ' ( # ==-4@%
( " 0 ( " " * " ! " ( "
) 1* ' ( # ?->% ) 1* ( " !
" 0 1 " ! " ' & ( * ( "
0 5 ' ( "
LHS UML Class Diagram
-RHS OR Model
-ownedAttibute * ???:UML::Class name: String=??? 1 ???:UML::Class name: String=??? ???:UML::Class name: String=??? 1 1 match(1).name:OR::Typed Table 1’ match(1).name:OR::Typed Table match(1).name:OR::Typed Table 1’ 1’
match(1).name +”_Type”:OR::Structured Type 1’ match(1).name +”_Type”:OR::Structured Type match(1).name +”_Type”:OR::Structured Type 1’ 1’
match(2).name:OR::Attribute2’ match(2).name:OR::Attribute match(2).name:OR::Attribute2’2’
match(2).name+”_MS”:OR::NESTED_TABLE datatype=match(2).datatype 3’ match(2).name+”_MS”:OR::NESTED_TABLE datatype=match(2).datatype match(2).name+”_MS”:OR::NESTED_TABLE datatype=match(2).datatype 3’ 3’
rulePropertyMultivalued2Attribute {
from
p :UML!Property (notp.isDerivedandp.isMultivalued()and
p.refImmediateComposite().oclIsTypeOf(UML!Class))
to
a : modeloOR!Attribute( Name <- p.name,
Type <- thisModule.generateNestedTableMultivalued(p), structured <-(p.refImmediateComposite()) ),
st : modeloOR!StoredNestedTable( Name<-'lista_'+ p.name, attribute <- a,
typed <-thisModule.resolveTemp( p->refImmediateComposite(),'tt') )
}
unique lazy rulegenerateNestedTableMultivalued {
from
p: UML!Property
to
nt : modeloOR!NestedTableType ( Name <-'NT_'+ p.name + '<<nt>>', Type <- p.type,
model <- thisModule.package) }
???:UML::Property name: String =??? isMultivalued() = true datatype: Datatype = ???
2 ???:UML::Property name: String =??? isMultivalued() = true datatype: Datatype = ???
???:UML::Property name: String =??? isMultivalued() = true datatype: Datatype = ???
2 2 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
& 4 ) " / 0 ( " ! "
2 ) I ( " " 0 ( " ( ! " "
( " ! " " " 8 "
' ( ' 2
ATL Implementation
rulePropertyMultivalued2Attribute {…}
unique lazy rulegenerateNestedTable {…}
ATL Implementation
rulePropertyMultivalued2Attribute {…}
unique lazy rulegenerateNestedTable {…}
& 5 / 0 ( " " " ( ! "
' ( / " ( " " " ! "
" 0 ) #! / =% 8 " ( " "
, ( " 1 ( ( " ( (
/. ( 4* / " " 0 ( " . ( ( ) 1
( " ( "
1 " " 2 ) ? ( ) " 0 ( " ) 0 "
=<F " 0 ! " $ " " "
. " ) # % . # " % 0 ( "
" " ) " # LP L% 5
" 0 " " 0 " " " "
# LP L% " ' ( ( " &
" " 0 ) ( " ( ( /. "
" ) ) 1 ( =<F " . 0 ( "
" ) # :-@% 0 ( + ' ( #
B-=B% " 5 ' ( " ! " ! ) 1*
' ( # =I-4@% * ( ( ( " ( "
#' ( % ( & ! " ! " ) 1*
) 1 )7 & ) ' ( " " $ ) "
) ! ( ( 5( ! ) " ! !
0 " ( ! 1 !
LHS UML Class Diagram
-RHS OR Model
-ownedAttibute * association ???:UML::Class name: String=??? 1 ???:UML::Class name: String=??? 1 1 ???:UML::Property name: String=??? upper = * lower = ???
2 ???:UML::Property name: String=??? upper = * lower = ???
2 2
???:UML::DataType3 ???:UML::DataType33
???:UML::Property 4 ???:UML::Property 44
match(1).name:OR::Typed Table 1’ match(1).name:OR::Typed Table 1’1’
match(1).name +”_Type”:OR::Structured Type 1’ match(1).name +”_Type”:OR::Structured Type
1’ 1’ match(2).name+”MS”:OR::NESTEDTABLE 2’ match(2).name+”MS”:OR::NESTEDTABLE 2’ 2’ ???:UML::Class name: String=??? 5 ???:UML::Class name: String=??? 5 5 match(2).name:OR::Attribute 2’ match(2).name:OR::Attribute 2’2’
match(5).name:OR::Typed Table 5’ match(5).name:OR::Typed Table 5’5’ match(5).name +”_Type”:OR::Structured Type 5’ match(5).name +”_Type”:OR::Structured Type 5’5’
match(2).name+”_Ref”:OR::ReferenceType 2’ match(2).name+”_Ref”:OR::ReferenceType
2’ 2’
rulePropertyAssocMulti2Attribute {
from
p:UML!Property(p.refImmediateComposite().oclIsTypeOf (UML!Association) andp.isMultivalued() and
p.isChangeable())
to
a : modeloOR!Attribute( Name <- p.name,
Type <- thisModule.generateNestedTable(p.type), structured <-p.getProperty().type), st: modeloOR!StoredNestedTable(
Name <-'lista_'+ p.name, attribute <- a,
typed <- thisModule.resolveTemp (p.getProperty().type,'tt')) }
unique lazy rulegenerateReferences {
from
c:UML!Class
to
ref : modeloOR!ReferenceType( Name <-'Ref_'+ c.name + '<<ref>>', Type <- c,
model <- thisModule.package) }
unique lazy rulegenerateNestedTable {
from
c:UML!Class
to
nt : modeloOR!NestedTableType( Name <-'NT_'+ c.name + '<<nt>>', Type <- thisModule.generateReferences(c), model <- thisModule.package) } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
rulePropertyAssocMulti2Attribute {
from
p:UML!Property(p.refImmediateComposite().oclIsTypeOf (UML!Association) andp.isMultivalued() and
p.isChangeable())
to
a : modeloOR!Attribute( Name <- p.name,
Type <- thisModule.generateNestedTable(p.type), structured <-p.getProperty().type), st: modeloOR!StoredNestedTable(
Name <-'lista_'+ p.name, attribute <- a,
typed <- thisModule.resolveTemp (p.getProperty().type,'tt')) }
unique lazy rulegenerateReferences {
from
c:UML!Class
to
ref : modeloOR!ReferenceType( Name <-'Ref_'+ c.name + '<<ref>>', Type <- c,
model <- thisModule.package) }
unique lazy rulegenerateNestedTable {
from
c:UML!Class
to
nt : modeloOR!NestedTableType( Name <-'NT_'+ c.name + '<<nt>>', Type <- thisModule.generateReferences(c), model <- thisModule.package) } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
& 6 ) " / 0 ( "
. 2 ) > ( " " 0 ( =<F 4 " (5 "
" " 1 "
( & #& 2 % ' ( #' 2 % 1 "
( " & " 5 " 0
' 2
rulePropertyAssocMulti2Attribute {…}
unique lazy rulegenerateReferences {…}
unique lazy rulegenerateNestedTable {…}
ATL Implementation
rulePropertyAssocMulti2Attribute {…}
unique lazy rulegenerateReferences {…}
unique lazy rulegenerateNestedTable {…}
ATL Implementation
& 7 / 0 ( " =<F5
/ /
8 7 ( 2 ) =C ( 8$ ( " *+ " "
" ( " " ) 50 " ( 4* / . 0 ) "
" " ) " 0 ( " /. 8D #2 ) :% 4* /
/ 28
7 ( " " " ) " " ) " "
! 0 ( " ( " ' # 4/% 8 " ) ,
+2$ 9=B; 1 "& " 1 (5 " " "
" + ( 5 " 0 ( 4/ ( ( (
" ( (5 " " " (5 ' " " " (5 " ,
1 ( 0 < ! 1 " " 0 ( 4
) " " ) +2$ ! $ " (5
0 ( ( 0 ) , +2$ 9=B;
( 5 ) " 1 ) " 8$ " ) $3.
1 ( ( 1 ( " *+ " + =C) $ " !
0 ( ( " " ( " 1 ( " " 1 ( "
*+ #8$ % ( ! ) " " # " ) $3.%
" 0 0 1 , " ) 8
" " ( " ( ( " " " # ( ( " *
+2$ % " 0 ) 1 ( , " "
. ) ( " 0 " " ( 1 ) ( , " 0 (
0 ' 1 ! " " " 8 , ( ) "
" ( " ) (5 ( , 1 )
" " " (5 " 0 " " 0 ' 4
" ) ( " ( ( 0 # " " " )
" 0 ( " =CC-=4I% ( )
! ' 1 ( 5 " ) $3. # >C% . ) A " " ) $3.
" " " 1 1 " " # >=->B%
. ) 0 ( # =CC-=4I% ) , " 1
" # >>% 8 7 ( " " * "
" " 0 " 1 0 "
# =4>% * ( ( " " ! " !
) * ( # =:C-=:=%
" ) 1 ( ! ) " 0 ( ,
' ( " ) " " 0 . (
" " ' ( * " ( " ) # @@% (
' ( * " " " * " * 1
( ! " # BE-I:% 8 7 ( " )
! " " # IE%
2 ) == ( 1 A " " ) $3. ) " " "
" 0 ) ( " ( " + " "
" " ) 50 " ( < "
" " " (5 " # ' 2# 0 "
0 ) ( " " ) $3. ) " " , " ) "
0 ( # 4/% ( " (
Code Generation using MOFScript
eco.StructuredType::generateStructured() {…} self.attribute->forEach(a:eco.Attribute) {…} self.typed->forEach(t:eco.TypedTable){…}
CREATE OR REPLACE TYPE Poligon UNDER Figure (
Num_Lines NUMBER(4),
Have_Lines NT_Lines,
Is_Figure Ref_Figure
) /
CREATE TYPE NT_Lines AS TABLE OF Line /
CREATE TABLE Poligons OF Poligon (
PRIMARY KEY (Cod_Figure), Is_Figure NOT NULL )
NESTED TABLE Have_Lines STORE AS List_Lines; /
& "" , ( " " " )
2
1 ' &, ( " " " " " ) " ( "
*+ " " ( " D* $ 8 ( ( " /. ) "
0 ( 4 ! ( 0 ( " ( " ) " ( " +
" ( " " " 0 ( 4/ +2$ ) "
" ) $3. 1 ( " *+ ( " " 0 " (
*$. " +2 ( " " " *+ " ) 50 1 ( ( *$.
" " ( ( " ( ( " " 4* / #
% ( 1 ) " ) # ( %- (5 "
( D* $ , ! " ( " ( ( 1
" ( ( " " "1 " 5
( ( " " ( " ( ( " ! " "
" 5 ) " ( ( ( 4* /
( 5 , " " ( "
( " + * ( " & ( ( " " 0 ( 1
" 5 ) , ( ( ! " 0 ( "
+ 1 " A " , " ' ( , *
, " ( " +.* 0 " A
" " #/DF4CC@-CCC=CK% -*+$ # - -4CCI- /-=BCI%
-0 " ! " " ( " " " " " # A %
(
= ) ( $ 6 (& 78 %9 6 (
J ) ) 4CCI @C=-@C@
4 . Q R 4CC4 " 8 4
8 " ) 0 2 0 / 0 ( % .F $ 4@C@ $ ) - ) . "
EC4-E4> 4CC4
: 0( 0 ( * 4 8 ( 8 * + *&
8 # " % Q 4CCC
E ! # # 9 E J R $ 0 6 "
) ) #JD$ % ) ( #4CC@%
@ . : 3 ; #
GDDD " " D ) & " $ 0 6 " * # D$ * 4CC?% "
B 8 8 *%& < . , / * $ ( =
F = =>IB >-:B =>IB
I * " * 2 < 8 * / ! " " "
F #4CCI%
? D * 4 ! * <KK666-:CB ( (K 0 6 K" K" 4K
> D$+ K D >CI@ $ * < ( # < )#8-==> D + ) 0
$ " " 4CC:
=C 2 ! D # < 8 0 " / 0 ( 8 J R
* .$ 0 ( 4CC@
== 5 8 ! + 98 ! 6 ( ( * $JD$
4CC= S R ( # % F ! ( 4CC= .F $ 4EB@ $ ) - ) 44I-4:? $ ( 4CC4
=4 ! . # 0( %& ( 2 D 0
0 " " ) . ) ) . 4CC= / # " % .F $ 4=?@ $ ) - ) 44@-4:> + 4CC=
=: , Q $ <6 % ( $ ! :I #4CC@%
:=B-:EE
=E + , 2 # +2% 4 C 3 K 6K/ 0 ( $ 0 2 " " $ 0 CIKCIKCI "
" < <KK666 () )
=@ 0 $3. $ ! " " < <KK666 ( 0 )K 1 K
=B + " ! R F / T ( ) " - 4 %
< 4:>-4@: 4CC@
=I + + , . ) ) + ! $ 0 4 C 2 ( < C=KC@K4CCB " "
666 () )K" K KCB-C@-C= "0
=? + " , ?4=4 * ( ( ()K4CC:-C@-C= " < R , " " <
<KK666 () (K(" 4CC:
=> + 0 ( ?= 4 & - @?=4-A " " < 666 (
4C $ / R % 8 *$ $ J
U $ 4CCB
4= $ R 6 8 0( %& 9 / R ) F ' J ! ) 00( =>>>
44 . # 4 # .4% " " < <KK666 )K( " )K(" KV , W ( 4
4: ! ( % ( $ XCI<
8 " ) 0 4CCI ( ( " ( ) =C=4-=C=> 4CCI
4E * 8 1 " D* $- $ < ( " " $DJ
" * D " D ( D ) & " $ 0 6 D ) & " ( # DD$D XCE% ?:->4
4@ * J$*. ( ) 0 ( . ( " * 0 ( 6 R D D
0 J $ ! 8 ( = Y D = U 4 F ! ( 4CC@ = Y =4 4CC@
4B A ; # ( 4: " D 0
" ) # 4CCE% .F $ :4?? $ ) ) I?C-I>E 4CCE
4I . # ; # 4 / =@ 0 + "! " D 0 ( $ (
) ) D$ LC: 2+ ) 0 K " # % =B-4C 4CC: "< " / J $ 8