summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/com/speedment/examples/socialserver/Server.java213
1 files changed, 104 insertions, 109 deletions
diff --git a/src/main/java/com/speedment/examples/socialserver/Server.java b/src/main/java/com/speedment/examples/socialserver/Server.java
index 9276a13..0407e3a 100644
--- a/src/main/java/com/speedment/examples/socialserver/Server.java
+++ b/src/main/java/com/speedment/examples/socialserver/Server.java
@@ -27,58 +27,58 @@ import java.util.stream.Stream;
public class Server extends ServerBase {
protected final Random random = new SecureRandom();
- private final Map<String, Long> sessions = new HashMap<>();
-
+ private final Map<String, Long> sessions = new HashMap<>();
+
private final Speedment speed;
-
+
private final Manager<User> users;
private final Manager<Image> images;
private final Manager<Link> links;
-
+
private final JsonEncoder<User> jsonUserEncoder;
private final JsonEncoder<Image> jsonImageEncoder;
-
- public Server() {
- speed = new SocialnetworkApplication().build();
- users = speed.managerOf(User.class);
+
+ public Server() {
+ speed = new SocialnetworkApplication().build();
+ users = speed.managerOf(User.class);
images = speed.managerOf(Image.class);
- links = speed.managerOf(Link.class);
-
+ links = speed.managerOf(Link.class);
+
jsonUserEncoder = JsonEncoder.allOf(users)
- .remove(User.PASSWORD);
-
+ .remove(User.PASSWORD);
+
jsonImageEncoder = JsonEncoder
- .allOf(images)
- .put(Image.UPLOADER,
- JsonEncoder.allOf(users)
- .remove(User.AVATAR)
- .remove(User.PASSWORD)
- );
- }
-
+ .allOf(images)
+ .put(Image.UPLOADER,
+ JsonEncoder.allOf(users)
+ .remove(User.AVATAR)
+ .remove(User.PASSWORD)
+ );
+ }
+
private String createSession(User user) {
- final String key = nextSessionId();
- sessions.put(key, user.getId());
- return key;
- }
-
- private Optional<User> getLoggedIn(String key) {
+ final String key = nextSessionId();
+ sessions.put(key, user.getId());
+ return key;
+ }
+
+ private Optional<User> getLoggedIn(String key) {
final Optional<Long> userId = Optional.ofNullable(sessions.get(key));
-
- return userId.flatMap(id ->
- users.stream()
+
+ return userId.flatMap(id
+ -> users.stream()
.filter(User.ID.equal(id))
.findAny()
);
- }
+ }
@Override
public String onRegister(String mail, String password) {
try {
return createSession(users.newInstance()
- .setMail(mail)
- .setPassword(password)
- .persist()
+ .setMail(mail)
+ .setPassword(password)
+ .persist()
);
} catch (SpeedmentException ex) {
return "false";
@@ -88,148 +88,143 @@ public class Server extends ServerBase {
@Override
public String onLogin(String mail, String password) {
return users.stream()
- .filter(User.MAIL.equalIgnoreCase(mail))
- .filter(User.PASSWORD.equal(password))
- .findAny()
- .map(this::createSession)
- .orElse("false")
- ;
+ .filter(User.MAIL.equalIgnoreCase(mail))
+ .filter(User.PASSWORD.equal(password))
+ .findAny()
+ .map(this::createSession)
+ .orElse("false");
}
@Override
public String onSelf(String sessionKey) {
return getLoggedIn(sessionKey)
- .map(jsonUserEncoder::apply)
- .orElse("false");
+ .map(jsonUserEncoder::apply)
+ .orElse("false");
}
@Override
public String onUpload(String title, String description, String imgData, String sessionKey) {
final Optional<User> user = getLoggedIn(sessionKey);
-
+
if (user.isPresent()) {
try {
images.newInstance()
- .setTitle(title)
- .setDescription(description)
- .setImgData(imgData)
- .setUploader(user.get().getId())
- .setUploaded(Timestamp.from(Instant.now()))
- .persist();
-
+ .setTitle(title)
+ .setDescription(description)
+ .setImgData(imgData)
+ .setUploader(user.get().getId())
+ .setUploaded(Timestamp.from(Instant.now()))
+ .persist();
+
return "true";
} catch (SpeedmentException ex) {
return "false";
}
}
-
+
return "false";
}
@Override
public String onFind(String freeText, String sessionKey) {
final Optional<User> user = getLoggedIn(sessionKey);
-
+
if (user.isPresent()) {
final User me = user.get();
-
+
final Stream<User> found = users.stream()
- // If the freetext matches any field.
- .filter(
- User.FIRSTNAME.startsWith(freeText).or(
- User.LASTNAME.startsWith(freeText)).or(
- User.MAIL.startsWith(freeText))
- )
-
- // And this is not us.
- .filter(User.ID.notEqual(me.getId()))
-
- // Remove people we already follow
- .filter(them -> !me.findLinksByFollower()
- .anyMatch(Link.FOLLOWS.equal(them.getId()))
- )
-
- // Limit result to 10 persons.
- .limit(10);
-
+ // If the freetext matches any field.
+ .filter(
+ User.FIRSTNAME.startsWith(freeText).or(
+ User.LASTNAME.startsWith(freeText)).or(
+ User.MAIL.startsWith(freeText))
+ )
+ // And this is not us.
+ .filter(User.ID.notEqual(me.getId()))
+ // Remove people we already follow
+ .filter(them -> !me.findLinksByFollower()
+ .anyMatch(Link.FOLLOWS.equal(them.getId()))
+ )
+ // Limit result to 10 persons.
+ .limit(10);
+
final String result = found
- .map(jsonUserEncoder::apply)
- .collect(joining(", "));
-
+ .map(jsonUserEncoder::apply)
+ .collect(joining(", "));
+
return "{\"users\":[" + result + "]}";
}
-
+
return "false";
}
@Override
public String onFollow(long userId, String sessionKey) {
final Optional<User> user = getLoggedIn(sessionKey);
-
+
if (user.isPresent()) {
final User me = user.get();
-
+
try {
links.newInstance()
- .setFollower(me.getId())
- .setFollows(userId)
- .persist();
-
+ .setFollower(me.getId())
+ .setFollows(userId)
+ .persist();
+
return "true";
} catch (SpeedmentException ex) {
return "false";
}
}
-
+
return "false";
}
@Override
public String onBrowse(String sessionKey, Optional<Timestamp> from, Optional<Timestamp> to) {
final Optional<User> user = getLoggedIn(sessionKey);
-
+
if (user.isPresent()) {
final User me = user.get();
-
+
final Stream<User> visibleUsers = Stream.concat(
- Stream.of(me),
- me.findLinksByFollower().map(Link::findFollows)
+ Stream.of(me),
+ me.findLinksByFollower().map(Link::findFollows)
);
-
- final Stream<Image> images = visibleUsers
- .flatMap(User::findImages)
- .filter(img -> !from.isPresent() || img.getUploaded().after(from.get()))
- .filter(img -> !to.isPresent() || img.getUploaded().before(to.get()))
- ;
-
- final String result = images
- .map(jsonImageEncoder::apply)
- .collect(joining(","));
-
+
+ final Stream<Image> imagesToBrowse = visibleUsers
+ .flatMap(User::findImages)
+ .filter(img -> !from.isPresent() || img.getUploaded().after(from.get()))
+ .filter(img -> !to.isPresent() || img.getUploaded().before(to.get()));
+
+ final String result = imagesToBrowse
+ .map(jsonImageEncoder::apply)
+ .collect(joining(","));
+
return "{\"images\":[" + result + "]}";
}
-
+
return "false";
}
@Override
- public String onUpdate(String mail, String firstname, String lastName,
- Optional<String> avatar, String sessionKey) {
-
+ public String onUpdate(String mail, String firstname, String lastName,
+ Optional<String> avatar, String sessionKey) {
+
final Optional<User> user = getLoggedIn(sessionKey);
-
+
if (user.isPresent()) {
final User me = user.get();
-
+
final User copy = me.copy()
- .setMail(mail)
- .setFirstName(firstname)
- .setLastName(lastName);
-
+ .setMail(mail)
+ .setFirstName(firstname)
+ .setLastName(lastName);
+
if (avatar.isPresent()) {
copy.setAvatar(avatar.get());
}
-
+
try {
final User updated = copy.update();
return jsonUserEncoder.apply(updated);
@@ -237,7 +232,7 @@ public class Server extends ServerBase {
return "false";
}
}
-
+
return "false";
}
@@ -251,4 +246,4 @@ public class Server extends ServerBase {
public static void main(String... args) {
ServerRunner.run(Server.class);
}
-} \ No newline at end of file
+}