From 9552d8c0445b64d9df3e1123fdd9057143a43274 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Wed, 8 Aug 2018 15:19:53 +0200
Subject: [PATCH] Finish relast variant creation.

- always use same accessors
- add workaround after switching from non-relast to relast build
---
 cp-to-solution.sh                             | 11 +++++++--
 solve/src/main/jastadd/Checking.jrag          |  6 ++---
 solve/src/main/jastadd/Refs.jadd.unused       | 24 +++++++++++++++++--
 .../SocialNetworkNamelookup.ast.unused        |  8 +++----
 .../de/tudresden/inf/st/ttc18live/Main.java   |  2 +-
 5 files changed, 39 insertions(+), 12 deletions(-)

diff --git a/cp-to-solution.sh b/cp-to-solution.sh
index 8625927..5d2df2e 100755
--- a/cp-to-solution.sh
+++ b/cp-to-solution.sh
@@ -17,7 +17,7 @@ function build_sed_deactivate() {
 function build_incremental() {
   #TODO
   name="$1-inc"
-  echo "Building $name"
+  echo ">> Building $name"
   build_sed_activate
   sed -i 's/--flush=full/--flush=api/g' solve/build.gradle
   sed -i 's/"--incremental=[^"]*"/"--incremental=param"/g' solve/build.gradle
@@ -29,7 +29,7 @@ function build_incremental() {
 function build_flushing() {
   #TODO
   name="$1-flush"
-  echo "Building $name"
+  echo ">> Building $name"
   build_sed_activate
   sed -i 's/--flush=api/--flush=full/g' solve/build.gradle
   sed -i 's/"--incremental=[^"]*"/"--incremental=none"/g' solve/build.gradle
@@ -87,6 +87,13 @@ sed -i 's/LiveContestDriverEMF/LiveContestDriverXml/' solve/build.gradle
 build "jastadd-ttc18-xml"
 
 revert_namelookup
+
+# workaround for failing build
+sleep 1
+./gradlew --console=plain preprocess jastadd build
+sleep 1
+./gradlew --console=plain preprocess jastadd build
+
 # Build jastadd-ttc18-xml
 sed -i 's/LiveContestDriverEMF/LiveContestDriverXml/' solve/build.gradle
 build "jastadd-ttc18-relast-xml"
diff --git a/solve/src/main/jastadd/Checking.jrag b/solve/src/main/jastadd/Checking.jrag
index 88cfb6e..b4dd7f5 100644
--- a/solve/src/main/jastadd/Checking.jrag
+++ b/solve/src/main/jastadd/Checking.jrag
@@ -40,9 +40,9 @@ aspect Checking {
   }
 
   eq User.isValid() {
-    return checkGeneralListValid(getFriendList(), "Friend") &&
-           checkGeneralListValid(getSubmissionList(), "Submission") &&
-           checkGeneralListValid(getLikeList(), "Like") && checkThat(getName() != null, "User" + getId() + ".Name == null");
+    return checkGeneralListValid(getFriends(), "Friend") &&
+           checkGeneralListValid(getSubmissions(), "Submission") &&
+           checkGeneralListValid(getLikes(), "Like") && checkThat(getName() != null, "User" + getId() + ".Name == null");
   }
 
   eq Submission.isValid() {
diff --git a/solve/src/main/jastadd/Refs.jadd.unused b/solve/src/main/jastadd/Refs.jadd.unused
index 53a7768..ac6e44f 100644
--- a/solve/src/main/jastadd/Refs.jadd.unused
+++ b/solve/src/main/jastadd/Refs.jadd.unused
@@ -1,4 +1,6 @@
 aspect NameLookup {
+
+  // accessor replica getFriends
   syn java.util.List<User> User.getFriends() {
     java.util.List<User> result = new java.util.ArrayList<>();
     for (UserRef userRef : getFriendRefList()) {
@@ -7,6 +9,24 @@ aspect NameLookup {
     return result;
   }
 
+  // accessor replica getLikes
+  syn java.util.List<Comment> User.getLikes() {
+    java.util.List<Comment> result = new java.util.ArrayList<>();
+    for (CommentRef commentRef : getLikeRefList()) {
+      result.add(commentRef.getComment());
+    }
+    return result;
+  }
+
+  // accessor replica getSubmissions
+  syn java.util.List<Submission> User.getSubmissions() {
+    java.util.List<Submission> result = new java.util.ArrayList<>();
+    for (SubmissionRef submissionRef : getSubmissionRefList()) {
+      result.add(submissionRef.getSubmission());
+    }
+    return result;
+  }
+
   syn java.util.List<User> Comment.getLikedByList() = socialNetwork().getLikedByMap().get(this);
 
   syn Map<Comment, java.util.List<User>> SocialNetwork.getLikedByMap() {
@@ -15,8 +35,8 @@ aspect NameLookup {
       result.put(comment, new java.util.ArrayList<>());
     }
     for (User user : getUserList()) {
-      for (CommentRef commentRef : user.getLikes()) {
-        result.get(commentRef.getComment()).add(user);
+      for (Comment comment : user.getLikes()) {
+        result.get(comment).add(user);
       }
     }
     return result;
diff --git a/solve/src/main/jastadd/SocialNetworkNamelookup.ast.unused b/solve/src/main/jastadd/SocialNetworkNamelookup.ast.unused
index 7156eec..f1b45cf 100644
--- a/solve/src/main/jastadd/SocialNetworkNamelookup.ast.unused
+++ b/solve/src/main/jastadd/SocialNetworkNamelookup.ast.unused
@@ -1,12 +1,12 @@
 abstract ModelElement ::= <Id:Long> ;
 SocialNetwork : ModelElement ::= User* Post* ;
 
-User:ModelElement ::= <Name:String> ;
+User:ModelElement ::= <Name:String> FriendRef:UserRef* SubmissionRef:SubmissionRef* LikeRef:CommentRef* ;
 
 abstract Submission : ModelElement ::= <Timestamp:Long> <Content:String> Comment* ;
 Comment : Submission ::= ;
 Post : Submission ::= ;
 
-rel User.Friend* -> User ;
-rel User.Submission* -> Submission ;
-rel User.Like* <-> Comment.LikedBy* ;
+UserRef ::= <User:User> ;
+CommentRef ::= <Comment:Comment> ;
+SubmissionRef ::= <Submission:Submission> ;
diff --git a/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java b/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java
index d899e4b..908fbc0 100644
--- a/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java
+++ b/solve/src/main/java/de/tudresden/inf/st/ttc18live/Main.java
@@ -199,7 +199,7 @@ public class Main {
       logger.debug("{} likedBy {}", comment, comment.getLikedByList());
       for (User user : comment.getLikedByList()) {
         logger.debug("{} and {}: {}", comment, user, user.getCommentLikerFriends(comment));
-        logger.debug("{} friends: {}", user, printList(user.getFriendList()));
+        logger.debug("{} friends: {}", user, printList(user.getFriends()));
         // check that commentLikers are all friends
       }
     }
-- 
GitLab