package module.fileManagement.domain.metadata; class .module.fileManagement.domain.task.CreateDefaultMetadataTemplates extends .pt.ist.bennu.core.domain.scheduler.Task { } class MetadataKey { String keyValue; Boolean reserved; Class metadataValueType; } class Metadata { DateTime timestamp ( REQUIRED ); } class MetadataTemplate { String name; } class DateTimeMetadata extends Metadata { DateTime datetimeValue; } class StringMetadata extends Metadata { String stringValue; } class IntegerMetadata extends Metadata { Integer integerValue; } class PersonMetadata extends Metadata { } /*class MoneyMetadata extends Metadata { Money moneyValue; }*/ relation PersonPersonMetadata { PersonMetadata playsRole metadata; .module.organization.domain.Person playsRole person; } class SeqNumberMetadata extends IntegerMetadata {} relation MetadataMetadataKey { MetadataKey playsRole metadataKey { multiplicity 1; } Metadata playsRole metadata { multiplicity *; } } class MetadataTemplateRule { Integer position (REQUIRED); Boolean required (REQUIRED); Boolean readOnly (REQUIRED); } relation TemplateRule { MetadataTemplate playsRole template; MetadataTemplateRule playsRole rule { multiplicity *; } } relation KeyRule { MetadataKey playsRole key; MetadataTemplateRule playsRole rule { multiplicity *; } } relation MetadataKeysTemplate { MetadataTemplate playsRole templates { multiplicity *; } MetadataKey playsRole keys { multiplicity *; } } relation DocumentMetadata { .module.fileManagement.domain.Document playsRole document { multiplicity 1; } Metadata playsRole metadata { multiplicity *; } } relation TemplateTemplates { MetadataTemplate playsRole parent; MetadataTemplate playsRole childs { multiplicity *; } } relation FileManagementMetadataKeys { .module.fileManagement.domain.FileManagementSystem playsRole fileManagementSystem; MetadataKey playsRole metadataKeys { multiplicity *; } } relation FileManagementTemplates { .module.fileManagement.domain.FileManagementSystem playsRole fileManagementSystem; MetadataTemplate playsRole metadataTemplates { multiplicity *; } } relation DirNodeTemplate { .module.fileManagement.domain.DirNode playsRole dirNode; MetadataTemplate playsRole defaultTemplate; }