Db things and message sending

This commit is contained in:
Norbi Peti 2016-07-28 15:04:24 +02:00
parent ea45675d56
commit eb8eaa3834
5 changed files with 175 additions and 121 deletions

View file

@ -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);

View file

@ -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;
}
}

View file

@ -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; }
} }
}

View file

@ -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;

View file

@ -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);
} }
} }