| context File { | |
| constraint HasName { | |
| check : self.name.isDefined() | |
| message : 'Unnamed ' + self.eClass().name + | |
| ' not allowed' | |
| fix { | |
| title : 'Create another file' | |
| do { | |
| var f : new File; | |
| f.name = 'New file'; | |
| self.eContainer().contents.add(f); | |
| } | |
| } | |
| } | |
| } | |
| context Folder { | |
| /* | |
| constraint NoContentWithSameName { | |
| check { | |
| for (c in self.contents) { | |
| if (self.contents->select(c|c.name = self.name) > 1) { | |
| return false; | |
| } | |
| } | |
| return true; | |
| } | |
| }*/ | |
| critique NameStartsWithCapital { | |
| guard : self.satisfies('HasName') | |
| check { | |
| var nameToUpperCase = self.name.firstToUpperCase(); | |
| return nameToUpperCase = self.name; | |
| } | |
| message : 'Folder ' + self.name + | |
| ' should start with an upper-case letter' | |
| fix { | |
| title : 'Rename to ' + | |
| self.name.firstToUpperCase() | |
| do { | |
| self.name := self.name.firstToUpperCase(); | |
| } | |
| } | |
| } | |
| } | |
| context Sync { | |
| constraint MustLinkSame { | |
| check : self.source.eClass() = self.target.eClass() | |
| message : 'Cannot synchronize a ' + self.source.eClass().name | |
| + ' with a ' + self.target.eClass().name | |
| fix { | |
| title : 'Synchronize with another ' + | |
| self.source.eClass().name | |
| do { | |
| var target := UserInput.choose('Select target', | |
| _Model.getAllOfType(self.source.eClass().name)); | |
| if (target.isDefined()) self.target := target; | |
| } | |
| } | |
| } | |
| } |