ocl constraint on collection size
up vote
0
down vote
favorite
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
add a comment |
up vote
0
down vote
favorite
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
draw of my situation
In the link above, we can see the class Student
and Class
. I want to make an invariant constraint to make sure a Student
can't register for more than 5 classes each sessionYear
.
With this constraint, I can determine if Student
as more than 5 classes
context Student
inv maxClassStudent: classTaken->collect(sessionYear)->size() < 6
But, what I want is to find the size for a collection formed only with the same sessionYear
. In other words, I wish to make a collection for every different sessionYear
to verify if, for that year, the Student
had less than 6 classes.
I thought that I could maybe make use of forAll(c1,c2|c1<>c2 implies c1.sessionYear <> c2.sessionYear)
or something similar to difference Class
based on its sessionYear
, but I can't seem to figure it out.
constraints ocl
constraints ocl
asked Nov 11 at 7:47
Takyon
105
105
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
Hard problems are often soluble by breaking them into smaller pieces...
let sessionYears = classTaken->collect(sessionYear)->asSet()
in sessionYears->forAll(sy | classTaken->select(sessionYear = sy)->size() < 6)
answered Nov 11 at 16:17
Ed Willink
29717
29717
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
add a comment |
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but withselect(sessionYear = sy)
, I get a collection for every differentsy
. Thanks a lot
– Takyon
Nov 11 at 19:45
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but with
select(sessionYear = sy)
, I get a collection for every different sy
. Thanks a lot– Takyon
Nov 11 at 19:45
oh, so the select is the answer here. I had a hard time figuring out how to break my collection into smaller pieces, but with
select(sessionYear = sy)
, I get a collection for every different sy
. Thanks a lot– Takyon
Nov 11 at 19:45
add a comment |
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53246801%2focl-constraint-on-collection-size%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown