package module.fileManagement.domain.log; class AbstractLog { DateTime timestamp; } class DirNodePath { } class FileLog extends AbstractLog { } class DirLog extends AbstractLog { } class CreateFileLog extends FileLog { } class CreateNewVersionLog extends FileLog { Integer versionNumber; } class DeleteFileLog extends FileLog { } class RecoverFileLog extends FileLog { } class ShareFileLog extends FileLog { String visibilityGroup; } class AccessFileLog extends FileLog {} class CreateDirLog extends DirLog { } class DeleteDirLog extends DirLog { } class RecoverDirLog extends DirLog { } class ShareDirLog extends DirLog { String visibilityGroup; } class UnshareDirLog extends ShareDirLog { } class UnshareFileLog extends ShareFileLog { } relation FileLogFileNode { FileLog playsRole fileLog { multiplicity *; } .module.fileManagement.domain.FileNode playsRole fileNode; } relation AbstractLogDirNode { AbstractLog playsRole targetLog { multiplicity *; } .module.fileManagement.domain.DirNode playsRole targetDirNode; } relation DirLogDirNode { DirLog playsRole dirLog { multiplicity *; } .module.fileManagement.domain.DirNode playsRole dirNode; } relation AbstractLogPath { AbstractLog playsRole ; DirNodePath playsRole targetPath; } relation DirNodePathNextPath { DirNodePath playsRole ; DirNodePath playsRole nextPath; } relation DirNodePathNode { DirNodePath playsRole ; .module.fileManagement.domain.AbstractFileNode playsRole node ; } relation AbstractLogUser { .pt.ist.bennu.core.domain.User playsRole user; AbstractLog playsRole operationLog { multiplicity *; } }