The document discusses modeling industry data using Eclipse modeling tools and frameworks. It describes how EMF, GMF, TMF, M2M, and M2T were used to design domain-specific languages for an application originally built with Oracle Forms and Database. Domain models were created from 1722 tables and 19572 columns in the database. Graphical modeling tools allowed generating Java code and GUI views from these models, simplifying development and reducing code.
25. entity BuchungskreiseF
(id=bkrId sequenceName=BKR_SEQ) {
}
TABLE BUCHUNGSKREISE_F
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
Database Schema
26.
27. Number of Characters (Domain model DSL)
30.000 (DSL)
+ 50.000 (code generator)
With DSL
+ 170 / Entity
7000 / Entity
Without DSL
300 TZ
240 TZ
11 Entities
180 TZ
120 TZ
60 TZ
0 TZ
0 20 40
32. public class PersonenForm extends
Form<Personen> {
public class PersonenHauptSubForm extends
SubForm<Personen> {
33. public class PersonenForm extends
Form<Personen> {
public class PersonenHauptSubForm extends
SubForm<Personen> {
34. public class PersonenForm extends
Form<Personen> {
public class PersonenHauptSubForm extends
SubForm<Personen> {
private JComponent
vornameTextField;
35. public class PersonenForm extends
Form<Personen> {
public class PersonenHauptSubForm extends
SubForm<Personen> {
private JComponent
vornameTextField;
36. public class PersonenForm extends
Form<Personen> {
public class PersonenHauptSubForm extends
SubForm<Personen> {
@Override
protected void initComponents() {
...
vornameTextField =
builder.createTextField(desc.vorname(),
private JComponent
vornameTextField;
Editable.PROPERTY_DEFAULT,
MANDATORY);
gepardBuilder.setNoLeadingBlanks
(vornameTextField);
37. public class PersonenForm extends
Form<Personen> {
public class PersonenHauptSubForm extends
SubForm<Personen> {
@Override
protected void initComponents() {
...
vornameTextField =
private JComponent
builder.createTextField(desc.vorname(),
vornameTextField;
Editable.PROPERTY_DEFAULT,
MANDATORY);
gepardBuilder.setNoLeadingBlanks
(vornameTextField);
43. ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
Referencing
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
ID NAME PROP1 DATE ATTR1
model : gepard;
import quot;platform:/resource/com.affichage.it21.gp.dao/src/main/model/types.daoquot;
com.affichage.it21.gp.dao {
flaechen {
readOnly entity WaehrungF (id =(rvLowValue)) {
}
readOnly entity GepardVerwendungPvF (id =(pvOid)) {
temporal manyToOne GeschpartnerAllBsF geschpartner (joinColum
}
}
verkauf {
readOnly entity GepardVerwendungKdvtF (id =(kdvtId)) {
temporal notNull manyToOne GeschpartnerAllBsF geschpartner (j
notNull Number istLangfrist (castTo=Boolean)
notNull Number istLokaldispo (castTo=Boolean)
}
}
gepard {
readOnly entity AbcKundenF (id = (rvLowValue)) {