[Checkins] SVN: Sandbox/adamg/ocql/trunk/src/ocql/testing/database.py extend the sample DB

Charith Paranaliyanage paranaliyanage at gmail.com
Thu Aug 21 23:21:51 EDT 2008


Log message for revision 90110:
  extend the sample DB

Changed:
  U   Sandbox/adamg/ocql/trunk/src/ocql/testing/database.py

-=-
Modified: Sandbox/adamg/ocql/trunk/src/ocql/testing/database.py
===================================================================
--- Sandbox/adamg/ocql/trunk/src/ocql/testing/database.py	2008-08-22 03:12:19 UTC (rev 90109)
+++ Sandbox/adamg/ocql/trunk/src/ocql/testing/database.py	2008-08-22 03:21:51 UTC (rev 90110)
@@ -9,6 +9,23 @@
 from ocql.database.metadata import MClass,Metadata,MetaType
 
 # schema
+class IAddress(Interface):
+    street = TextLine(
+        title=u"Street address",
+        required=True
+        )
+
+class IDepartment(Interface):
+    name = TextLine(
+        title=u"name",
+        required=True
+        )
+    address = Choice(
+        title=u"Street address",
+        vocabulary="vocab_of_IAddress",
+        required=True
+        )
+
 class ICourse(Interface):
     code = TextLine(
         title=u"Course code",
@@ -21,26 +38,89 @@
             vocabulary="vocab_of_IDepartment",
             )
         )
+    prerequisites = Set(
+        title=u"Prerequisite courses",
+        value_type = Choice(
+            title=u"Course",
+            vocabulary="vocab_of_ICourse",
+            )
+        )
     credits = Int(
         title=u"Credits",
         )
+    assessment = List(
+        title=u"Assessment",
+        value_type = Int(
+            title=u"Assessment",
+            )
+        )
 
-class IDepartments(Interface):
+class IPerson(Interface):
     name = TextLine(
-        title=u"name",
+        title=u"Name",
         required=True
         )
-    address = Choice(
-        title=u"Street address",
-        vocabulary="vocab_of_IAddress",
-        required=True
+
+class IStaff(IPerson):
+    department = Choice(
+        title=u"Department",
+        vocabulary="vocab_of_IDepartment",
         )
+    teaches = Set(
+        title=u"Teaches",
+        value_type = Choice(
+            title=u"Course",
+            vocabulary="vocab_of_ICourse",
+            )
+        )
+    salary = Int(
+        title=u"Name",
+        )
 
+class IStudent(IPerson):
+    major = Choice(
+        title=u"Department",
+        vocabulary="vocab_of_IDepartment",
+        )
+    supervisedBy = List(
+        title=u"Supervised by",
+        value_type = Choice(
+            title=u"Member of staff",
+            vocabulary="vocab_of_IStaff",
+            )
+        )
+    takes = Set(
+        title=u"Takes",
+        value_type = Choice(
+            title=u"Course",
+            vocabulary="vocab_of_ICourse",
+            )
+        )
+
+class ITutor(IStaff, IStudent):
+    pass
+
+class IVisitingStaff(IStaff):
+    pass
+
+class Address(object):
+    implements(IAddress)
+
+    def __init__(self, street):
+        self.street =street
+
+    def __repr__(self):
+        return "%s <%s>" % (
+            self.__class__.__name__,
+            self.street
+        )
+
 class Department(object):
-    implements(IDepartments)
+    implements(IDepartment)
 
-    def __init__(self, name):
+    def __init__(self, name, address):
         self.name = name
+        self.address = address
 
     def __repr__(self):
         return "%s <%s>" % (
@@ -51,10 +131,12 @@
 class Course(object):
     implements(ICourse)
 
-    def __init__(self, code, runBy, credits):
+    def __init__(self, code, runBy, prerequisites, credits, assessment):
         self.code = code
         self.runBy = runBy
+        self.prerequisites = prerequisites
         self.credits = credits
+        self.assessment = assessment
 
     def __repr__(self):
         return "%s <%s>" % (
@@ -62,27 +144,86 @@
             self.code
         )
 
-D1 = Department("Computing Science")
-D2 = Department("Other department")
-D3 = Department("Department without curse")
+class Person(object):
+    implements(IPerson)
 
-C1 = Course("C1", runBy = set([D1, D2]), credits=2)
-C2 = Course("C2", runBy = set(), credits=3)
-C3 = Course("C3", runBy = set([D1]), credits=3)
+    def __init__(self, name):
+        self.name = name
 
+    def __repr__(self):
+        return "%s <%s>" % (
+            self.__class__.__name__,
+            self.name
+        )
 
+class Staff(Person):
+    implements(IStaff)
+
+    def __init__(self, name, department, teaches, salary):
+        self.name= name
+        self.department = department
+        self.teaches = teaches
+        self.salary = salary
+
+
+class Student(Person):
+    implements(IStudent)
+
+    def __init__(self, name, major, supervisedBy, takes):
+        self.name= name
+        self.major = major
+        self.supervisedBy = supervisedBy
+        self.takes = takes
+
+class Tutor(Staff, Student):
+    implements(ITutor)
+
+class VisitingStaff(Staff):
+    implements(IVisitingStaff)
+
+A1 = Address("Gibson Street")
+A2 = Address("Hillhead Street")
+
+D1 = Department("Computing Science", A1)
+D2 = Department("Other department", A2)
+D3 = Department("Department without curse", A2)
+
+C1 = Course("C1", runBy = set([D1, D2]), prerequisites=set(), credits=2, assessment=set([0]))
+C2 = Course("C2", runBy = set(), prerequisites=set([C1]), credits=3, assessment=set([1,2]))
+C3 = Course("C3", runBy = set([D1]), prerequisites=set([C1, C2]), credits=3, assessment=set([1]))
+
+S1 = Staff("S1", department=D1, teaches=set([C1]), salary=2000)
+S2 = Staff("S2", department=D2, teaches=set([C1, C2]), salary=2500)
+
+St1 = Student("St1", major=D1, supervisedBy=set([S1]), takes=set([C1, C2]))
+St2 = Student("St2", major=D2, supervisedBy=set([S1, S2]), takes=set([C1]))
+
+T1 = Tutor("T1", department=D1, teaches=set([C1]), salary=500)
+
+V1 = VisitingStaff("V1", department=D1, teaches=set([C1]), salary=1000)
+
 # metadata
 class TestMetadata(Metadata):
     implements(IDB)
     adapts(None)
 
     db = {
-            'IDepartments': [D1, D2],
-            'ICourse': [C1, C2, C3]
+            'IAddress': [A1, A2],
+            'IDepartment': [D1, D2],
+            'ICourse': [C1, C2, C3],
+            'IStaff': [S1, S2],
+            'IStudent': [St1, St2],
+            'ITutor': [T1],
+            'IVisitingStaff': [V1]
         }
     classes = {
-            'IDepartments': MClass(IDepartments),
+            'IAddress': MClass(IAddress),
+            'IDepartment': MClass(IDepartment),
             'ICourse': MClass(ICourse),
+            'IStaff': MClass(IStaff),
+            'IStudent': MClass(IStudent),
+            'ITutor': MClass(ITutor),
+            'IVisitingStaff': MClass(IVisitingStaff),
             }
 
     def __init__(self, context=None):



More information about the Checkins mailing list