CSS, added temp fake login; trying to get the database to work
This commit is contained in:
parent
6ee360df0b
commit
5e57613bda
10 changed files with 225 additions and 105 deletions
|
@ -2,17 +2,10 @@
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="588ba1ca-220a-4913-8e8c-5657fa1c845f" name="Default" comment="">
|
<list default="true" id="588ba1ca-220a-4913-8e8c-5657fa1c845f" name="Default" comment="">
|
||||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/js/register.js" />
|
|
||||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/js/utils.js" />
|
|
||||||
<change type="DELETED" beforePath="$PROJECT_DIR$/register.html" afterPath="" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||||
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/css/style.css" afterPath="$PROJECT_DIR$/css/style.css" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/index.html" afterPath="$PROJECT_DIR$/index.html" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/index.html" afterPath="$PROJECT_DIR$/index.html" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/login.js" afterPath="$PROJECT_DIR$/js/login.js" />
|
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/login.js" afterPath="$PROJECT_DIR$/js/login.js" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/IOHelper.java" afterPath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/IOHelper.java" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/Main.java" afterPath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/Main.java" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/db/DataProvider.java" afterPath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/db/DataProvider.java" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/page/LoginPage.java" afterPath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/page/LoginPage.java" />
|
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/page/RegisterPage.java" afterPath="$PROJECT_DIR$/../src/io/github/norbipeti/chat/server/page/RegisterPage.java" />
|
|
||||||
</list>
|
</list>
|
||||||
<ignored path="pages.iws" />
|
<ignored path="pages.iws" />
|
||||||
<ignored path=".idea/workspace.xml" />
|
<ignored path=".idea/workspace.xml" />
|
||||||
|
@ -36,8 +29,8 @@
|
||||||
<file leaf-file-name="index.html" pinned="false" current-in-tab="false">
|
<file leaf-file-name="index.html" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/index.html">
|
<entry file="file://$PROJECT_DIR$/index.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="193">
|
<state relative-caret-position="1043">
|
||||||
<caret line="48" column="20" selection-start-line="48" selection-start-column="20" selection-end-line="48" selection-end-column="20" />
|
<caret line="82" column="30" selection-start-line="82" selection-start-column="30" selection-end-line="82" selection-end-column="30" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -56,8 +49,8 @@
|
||||||
<file leaf-file-name="login.js" pinned="false" current-in-tab="false">
|
<file leaf-file-name="login.js" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/js/login.js">
|
<entry file="file://$PROJECT_DIR$/js/login.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="187">
|
<state relative-caret-position="153">
|
||||||
<caret line="13" column="38" selection-start-line="13" selection-start-column="38" selection-end-line="13" selection-end-column="38" />
|
<caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="n#!!doc;n#login#0" expanded="false" />
|
<element signature="n#!!doc;n#login#0" expanded="false" />
|
||||||
</folding>
|
</folding>
|
||||||
|
@ -80,8 +73,8 @@
|
||||||
<file leaf-file-name="style.css" pinned="false" current-in-tab="false">
|
<file leaf-file-name="style.css" pinned="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/css/style.css">
|
<entry file="file://$PROJECT_DIR$/css/style.css">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="17">
|
<state relative-caret-position="91">
|
||||||
<caret line="1" column="27" selection-start-line="1" selection-start-column="27" selection-end-line="1" selection-end-column="27" />
|
<caret line="19" column="24" selection-start-line="19" selection-start-column="24" selection-end-line="19" selection-end-column="24" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
@ -138,12 +131,12 @@
|
||||||
<option value="$PROJECT_DIR$/userbox.html" />
|
<option value="$PROJECT_DIR$/userbox.html" />
|
||||||
<option value="$PROJECT_DIR$/js/userbox.js" />
|
<option value="$PROJECT_DIR$/js/userbox.js" />
|
||||||
<option value="$PROJECT_DIR$/js/message.js" />
|
<option value="$PROJECT_DIR$/js/message.js" />
|
||||||
<option value="$PROJECT_DIR$/css/style.css" />
|
|
||||||
<option value="$PROJECT_DIR$/register.html" />
|
<option value="$PROJECT_DIR$/register.html" />
|
||||||
<option value="$PROJECT_DIR$/js/utils.js" />
|
<option value="$PROJECT_DIR$/js/utils.js" />
|
||||||
<option value="$PROJECT_DIR$/index.html" />
|
|
||||||
<option value="$PROJECT_DIR$/js/register.js" />
|
<option value="$PROJECT_DIR$/js/register.js" />
|
||||||
<option value="$PROJECT_DIR$/js/login.js" />
|
<option value="$PROJECT_DIR$/js/login.js" />
|
||||||
|
<option value="$PROJECT_DIR$/css/style.css" />
|
||||||
|
<option value="$PROJECT_DIR$/index.html" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
|
@ -258,7 +251,7 @@
|
||||||
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
<property name="last_opened_file_path" value="$PROJECT_DIR$" />
|
||||||
<property name="WebServerToolWindowFactoryState" value="false" />
|
<property name="WebServerToolWindowFactoryState" value="false" />
|
||||||
<property name="HbShouldOpenHtmlAsHb" value="" />
|
<property name="HbShouldOpenHtmlAsHb" value="" />
|
||||||
<property name="settings.editor.selected.configurable" value="fileTemplates" />
|
<property name="settings.editor.selected.configurable" value="preferences.toDoOptions" />
|
||||||
<property name="settings.editor.splitter.proportion" value="0.2" />
|
<property name="settings.editor.splitter.proportion" value="0.2" />
|
||||||
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth0" value="72" />
|
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatWidth0" value="72" />
|
||||||
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder0" value="0" />
|
<property name="FileHistory.git4idea.history.GitHistoryProvider_flatOrder0" value="0" />
|
||||||
|
@ -369,12 +362,12 @@
|
||||||
<updated>1469522327377</updated>
|
<updated>1469522327377</updated>
|
||||||
<workItem from="1469522328775" duration="6392000" />
|
<workItem from="1469522328775" duration="6392000" />
|
||||||
<workItem from="1469535953166" duration="2597000" />
|
<workItem from="1469535953166" duration="2597000" />
|
||||||
<workItem from="1469602650261" duration="7736000" />
|
<workItem from="1469602650261" duration="15397000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
<component name="TimeTrackingManager">
|
<component name="TimeTrackingManager">
|
||||||
<option name="totallyTimeSpent" value="16725000" />
|
<option name="totallyTimeSpent" value="24386000" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ToolWindowManager">
|
<component name="ToolWindowManager">
|
||||||
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
|
<frame x="-8" y="-8" width="1936" height="1056" extended-state="6" />
|
||||||
|
@ -515,14 +508,6 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/css/style.css">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state relative-caret-position="17">
|
|
||||||
<caret line="1" column="27" selection-start-line="1" selection-start-column="27" selection-end-line="1" selection-end-column="27" />
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/js/utils.js">
|
<entry file="file://$PROJECT_DIR$/js/utils.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="187">
|
<state relative-caret-position="187">
|
||||||
|
@ -541,18 +526,26 @@
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/css/style.css">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state relative-caret-position="91">
|
||||||
|
<caret line="19" column="24" selection-start-line="19" selection-start-column="24" selection-end-line="19" selection-end-column="24" />
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/index.html">
|
<entry file="file://$PROJECT_DIR$/index.html">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="193">
|
<state relative-caret-position="1043">
|
||||||
<caret line="48" column="20" selection-start-line="48" selection-start-column="20" selection-end-line="48" selection-end-column="20" />
|
<caret line="82" column="30" selection-start-line="82" selection-start-column="30" selection-end-line="82" selection-end-column="30" />
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/js/login.js">
|
<entry file="file://$PROJECT_DIR$/js/login.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state relative-caret-position="187">
|
<state relative-caret-position="153">
|
||||||
<caret line="13" column="38" selection-start-line="13" selection-start-column="38" selection-end-line="13" selection-end-column="38" />
|
<caret line="11" column="13" selection-start-line="11" selection-start-column="13" selection-end-line="11" selection-end-column="13" />
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="n#!!doc;n#login#0" expanded="false" />
|
<element signature="n#!!doc;n#login#0" expanded="false" />
|
||||||
</folding>
|
</folding>
|
||||||
|
|
|
@ -5,3 +5,40 @@ body {
|
||||||
#errormsg, #successmsg {
|
#errormsg, #successmsg {
|
||||||
display: none;
|
display: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#errormsg {
|
||||||
|
background-color: #8c0000;
|
||||||
|
border-color: #ff0000;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
color: #ff0000;
|
||||||
|
}
|
||||||
|
|
||||||
|
#successmsg {
|
||||||
|
background-color: #188c00;
|
||||||
|
border-color: #00ff00;
|
||||||
|
border-style: solid;
|
||||||
|
border-width: 2px;
|
||||||
|
color: #00ff00;
|
||||||
|
}
|
||||||
|
|
||||||
|
#sidebar {
|
||||||
|
float: right;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#loginregisterbox {
|
||||||
|
margin: auto;
|
||||||
|
width: 300px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#usercontent {
|
||||||
|
margin: auto;
|
||||||
|
width: 75%;
|
||||||
|
}
|
||||||
|
|
||||||
|
#msginput {
|
||||||
|
width: 100%;
|
||||||
|
height: 30px;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
|
@ -9,14 +9,17 @@
|
||||||
<link rel="stylesheet" href="css/style.css"/>
|
<link rel="stylesheet" href="css/style.css"/>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<h1>Index</h1>
|
<div id="errormsg">
|
||||||
|
</div>
|
||||||
|
<div id="sidebar">
|
||||||
<div id="userbox">
|
<div id="userbox">
|
||||||
Logged in as
|
Logged in as
|
||||||
<username/>
|
<username/>
|
||||||
</div>
|
</div>
|
||||||
<div id="errormsg">
|
|
||||||
</div>
|
</div>
|
||||||
|
<div id="loginregisterbox">
|
||||||
<div id="loginbox">
|
<div id="loginbox">
|
||||||
|
<h2>Login</h2>
|
||||||
<form>
|
<form>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -31,11 +34,16 @@
|
||||||
<input type="password" name="pass">
|
<input type="password" name="pass">
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
<input type="button" value="Login" onclick="login(this.form)">
|
<input type="button" value="Login" onclick="login(this.form)">
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="registerbox">
|
<div id="registerbox">
|
||||||
|
<h2>Register</h2>
|
||||||
<form>
|
<form>
|
||||||
<table>
|
<table>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -70,5 +78,9 @@
|
||||||
</table>
|
</table>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<input id="msginput" value=""/>
|
</div>
|
||||||
|
<div id="usercontent">
|
||||||
|
<div id="channelmessages"></div>
|
||||||
|
<textarea id="msginput"></textarea>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/**
|
/**
|
||||||
* Created by Norbi on 2016-07-26.
|
* Created by Norbi on 2016-07-26.
|
||||||
*/
|
*/
|
||||||
function login(form) {
|
function login(form) { //TODO: Detect Enter
|
||||||
var json = JSON.stringify(getFormData($(form)));
|
var json = JSON.stringify(getFormData($(form)));
|
||||||
$.ajax({
|
$.ajax({
|
||||||
url: "/login", data: json, method: "POST", success: function (result) {
|
url: "/login", data: json, method: "POST", success: function (result) {
|
||||||
|
|
|
@ -3,6 +3,9 @@ package io.github.norbipeti.chat.server;
|
||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.net.InetAddress;
|
import java.net.InetAddress;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.apache.logging.log4j.Level;
|
import org.apache.logging.log4j.Level;
|
||||||
|
@ -28,27 +31,47 @@ public class Main {
|
||||||
try { // rt.jar Javadoc:
|
try { // rt.jar Javadoc:
|
||||||
// https://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/
|
// https://docs.oracle.com/javase/8/docs/jre/api/net/httpserver/spec/
|
||||||
// https://docs.oracle.com/javase/8/docs/api/
|
// https://docs.oracle.com/javase/8/docs/api/
|
||||||
System.out.println(System.getProperty("java.class.path")); //TODO: log4j
|
System.out.println(System.getProperty("java.class.path")); // TODO:
|
||||||
|
// log4j
|
||||||
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
|
LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
|
||||||
Configuration config = ctx.getConfiguration();
|
Configuration config = ctx.getConfiguration();
|
||||||
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
|
LoggerConfig loggerConfig = config.getLoggerConfig(LogManager.ROOT_LOGGER_NAME);
|
||||||
loggerConfig.setLevel(Level.WARN);
|
loggerConfig.setLevel(Level.WARN);
|
||||||
ctx.updateLoggers(); // This causes all Loggers to refetch information from their LoggerConfig.
|
ctx.updateLoggers(); // This causes all Loggers to refetch
|
||||||
|
// information from their LoggerConfig.
|
||||||
System.out.println("Loading database...");
|
System.out.println("Loading database...");
|
||||||
try (DataProvider provider = new DataProvider()) {
|
try (DataProvider provider = new DataProvider()) {
|
||||||
User user = new User();
|
User user = new User();
|
||||||
user.setName("asd");
|
user.setName("asd");
|
||||||
user.setEmail("test@test.com");
|
user.setEmail("test@test.com");
|
||||||
provider.addUser(user);
|
|
||||||
User user2 = new User();
|
User user2 = new User();
|
||||||
user2.setName("Teszt");
|
user2.setName("Teszt");
|
||||||
user2.setEmail("test2@test.com");
|
user2.setEmail("test2@test.com");
|
||||||
user2.getContacts().add(user);
|
user2.getContacts().add(user);
|
||||||
|
provider.addUser(user);
|
||||||
|
List<User> users = provider.getUsers();
|
||||||
|
user = users.get(0);
|
||||||
user.getContacts().add(user2);
|
user.getContacts().add(user2);
|
||||||
provider.addUser(user2);
|
provider.addUser(user2);
|
||||||
System.out.println(provider.getUsers());
|
users = provider.getUsers();
|
||||||
|
user2 = users.get(1);
|
||||||
|
System.out.println(users);
|
||||||
System.out.println("1st's contact: " + user.getContacts().get(0));
|
System.out.println("1st's contact: " + user.getContacts().get(0));
|
||||||
System.out.println("2nd's contact: " + user2.getContacts().get(0));
|
System.out.println("2nd's contact: " + user2.getContacts().get(0));
|
||||||
|
Conversation convo = new Conversation();
|
||||||
|
convo.getUsers().add(user);
|
||||||
|
convo.getUsers().add(user2);
|
||||||
|
Message msg = new Message();
|
||||||
|
msg.setSender(user);
|
||||||
|
msg.setTime(new Date());
|
||||||
|
msg.setMessage("Teszt 1");
|
||||||
|
convo.getMesssages().add(msg);
|
||||||
|
Message msg2 = new Message();
|
||||||
|
msg2.setSender(user2);
|
||||||
|
msg2.setTime(new Date());
|
||||||
|
msg2.setMessage("Teszt 2");
|
||||||
|
convo.getMesssages().add(msg2);
|
||||||
|
provider.addConversation(convo);
|
||||||
}
|
}
|
||||||
System.out.println("Starting webserver...");
|
System.out.println("Starting webserver...");
|
||||||
HttpServer server = HttpServer.create(new InetSocketAddress(InetAddress.getLocalHost(), 8080), 10);
|
HttpServer server = HttpServer.create(new InetSocketAddress(InetAddress.getLocalHost(), 8080), 10);
|
||||||
|
|
|
@ -19,6 +19,10 @@ public class DataProvider implements AutoCloseable {
|
||||||
save(user);
|
save(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void addConversation(Conversation convo) {
|
||||||
|
save(convo);
|
||||||
|
}
|
||||||
|
|
||||||
private void save(Object object) {
|
private void save(Object object) {
|
||||||
EntityManager em = emf.createEntityManager();
|
EntityManager em = emf.createEntityManager();
|
||||||
em.getTransaction().begin();
|
em.getTransaction().begin();
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
package io.github.norbipeti.chat.server.db.domain;
|
package io.github.norbipeti.chat.server.db.domain;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import javax.persistence.*;
|
import javax.persistence.*;
|
||||||
|
@ -10,14 +11,19 @@ public class Conversation {
|
||||||
@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
|
@ElementCollection(fetch=FetchType.EAGER)
|
||||||
@OneToMany
|
@OneToMany(cascade = CascadeType.ALL)
|
||||||
private List<Message> messsages;
|
private List<Message> messsages;
|
||||||
@ElementCollection
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
@OneToMany
|
@ManyToMany(cascade = CascadeType.ALL)
|
||||||
private List<User> users;
|
private List<User> users;
|
||||||
|
@Version
|
||||||
|
@GeneratedValue
|
||||||
|
private int Version;
|
||||||
|
|
||||||
public List<Message> getMesssages() {
|
public List<Message> getMesssages() {
|
||||||
|
if (messsages == null)
|
||||||
|
messsages = new ArrayList<>();
|
||||||
return messsages;
|
return messsages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +32,8 @@ public class Conversation {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<User> getUsers() {
|
public List<User> getUsers() {
|
||||||
|
if (users == null)
|
||||||
|
users = new ArrayList<>();
|
||||||
return users;
|
return users;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -10,12 +10,15 @@ public class Message {
|
||||||
@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
|
@ManyToOne(cascade=CascadeType.ALL)
|
||||||
private User sender;
|
private User sender;
|
||||||
private Date time;
|
private Date time;
|
||||||
private String message;
|
private String message;
|
||||||
@ManyToOne
|
@ManyToOne(cascade=CascadeType.ALL)
|
||||||
private Conversation conversation;
|
private Conversation conversation;
|
||||||
|
@Version
|
||||||
|
@GeneratedValue
|
||||||
|
private int Version;
|
||||||
|
|
||||||
public User getSender() {
|
public User getSender() {
|
||||||
return sender;
|
return sender;
|
||||||
|
|
|
@ -21,6 +21,12 @@ public class User {
|
||||||
private String salt;
|
private String salt;
|
||||||
@Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
@Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
||||||
private UUID sessionid;
|
private UUID sessionid;
|
||||||
|
@Version
|
||||||
|
@GeneratedValue
|
||||||
|
private int Version;
|
||||||
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
|
@ManyToMany(cascade = CascadeType.ALL)
|
||||||
|
public List<Conversation> conversations;
|
||||||
|
|
||||||
public List<User> getContacts() {
|
public List<User> getContacts() {
|
||||||
if (contacts == null)
|
if (contacts == null)
|
||||||
|
@ -93,6 +99,16 @@ public class User {
|
||||||
this.sessionid = sessionid;
|
this.sessionid = sessionid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Conversation> getConversations() {
|
||||||
|
if (conversations == null)
|
||||||
|
conversations = new ArrayList<>();
|
||||||
|
return conversations;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setConversations(List<Conversation> conversations) {
|
||||||
|
this.conversations = conversations;
|
||||||
|
}
|
||||||
|
|
||||||
public User() {
|
public User() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,28 +5,52 @@ import java.io.IOException;
|
||||||
import org.jsoup.nodes.Element;
|
import org.jsoup.nodes.Element;
|
||||||
|
|
||||||
import com.sun.net.httpserver.HttpExchange;
|
import com.sun.net.httpserver.HttpExchange;
|
||||||
|
import com.sun.net.ssl.internal.ssl.Provider;
|
||||||
|
|
||||||
import io.github.norbipeti.chat.server.IOHelper;
|
import io.github.norbipeti.chat.server.IOHelper;
|
||||||
|
import io.github.norbipeti.chat.server.db.DataProvider;
|
||||||
|
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;
|
import io.github.norbipeti.chat.server.db.domain.User;
|
||||||
|
|
||||||
public class IndexPage extends Page {
|
public class IndexPage extends Page {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void handlePage(HttpExchange exchange) throws IOException {
|
public void handlePage(HttpExchange exchange) throws IOException {
|
||||||
User user = IOHelper.GetLoggedInUser(exchange);
|
// final User user = IOHelper.GetLoggedInUser(exchange); - TODO
|
||||||
|
final User user = new User();
|
||||||
|
user.setEmail("test@test.com");
|
||||||
|
user.setName("Norbi");
|
||||||
|
user.setId(3L);
|
||||||
if (user == null)
|
if (user == null)
|
||||||
IOHelper.SendModifiedPage(200, this, (doc) -> {
|
IOHelper.SendModifiedPage(200, this, (doc) -> {
|
||||||
doc.getElementById("userbox").remove();
|
doc.getElementById("userbox").remove();
|
||||||
|
doc.getElementById("usercontent").remove();
|
||||||
return doc;
|
return doc;
|
||||||
}, exchange);
|
}, exchange);
|
||||||
else
|
else
|
||||||
IOHelper.SendModifiedPage(200, this, (doc) -> {
|
IOHelper.SendModifiedPage(200, this, (doc) -> {
|
||||||
doc.getElementById("loginbox").remove();
|
doc.getElementById("loginbox").remove();
|
||||||
|
doc.getElementById("registerbox").remove();
|
||||||
Element userbox = doc.getElementById("userbox");
|
Element userbox = doc.getElementById("userbox");
|
||||||
userbox.html(userbox.html().replace("<username />", user.getName()));
|
userbox.html(userbox.html().replace("<username />", user.getName()));
|
||||||
|
Element channelmessages = doc.getElementById("channelmessages");
|
||||||
|
try (DataProvider provider = new DataProvider()) {
|
||||||
|
Conversation convo = provider.getConversations().get(0); //TODO
|
||||||
|
for (Message message : convo.getMesssages()) {
|
||||||
|
Element msgelement = channelmessages.appendElement("div");
|
||||||
|
Element header = msgelement.appendElement("p");
|
||||||
|
header.text(message.getSender().getName() + " - " + message.getTime());
|
||||||
|
Element body = msgelement.appendElement("p");
|
||||||
|
body.text(message.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
return doc;
|
return doc;
|
||||||
}, exchange);
|
}, exchange);
|
||||||
} // TODO: Validation at registration
|
} // TODO:
|
||||||
|
// Validation
|
||||||
|
// at
|
||||||
|
// registration
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String GetName() {
|
public String GetName() {
|
||||||
|
|
Loading…
Reference in a new issue