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; | |
} | |
} | |
} | |
} |