Source code file content

Revision: 4 (of 4)

add some reflection items (wip)
» Project Revision History

» Checkout URL

subversion / mof / models.py

Size: 4945 bytes, 1 line
from django.db import models


class Element(models.Model):
    owned_comments = models.ManyToManyField('Comment', null=True, blank=True)
    
    def __unicode__(self):
        return 'element:%s' % unicode(self.pk)
    '''
    class Meta:
        abstract = True
    '''

class NamedElement(Element):
    name = models.CharField(max_length=100)
    
    def __unicode__(self):
        return self.name
    '''
    class Meta:
        abstract = True
    '''

class Comment(Element):
    body = models.TextField()
    annotated_elements = models.ManyToManyField(NamedElement, null=True, blank=True)
    
    def __unicode__(self):
        return self.body[:50]

class Package(NamedElement):
    nesting_package = models.ForeignKey('self', null=True, blank=True, related_name='nested_packages')
    
    def __unicode__(self):
        return self.name

class Type(NamedElement):
    package = models.ForeignKey(Package, null=True, blank=True, related_name='owned_types')
    
    def __unicode__(self):
        return self.name
    
    def is_instance(self, object):
        raise Exception('not yet implemented')
    
    '''
    class Meta:
        abstract = True
    '''

class TypedElement(NamedElement):
    type = models.ForeignKey(Type, null=True, blank=True)
    
    def __unicode__(self):
        return self.name
    
    class Meta:
        abstract = True

class DataType(Type):
    def __unicode__(self):
        return self.name

class PrimitiveType(DataType):
    def __unicode__(self):
        return self.name

class Enumeration(DataType):
    def __unicode__(self):
        return self.name

class EnumerationLiteral(NamedElement):
    enumeration = models.ForeignKey(Enumeration, null=True, blank=True, related_name='owned_literals')
    
    def __unicode__(self):
        return self.name

class ClassMOF(Type):
    super_class = models.ForeignKey('self', null=True, blank=True)
    def is_abstract(self):
        raise Exception('not yet implemented')
    class Meta:
        verbose_name = 'Class'
        verbose_name_plural = 'Classes'

class MultiplicityElement(models.Model):
    lower = models.IntegerField(default=1)
    upper = models.IntegerField(default=1)
    
    def is_ordered(self):
        return False
    
    def is_unique(self):
        return True
    
    class Meta:
        abstract = True

class Association(Element):
    end_type = models.ManyToManyField(Type)
    def is_derived(self):
        return False

class Property(TypedElement, MultiplicityElement):
    default = models.CharField(max_length=100, null=True, blank=True)
    opposite = models.OneToOneField('self', null=True, blank=True, related_name='opposite_alt')
    class_mof = models.ForeignKey(ClassMOF, verbose_name='class', null=True, blank=True, related_name='owned_attributes')
    order = models.IntegerField(default=0)
    
    member_ends_association = models.ForeignKey(Association, null=True, blank=True, related_name='member_ends')
    owned_ends_association = models.ForeignKey(Association, null=True, blank=True, related_name='owned_ends')
    navigable_owned_ends_association = models.ForeignKey(Association, null=True, blank=True, related_name='navigable_owned_ends')
    
    def is_read_only(self):
        return False
    
    def is_composite(self):
        return False
    
    def is_derived(self):
        return False
    
    def is_id(self):
        return False
    
    def __unicode__(self):
        return self.name
    
    class Meta:
        verbose_name_plural = 'Properties'

class Operation(TypedElement, MultiplicityElement):
    order = models.IntegerField(default=0)
    class_mof = models.ForeignKey(ClassMOF, null=True, blank=True, related_name='owned_operations')
    raised_exceptions = models.ManyToManyField(Type, null=True, blank=True, related_name='operations')
    
    def __unicode__(self):
        return self.name

class Parameter(TypedElement, MultiplicityElement):
    order = models.IntegerField(default=0)
    operation = models.ForeignKey(Operation, related_name='owned_parameters')
    
    def __unicode__(self):
        return self.name

class Tag(Element):
    elements = models.ManyToManyField(Element, null=True, blank=True,
                                      related_name='tags')
    def __unicode__(self):
        return self.name

class Link(models.Model):
    first_element = models.ForeignKey(Element, related_name='first_links')
    second_element = models.ForeignKey(Element, related_name='seconds_links')
    association = models.OneToOneField(Association, related_name='link')

class ElementManager(models.Manager):
    pass

class LinkManager(models.Manager):
    pass

class Factory():
    def create_element(self):
        return None
    def create_link(self):
        return None
  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2010, Oracle Corporation and/or its affiliates
(revision 20120127.ac94057)
 
 
Close
loading
Please Confirm
Close