| -- ****************************************************************************** | |
| -- Copyright (c) 2007 INRIA. | |
| -- All rights reserved. This program and the accompanying materials | |
| -- are made available under the terms of the Eclipse Public License v1.0 | |
| -- which accompanies this distribution, and is available at | |
| -- http://www.eclipse.org/legal/epl-v10.html | |
| -- | |
| -- Contributors: | |
| -- INRIA - Initial implementation | |
| -- | |
| -- ****************************************************************************** | |
| -- @name ClassicModels | |
| -- @version 1.0 | |
| -- @domains Database, Eclipse, Business reporting, BIRT | |
| -- @authors Hugo Bruneliere (hugo.bruneliere <at> univ-nantes.fr) | |
| -- @date 2007/02/16 | |
| -- @description This metamodel simply describes the "ClassicModels" BIRT Sample database which is a simple example of typical business data such as customers, orders, order line items, products and so on. | |
| -- @see The Eclipse BIRT project: http://www.eclipse.org/birt/phoenix/ | |
| package ClassicModels { | |
| -- @begin Utils | |
| abstract class AddressInfo { | |
| attribute phone : String; | |
| attribute addressLine1 : String; | |
| attribute addressLine2 : String; | |
| attribute city : String; | |
| attribute state : String; | |
| attribute postalCode : String; | |
| attribute country : String; | |
| } | |
| class Date { | |
| attribute year : Integer; | |
| attribute month : Integer; | |
| attribute day : Integer; | |
| } | |
| -- @end Utils | |
| class ClassicModels { | |
| reference offices[*] container : Office oppositeOf officeOwner; | |
| reference productLines[*] container : ProductLine oppositeOf productLineOwner; | |
| reference customers[*] container : Customer oppositeOf customerOwner; | |
| } | |
| class ProductLine { | |
| reference productLineOwner : ClassicModels oppositeOf productLines; | |
| reference products[*] container : Product oppositeOf productLine; | |
| attribute name : String; | |
| attribute textDescription : String; | |
| attribute htmlDescription : String; | |
| } | |
| class Product { | |
| reference productLine : ProductLine oppositeOf products; | |
| attribute code : String; | |
| attribute name : String; | |
| attribute scale : String; | |
| attribute vendor : String; | |
| attribute description : String; | |
| attribute quantityInStock : Integer; | |
| attribute buyPrice : Double; | |
| attribute MSRP : Double; | |
| } | |
| class Office extends AddressInfo { | |
| reference officeOwner : ClassicModels oppositeOf offices; | |
| attribute code : String; | |
| reference employees[*] container : Employee oppositeOf office; | |
| attribute territory : String; | |
| } | |
| class Employee { | |
| reference office : Office oppositeOf employees; | |
| attribute number : Integer; | |
| reference employeeCustomers[*] : Customer oppositeOf salesRepEmployee; | |
| attribute lastName : String; | |
| attribute firstName : String; | |
| attribute extension : String; | |
| attribute email : String; | |
| reference reportsTo : Employee; | |
| attribute jobTitle : String; | |
| } | |
| class Customer extends AddressInfo { | |
| reference customerOwner : ClassicModels oppositeOf customers; | |
| attribute number : Integer; | |
| reference "orders"[*] ordered container : Order oppositeOf customer; | |
| reference payments[*] ordered container : Payment oppositeOf customer; | |
| reference salesRepEmployee : Employee oppositeOf employeeCustomers; | |
| attribute name : String; | |
| attribute contactLastName : String; | |
| attribute contactFirstName :String; | |
| attribute creditLimit : Double; | |
| } | |
| class Payment { | |
| reference customer : Customer oppositeOf payments; | |
| attribute checkNumber : String; | |
| reference date container : Date; | |
| attribute amount : Double; | |
| } | |
| class Order { | |
| reference customer : Customer oppositeOf "orders"; | |
| reference orderDetails[*] ordered container : OrderDetail oppositeOf order; | |
| attribute number : Integer; | |
| reference date container : Date; | |
| reference requiredDate container : Date; | |
| reference shippedDate[0-1] container : Date; | |
| attribute status : String; | |
| attribute comments : String; | |
| } | |
| class OrderDetail { | |
| reference order : Order oppositeOf orderDetails; | |
| reference product : Product; | |
| attribute quantityOrdered : Integer; | |
| attribute priceEach : Double; | |
| } | |
| } | |
| package PrimitiveTypes { | |
| datatype String; | |
| datatype Integer; | |
| datatype Double; | |
| } |