blob: 72580d5a97a57afe132e588186c24a80096b5ba8 [file] [log] [blame]
@M
Resource extlibraryResource {
URI = "extlibrary";
contentType = "ECore";
content += extlibrary;
}
new EPackage extlibrary {
nsURI = "http://www.eclipse.org/Intent/Extlibrary/1.0.0";
nsPrefix = "extlib";
}
extlibrary {
eClassifiers += new EClass Book {
eStructuralFeatures += new EAttribute {
name = "title";
eType = EString;
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EReference book_writer {
name = "author";
eType = Writer;
lowerBound = "1";
changeable = "true";
ordered = "true";
eOpposite = writer_books;
};
};
}
@Annotation javaDoc documentation="Number of pages of a Book. By default, we set it to 100."
Book {
eStructuralFeatures += new EAttribute {
name = "pages";
eType = EInt;
changeable = "true";
defaultValueLiteral = "100";
ordered = "true";
};
}
extlibrary {
eClassifiers += new EEnum BookCategory {
serializable = "true";
eLiterals += new EEnumLiteral {
name = "Mystery";
literal = "Mystery";
value = "0";
};
eLiterals += new EEnumLiteral {
name = "ScienceFiction";
literal = "ScienceFiction";
value = "1";
};
eLiterals += new EEnumLiteral {
name = "Biography";
literal = "Biography";
value = "2";
};
};
}
Book {
eStructuralFeatures += new EAttribute {
name = "category";
eType = BookCategory;
changeable = "true";
ordered = "true";
unsettable = "true";
};
eSuperTypes += CirculatingItem;
}
extlibrary {
eClassifiers += new EClass Library {
eSuperTypes += Addressable;
eStructuralFeatures += new EAttribute {
name = "name";
eType = EString;
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EReference {
name = "writers";
eType = Writer;
containment = "true";
resolveProxies = "false";
upperBound = "-1";
changeable = "true";
derived = "true";
ordered = "true";
transient = "true";
volatile = "true";
};
eStructuralFeatures += new EReference {
name = "stock";
eType = Item;
containment = "true";
resolveProxies = "false";
upperBound = "-1";
changeable = "true";
ordered = "false";
};
eStructuralFeatures += new EReference {
name = "books";
eType = Book;
upperBound = "-1";
changeable = "true";
derived = "true";
transient = "true";
ordered = "false";
};
};
}
Library {
eStructuralFeatures += new EReference {
name = "employees";
eType = Employee;
containment = "true";
resolveProxies = "false";
upperBound = "-1";
changeable = "true";
derived = "true";
ordered = "true";
transient = "true";
volatile = "true";
};
eStructuralFeatures += new EReference {
name = "borrowers";
eType = Borrower;
containment = "true";
resolveProxies = "false";
upperBound = "-1";
changeable = "true";
derived = "true";
ordered = "false";
transient = "true";
volatile = "true";
};
eStructuralFeatures += new EAttribute {
name = "people";
eType = EFeatureMapEntry;
upperBound = "-1";
changeable = "true";
ordered = "true";
};
}
Library {
eStructuralFeatures += new EReference lib_branches {
name = "branches";
eType = Library;
containment = "true";
upperBound = "-1";
changeable = "true";
ordered = "true";
eOpposite = lib_parentBranch;
};
eStructuralFeatures += new EReference lib_parentBranch {
name = "parentBranch";
eType = Library;
container = "true";
changeable = "true";
ordered = "true";
eOpposite = lib_branches;
};
}
extlibrary {
eClassifiers += new EClass Writer {
eSuperTypes += Person;
eStructuralFeatures += new EAttribute {
name = "name";
eType = EString;
changeable = "true";
ordered = "true";
transient = "true";
volatile = "true";
};
eStructuralFeatures += new EReference writer_books {
name = "books";
eType = Book;
upperBound = "-1";
changeable = "true";
ordered = "true";
eOpposite = book_writer;
};
};
}
extlibrary {
eClassifiers += new EClass Item {
abstract = "true";
eStructuralFeatures += new EAttribute {
name = "publicationDate";
eType = EDate;
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass Lendable {
abstract = "true";
interface = "true";
eStructuralFeatures += new EAttribute {
name = "copies";
eType = EInt;
lowerBound = "1";
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EReference lendable_borrowers {
name = "borrowers";
eType = Borrower;
upperBound = "-1";
changeable = "true";
eOpposite = borrowed;
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass CirculatingItem {
abstract = "true";
eSuperTypes += [ Item , Lendable ];
};
}
extlibrary {
eClassifiers += new EClass Periodical {
abstract = "true";
eSuperTypes += Item;
eStructuralFeatures += new EAttribute {
name = "title";
eType = EString;
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EAttribute {
name = "issuesPerYear";
eType = EInt;
lowerBound = "1";
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass AudioVisualItem {
eSuperTypes += CirculatingItem;
abstract = "true";
eStructuralFeatures += new EAttribute {
name = "title";
eType = EString;
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EAttribute {
name = "minutesLength";
eType = EInt;
lowerBound = "1";
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EAttribute {
name = "damaged";
eType = EBoolean;
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass BookOnTape {
eSuperTypes += AudioVisualItem;
eStructuralFeatures += new EReference {
name = "reader";
eType = Person;
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EReference {
name = "author";
eType = Writer;
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass VideoCassette {
eSuperTypes += AudioVisualItem;
eStructuralFeatures += new EReference {
name = "cast";
eType = Person;
upperBound = "-1";
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass Borrower {
eSuperTypes += Person;
eStructuralFeatures += new EReference borrowed {
name = "borrowed";
eType = Lendable;
upperBound = "-1";
changeable = "true";
ordered = "true";
eOpposite = lendable_borrowers;
};
};
}
extlibrary {
eClassifiers += new EClass Person {
eSuperTypes += Addressable;
eStructuralFeatures += new EAttribute {
name = "firstName";
eType = EString;
lowerBound = "1";
changeable = "true";
ordered = "true";
};
eStructuralFeatures += new EAttribute {
name = "lastName";
eType = EString;
lowerBound = "1";
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass Employee {
eSuperTypes += Person;
eStructuralFeatures += new EReference {
name = "manager";
eType = Employee;
changeable = "true";
ordered = "true";
};
};
}
extlibrary {
eClassifiers += new EClass Addressable {
abstract = "true";
interface = "true";
eStructuralFeatures += new EAttribute {
name = "address";
eType = EString;
changeable = "true";
ordered = "true";
};
};
}
M@