Db things and message sending
This commit is contained in:
parent
ea45675d56
commit
eb8eaa3834
5 changed files with 175 additions and 121 deletions
|
@ -1,4 +1,34 @@
|
||||||
$('#msginput').keypress(function(e) {
|
var respfunc = function (result) {
|
||||||
if (e.which == '\r'.charCodeAt(0))
|
if (result.responseText != "Success") {
|
||||||
document.write(document.getElementById("msginput").value);
|
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);
|
||||||
|
|
|
@ -1,51 +1,48 @@
|
||||||
package io.github.norbipeti.chat.server.db.domain;
|
package io.github.norbipeti.chat.server.db.domain;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class Conversation {
|
public class Conversation {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
@Column(name = "id", unique = true, nullable = false)
|
@Column(name = "id", unique = true, nullable = false)
|
||||||
private Long id;
|
private Long id;
|
||||||
@ElementCollection(fetch=FetchType.EAGER)
|
@ElementCollection(fetch=FetchType.EAGER)
|
||||||
@OneToMany(cascade = CascadeType.ALL)
|
@OneToMany(cascade = CascadeType.ALL)
|
||||||
private List<Message> messsages;
|
private List<Message> messsages;
|
||||||
@ElementCollection(fetch = FetchType.EAGER)
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
@ManyToMany(cascade = CascadeType.ALL)
|
@ManyToMany(cascade = CascadeType.ALL)
|
||||||
private List<User> users;
|
private List<User> users;
|
||||||
@Version
|
|
||||||
@GeneratedValue
|
public List<Message> getMesssages() {
|
||||||
private int Version;
|
if (messsages == null)
|
||||||
|
messsages = new ArrayList<>();
|
||||||
public List<Message> getMesssages() {
|
return messsages;
|
||||||
if (messsages == null)
|
}
|
||||||
messsages = new ArrayList<>();
|
|
||||||
return messsages;
|
public void setMesssages(List<Message> messsages) {
|
||||||
}
|
this.messsages = messsages;
|
||||||
|
}
|
||||||
public void setMesssages(List<Message> messsages) {
|
|
||||||
this.messsages = messsages;
|
public List<User> getUsers() {
|
||||||
}
|
if (users == null)
|
||||||
|
users = new ArrayList<>();
|
||||||
public List<User> getUsers() {
|
return users;
|
||||||
if (users == null)
|
}
|
||||||
users = new ArrayList<>();
|
|
||||||
return users;
|
public void setUsers(List<User> users) {
|
||||||
}
|
this.users = users;
|
||||||
|
}
|
||||||
public void setUsers(List<User> users) {
|
|
||||||
this.users = users;
|
public Long getId() {
|
||||||
}
|
return id;
|
||||||
|
}
|
||||||
public Long getId() {
|
|
||||||
return id;
|
public void setId(Long id) {
|
||||||
}
|
this.id = id;
|
||||||
|
}
|
||||||
public void setId(Long id) {
|
}
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,62 +1,61 @@
|
||||||
package io.github.norbipeti.chat.server.db.domain;
|
package io.github.norbipeti.chat.server.db.domain;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
public class Message {
|
public class Message {
|
||||||
@Id
|
@Id
|
||||||
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
@GeneratedValue(strategy = GenerationType.IDENTITY)
|
||||||
@Column(name = "id", unique = true, nullable = false)
|
@Column(name = "id", unique = true, nullable = false)
|
||||||
private Long id;
|
private Long id;
|
||||||
@ManyToOne(cascade=CascadeType.ALL)
|
@ManyToOne(cascade=CascadeType.ALL)
|
||||||
private User sender;
|
//@JoinTable(name="user_message")
|
||||||
private Date time;
|
private User sender;
|
||||||
private String message;
|
private Date time;
|
||||||
@ManyToOne(cascade=CascadeType.ALL)
|
private String message;
|
||||||
private Conversation conversation;
|
@ManyToOne(cascade=CascadeType.ALL)
|
||||||
@Version
|
//@JoinTable(name="conversation_message")
|
||||||
@GeneratedValue
|
private Conversation conversation;
|
||||||
private int Version;
|
|
||||||
|
public User getSender() {
|
||||||
public User getSender() {
|
return sender;
|
||||||
return sender;
|
}
|
||||||
}
|
|
||||||
|
public void setSender(User sender) {
|
||||||
public void setSender(User sender) {
|
this.sender = sender;
|
||||||
this.sender = sender;
|
}
|
||||||
}
|
|
||||||
|
public Date getTime() {
|
||||||
public Date getTime() {
|
return time;
|
||||||
return time;
|
}
|
||||||
}
|
|
||||||
|
public void setTime(Date time) {
|
||||||
public void setTime(Date time) {
|
this.time = time;
|
||||||
this.time = time;
|
}
|
||||||
}
|
|
||||||
|
public String getMessage() {
|
||||||
public String getMessage() {
|
return message;
|
||||||
return message;
|
}
|
||||||
}
|
|
||||||
|
public void setMessage(String message) {
|
||||||
public void setMessage(String message) {
|
this.message = message;
|
||||||
this.message = message;
|
}
|
||||||
}
|
|
||||||
|
public Conversation getConversation() {
|
||||||
public Conversation getConversation() {
|
return conversation;
|
||||||
return conversation;
|
}
|
||||||
}
|
|
||||||
|
public void setConversation(Conversation conversation) {
|
||||||
public void setConversation(Conversation conversation) {
|
this.conversation = conversation;
|
||||||
this.conversation = conversation;
|
}
|
||||||
}
|
|
||||||
|
public Long getId() {
|
||||||
public Long getId() {
|
return id;
|
||||||
return id;
|
}
|
||||||
}
|
|
||||||
|
public void setId(Long id) {
|
||||||
public void setId(Long id) {
|
this.id = id;
|
||||||
this.id = id;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
|
@ -2,6 +2,8 @@ package io.github.norbipeti.chat.server.db.domain;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import javax.annotation.Generated;
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
|
||||||
@Entity
|
@Entity
|
||||||
|
@ -20,9 +22,6 @@ public class User {
|
||||||
//@Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
//@Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
||||||
@Column(columnDefinition="VARCHAR(64)")
|
@Column(columnDefinition="VARCHAR(64)")
|
||||||
private String sessionid;
|
private String sessionid;
|
||||||
@Version
|
|
||||||
@GeneratedValue
|
|
||||||
private int Version;
|
|
||||||
@ElementCollection(fetch = FetchType.EAGER)
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
@ManyToMany(cascade = CascadeType.ALL)
|
@ManyToMany(cascade = CascadeType.ALL)
|
||||||
public List<Conversation> conversations;
|
public List<Conversation> conversations;
|
||||||
|
|
|
@ -1,9 +1,19 @@
|
||||||
package io.github.norbipeti.chat.server.page;
|
package io.github.norbipeti.chat.server.page;
|
||||||
|
|
||||||
import java.io.IOException;
|
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 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 {
|
public class MessageAjaxPage extends Page {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -13,7 +23,26 @@ public class MessageAjaxPage extends Page {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handlePage(HttpExchange exchange) throws IOException {
|
public void handlePage(HttpExchange exchange) throws IOException {
|
||||||
|
User user = IOHelper.GetLoggedInUser(exchange);
|
||||||
|
if (user == null) {
|
||||||
|
IOHelper.SendResponse(403, "<p>Please log in to send messages</p>", exchange);
|
||||||
|
return; //TODO: Fix sending messages
|
||||||
|
}
|
||||||
|
JSONObject obj = IOHelper.GetPOSTJSON(exchange);
|
||||||
|
if (obj == null) {
|
||||||
|
IOHelper.SendResponse(400, "<h1>400 Bad request</h1><p>Not a JSON string!</p>", exchange);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
String message = obj.getString("message");
|
||||||
|
int conversation = obj.getInt("conversation");
|
||||||
|
List<Conversation> 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue