diff --git a/pages/js/message.js b/pages/js/message.js index d1cbd2d..cbcd0cb 100644 --- a/pages/js/message.js +++ b/pages/js/message.js @@ -1,4 +1,34 @@ -$('#msginput').keypress(function(e) { - if (e.which == '\r'.charCodeAt(0)) - document.write(document.getElementById("msginput").value); -}); +var respfunc = function (result) { + if (result.responseText != "Success") { + var errormsg = document.getElementById("errormsg"); + errormsg.innerHTML = result.responseText; + errormsg.style = "display: block"; + } + else + location.reload(true); +} + +var sendmsgonenter = function (e) { //TODO: Detect Enter + console.log("A"); + var code = e.keyCode || e.which; + if (code != 13) { //Enter keycode + return; + } + console.log("B"); + var textarea = event.target; + window.convid = 0; + var json = JSON.stringify({"message": textarea.value, "conversation": window.convid}); + $.ajax({ + url: "/message", data: json, method: "POST", success: respfunc, error: respfunc + }); +}; + +$(document).bind("ready", function () { + console.log("X"); + $('#msginput').keypress = sendmsgonenter; +}); + +console.log(respfunc); +console.log(sendmsgonenter); + +$('#msginput').bind("keypress", sendmsgonenter); diff --git a/src/io/github/norbipeti/chat/server/db/domain/Conversation.java b/src/io/github/norbipeti/chat/server/db/domain/Conversation.java index 77a519e..6ecd880 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/Conversation.java +++ b/src/io/github/norbipeti/chat/server/db/domain/Conversation.java @@ -1,51 +1,48 @@ -package io.github.norbipeti.chat.server.db.domain; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.*; - -@Entity -public class Conversation { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", unique = true, nullable = false) - private Long id; - @ElementCollection(fetch=FetchType.EAGER) - @OneToMany(cascade = CascadeType.ALL) - private List messsages; - @ElementCollection(fetch = FetchType.EAGER) - @ManyToMany(cascade = CascadeType.ALL) - private List users; - @Version - @GeneratedValue - private int Version; - - public List getMesssages() { - if (messsages == null) - messsages = new ArrayList<>(); - return messsages; - } - - public void setMesssages(List messsages) { - this.messsages = messsages; - } - - public List getUsers() { - if (users == null) - users = new ArrayList<>(); - return users; - } - - public void setUsers(List users) { - this.users = users; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } -} +package io.github.norbipeti.chat.server.db.domain; + +import java.util.ArrayList; +import java.util.List; + +import javax.persistence.*; + +@Entity +public class Conversation { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", unique = true, nullable = false) + private Long id; + @ElementCollection(fetch=FetchType.EAGER) + @OneToMany(cascade = CascadeType.ALL) + private List messsages; + @ElementCollection(fetch = FetchType.EAGER) + @ManyToMany(cascade = CascadeType.ALL) + private List users; + + public List getMesssages() { + if (messsages == null) + messsages = new ArrayList<>(); + return messsages; + } + + public void setMesssages(List messsages) { + this.messsages = messsages; + } + + public List getUsers() { + if (users == null) + users = new ArrayList<>(); + return users; + } + + public void setUsers(List users) { + this.users = users; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/src/io/github/norbipeti/chat/server/db/domain/Message.java b/src/io/github/norbipeti/chat/server/db/domain/Message.java index 45ff93f..5e40261 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/Message.java +++ b/src/io/github/norbipeti/chat/server/db/domain/Message.java @@ -1,62 +1,61 @@ -package io.github.norbipeti.chat.server.db.domain; - -import java.util.Date; - -import javax.persistence.*; - -@Entity -public class Message { - @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - @Column(name = "id", unique = true, nullable = false) - private Long id; - @ManyToOne(cascade=CascadeType.ALL) - private User sender; - private Date time; - private String message; - @ManyToOne(cascade=CascadeType.ALL) - private Conversation conversation; - @Version - @GeneratedValue - private int Version; - - public User getSender() { - return sender; - } - - public void setSender(User sender) { - this.sender = sender; - } - - public Date getTime() { - return time; - } - - public void setTime(Date time) { - this.time = time; - } - - public String getMessage() { - return message; - } - - public void setMessage(String message) { - this.message = message; - } - - public Conversation getConversation() { - return conversation; - } - - public void setConversation(Conversation conversation) { - this.conversation = conversation; - } - - public Long getId() { - return id; - } - - public void setId(Long id) { - this.id = id; - } -} +package io.github.norbipeti.chat.server.db.domain; + +import java.util.Date; + +import javax.persistence.*; + +@Entity +public class Message { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "id", unique = true, nullable = false) + private Long id; + @ManyToOne(cascade=CascadeType.ALL) + //@JoinTable(name="user_message") + private User sender; + private Date time; + private String message; + @ManyToOne(cascade=CascadeType.ALL) + //@JoinTable(name="conversation_message") + private Conversation conversation; + + public User getSender() { + return sender; + } + + public void setSender(User sender) { + this.sender = sender; + } + + public Date getTime() { + return time; + } + + public void setTime(Date time) { + this.time = time; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + public Conversation getConversation() { + return conversation; + } + + public void setConversation(Conversation conversation) { + this.conversation = conversation; + } + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } +} diff --git a/src/io/github/norbipeti/chat/server/db/domain/User.java b/src/io/github/norbipeti/chat/server/db/domain/User.java index f549c22..1657d3b 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/User.java +++ b/src/io/github/norbipeti/chat/server/db/domain/User.java @@ -2,6 +2,8 @@ package io.github.norbipeti.chat.server.db.domain; import java.util.ArrayList; import java.util.List; + +import javax.annotation.Generated; import javax.persistence.*; @Entity @@ -20,9 +22,6 @@ public class User { //@Column(columnDefinition = "CHAR(16) FOR BIT DATA") @Column(columnDefinition="VARCHAR(64)") private String sessionid; - @Version - @GeneratedValue - private int Version; @ElementCollection(fetch = FetchType.EAGER) @ManyToMany(cascade = CascadeType.ALL) public List conversations; diff --git a/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java b/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java index 235496f..f1ccab2 100644 --- a/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java +++ b/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java @@ -1,9 +1,19 @@ package io.github.norbipeti.chat.server.page; import java.io.IOException; +import java.util.Date; +import java.util.HashMap; +import java.util.List; + +import org.json.JSONObject; import com.sun.net.httpserver.HttpExchange; +import io.github.norbipeti.chat.server.IOHelper; +import io.github.norbipeti.chat.server.db.domain.Conversation; +import io.github.norbipeti.chat.server.db.domain.Message; +import io.github.norbipeti.chat.server.db.domain.User; + public class MessageAjaxPage extends Page { @Override @@ -13,7 +23,26 @@ public class MessageAjaxPage extends Page { @Override public void handlePage(HttpExchange exchange) throws IOException { - + User user = IOHelper.GetLoggedInUser(exchange); + if (user == null) { + IOHelper.SendResponse(403, "

Please log in to send messages

", exchange); + return; //TODO: Fix sending messages + } + JSONObject obj = IOHelper.GetPOSTJSON(exchange); + if (obj == null) { + IOHelper.SendResponse(400, "

400 Bad request

Not a JSON string!

", exchange); + return; + } + String message = obj.getString("message"); + int conversation = obj.getInt("conversation"); + List convos = user.getConversations(); + Conversation convo = convos.get(conversation); + Message msg = new Message(); + msg.setSender(user); + msg.setMessage(message); + msg.setTime(new Date()); + convo.getMesssages().add(msg); + IOHelper.SendResponse(200, "Success", exchange); } }