diff --git a/src/io/github/norbipeti/chat/server/Main.java b/src/io/github/norbipeti/chat/server/Main.java index 81fa82a..dd0c6a5 100644 --- a/src/io/github/norbipeti/chat/server/Main.java +++ b/src/io/github/norbipeti/chat/server/Main.java @@ -33,55 +33,56 @@ public class Main { final GsonBuilder gsonBuilder = new GsonBuilder(); gsonBuilder.registerTypeAdapter(new TypeToken>() { }.getType(), new LoaderCollectionSerializer()); - gsonBuilder.registerTypeAdapter(new TypeToken>() { - }.getType(), new LoaderCollectionSerializer()); + gsonBuilder.registerTypeAdapter(new TypeToken>() { + }.getType(), new LoaderCollectionSerializer()); gsonBuilder.registerTypeAdapter(new TypeToken>() { }.getType(), new LoaderCollectionSerializer()); + gsonBuilder.registerTypeAdapter(new TypeToken>() { + }.getType(), new LoaderRefSerializer()); + gsonBuilder.registerTypeAdapter(new TypeToken>() { + }.getType(), new LoaderRefSerializer()); + gsonBuilder.registerTypeAdapter(new TypeToken>() { + }.getType(), new LoaderRefSerializer()); gson = gsonBuilder.create(); - /*User user = new User(); - user.setName("asd"); - user.setEmail("test@test.com"); - User user2 = new User(); - user2.setName("Teszt"); - user2.setEmail("test2@test.com"); - // user = provider.save(user); - // user2 = provider.save(user2); - user.getContacts().add(user2); - user2.getContacts().add(user); - LogManager.getLogger().log(Level.DEBUG, "1st's contact: " + user.getContacts().get(0)); - LogManager.getLogger().log(Level.DEBUG, "2nd's contact: " + user2.getContacts().get(0)); - Conversation conversation = new Conversation(); - conversation.getUsers().add(user); - user.getConversations().add(conversation); - LogManager.getLogger().debug("User: " + user); - conversation.getUsers().add(user2); - LogManager.getLogger().debug("User2: " + user2); - user2.getConversations().add(conversation); - Message msg = new Message(); - msg.setSender(user); - msg.setTime(new Date()); - msg.setMessage("Teszt 1"); - conversation.getMesssages().add(msg); - Message msg2 = new Message(); - msg2.setSender(user2); - msg2.setTime(new Date()); - msg2.setMessage("Teszt 2"); - conversation.getMesssages().add(msg2); - // provider.save(user); - // provider.save(user2);s - User loggedinuser = new User(); - loggedinuser.setName("NorbiPeti"); - loggedinuser.setSessionid("093b1395-8c31-4f3b-ba67-828a755af92e"); - loggedinuser.setEmail("sznp@asd.com"); - loggedinuser.getContacts().add(user2); - conversation.getUsers().add(loggedinuser); - loggedinuser.getConversations().add(conversation); - DataManager.save(user); - DataManager.save(user2); - DataManager.save(loggedinuser); - DataManager.save(conversation);*/ + /* + * User user = new User(); user.setName("asd"); + * user.setEmail("test@test.com"); User user2 = new User(); + * user2.setName("Teszt"); user2.setEmail("test2@test.com"); // user + * = provider.save(user); // user2 = provider.save(user2); + * user.getContacts().add(user2); user2.getContacts().add(user); + * LogManager.getLogger().log(Level.DEBUG, "1st's contact: " + + * user.getContacts().get(0)); + * LogManager.getLogger().log(Level.DEBUG, "2nd's contact: " + + * user2.getContacts().get(0)); Conversation conversation = new + * Conversation(); conversation.getUsers().add(user); + * user.getConversations().add(conversation); + * LogManager.getLogger().debug("User: " + user); + * conversation.getUsers().add(user2); + * LogManager.getLogger().debug("User2: " + user2); + * user2.getConversations().add(conversation); Message msg = new + * Message(); msg.setSender(user); msg.setTime(new Date()); + * msg.setMessage("Teszt 1"); conversation.getMesssages().add(msg); + * Message msg2 = new Message(); msg2.setSender(user2); + * msg2.setTime(new Date()); msg2.setMessage("Teszt 2"); + * conversation.getMesssages().add(msg2); // provider.save(user); // + * provider.save(user2);s User loggedinuser = new User(); + * loggedinuser.setName("NorbiPeti"); + * loggedinuser.setSessionid("093b1395-8c31-4f3b-ba67-828a755af92e") + * ; loggedinuser.setEmail("sznp@asd.com"); + * loggedinuser.getContacts().add(user2); + * conversation.getUsers().add(loggedinuser); + * loggedinuser.getConversations().add(conversation); + * DataManager.save(user); DataManager.save(user2); + * DataManager.save(loggedinuser); DataManager.save(conversation); + */ - LogManager.getLogger().log(Level.INFO, "Starting webserver..."); //TODO: Separate IDs for conversations and users + LogManager.getLogger().log(Level.INFO, "Starting webserver..."); // TODO: + // Separate + // IDs + // for + // conversations + // and + // users HttpServer server = HttpServer.create(new InetSocketAddress(InetAddress.getLocalHost(), 8080), 10); Reflections rf = new Reflections( new ConfigurationBuilder().setUrls(ClasspathHelper.forClassLoader(Page.class.getClassLoader())) diff --git a/src/io/github/norbipeti/chat/server/data/LoaderCollectionSerializer.java b/src/io/github/norbipeti/chat/server/data/LoaderCollectionSerializer.java index 0a856be..77c7a70 100644 --- a/src/io/github/norbipeti/chat/server/data/LoaderCollectionSerializer.java +++ b/src/io/github/norbipeti/chat/server/data/LoaderCollectionSerializer.java @@ -12,10 +12,10 @@ import com.google.gson.stream.JsonWriter; import io.github.norbipeti.chat.server.db.domain.SavedData; //@SuppressWarnings("rawtypes") -public class LoaderCollectionSerializer extends TypeAdapter> { +public class LoaderCollectionSerializer extends TypeAdapter> { @Override - public void write(JsonWriter out, LoaderCollection value) throws IOException { + public void write(JsonWriter out, LoaderCollection value) throws IOException { out.beginObject(); out.name("items"); new Gson().toJson(value.idlist, new TypeToken>() { @@ -24,10 +24,9 @@ public class LoaderCollectionSerializer extends TypeAdapter read(JsonReader in) throws IOException { + public LoaderCollection read(JsonReader in) throws IOException { in.beginObject(); in.nextName(); List list = new Gson().fromJson(in, new TypeToken>() { @@ -36,15 +35,14 @@ public class LoaderCollectionSerializer extends TypeAdapter cl; + Class cl; try { - cl = (Class) Class.forName(in.nextString()); + cl = (Class) Class.forName(in.nextString()); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } - LoaderCollection col = new LoaderCollection( - (Class) cl); // TODO + LoaderCollection col = new LoaderCollection(cl); // TODO col.idlist.addAll(list); in.endObject(); return col; diff --git a/src/io/github/norbipeti/chat/server/data/LoaderRef.java b/src/io/github/norbipeti/chat/server/data/LoaderRef.java index f0cb12b..ac56815 100644 --- a/src/io/github/norbipeti/chat/server/data/LoaderRef.java +++ b/src/io/github/norbipeti/chat/server/data/LoaderRef.java @@ -1,5 +1,7 @@ package io.github.norbipeti.chat.server.data; +import java.io.Serializable; + import io.github.norbipeti.chat.server.db.domain.SavedData; /** @@ -16,7 +18,8 @@ import io.github.norbipeti.chat.server.db.domain.SavedData; * @param * The type of the stored object */ -public class LoaderRef { +public class LoaderRef implements Serializable { + private static final long serialVersionUID = 8458570738734235320L; Class cl; Long id; diff --git a/src/io/github/norbipeti/chat/server/data/LoaderRefSerializer.java b/src/io/github/norbipeti/chat/server/data/LoaderRefSerializer.java index bc423ec..d11353c 100644 --- a/src/io/github/norbipeti/chat/server/data/LoaderRefSerializer.java +++ b/src/io/github/norbipeti/chat/server/data/LoaderRefSerializer.java @@ -12,14 +12,13 @@ import com.google.gson.stream.JsonWriter; import io.github.norbipeti.chat.server.db.domain.SavedData; //@SuppressWarnings("rawtypes") -public class LoaderRefSerializer extends TypeAdapter> { +public class LoaderRefSerializer extends TypeAdapter> { @Override - public void write(JsonWriter out, LoaderRef value) throws IOException { + public void write(JsonWriter out, LoaderRef value) throws IOException { out.beginObject(); - out.name("items"); - new Gson().toJson(value.id, new TypeToken>() { - }.getType(), out); + out.name("id"); + out.value(value.id); out.name("class").value(value.cl.getName()); out.endObject(); } @@ -27,24 +26,22 @@ public class LoaderRefSerializer extends TypeAdapter read(JsonReader in) throws IOException { + public LoaderRef read(JsonReader in) throws IOException { in.beginObject(); in.nextName(); - Long id = new Gson().fromJson(in, new TypeToken() { - }.getType()); + long id = in.nextLong(); if (!in.nextName().equals("class")) { new Exception("Error: Next isn't \"class\"").printStackTrace(); return null; } - Class cl; + Class cl; try { - cl = (Class) Class.forName(in.nextString()); + cl = (Class) Class.forName(in.nextString()); } catch (ClassNotFoundException e) { e.printStackTrace(); return null; } - LoaderRef col = new LoaderRef( - (Class) cl, id); // TODO + LoaderRef col = new LoaderRef(cl, id); // TODO in.endObject(); return col; } 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 fb181ce..93c0062 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/Message.java +++ b/src/io/github/norbipeti/chat/server/db/domain/Message.java @@ -17,21 +17,25 @@ public class Message implements Serializable { // private Long id; @ManyToOne(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER) // @JoinTable(name="user_message") - private User sender; + private LoaderRef sender; private Date time; private String message; @ManyToOne(fetch = FetchType.EAGER) // @JoinTable(name="conversation_message") private LoaderRef messagechunk; - public User getSender() { + public LoaderRef getSender() { return sender; } - public void setSender(User sender) { + public void setSender(LoaderRef sender) { this.sender = sender; } + public void setSender(User sender) { + this.sender = new LoaderRef(sender); + } + public Date getTime() { return time; } @@ -56,6 +60,10 @@ public class Message implements Serializable { this.messagechunk = messagechunk; } + public void setMessageChunk(MessageChunk messagechunk) { + this.messagechunk = new LoaderRef(messagechunk); + } + /* * public Long getId() { return id; } * diff --git a/src/io/github/norbipeti/chat/server/db/domain/MessageChunk.java b/src/io/github/norbipeti/chat/server/db/domain/MessageChunk.java index 266050d..4457577 100644 --- a/src/io/github/norbipeti/chat/server/db/domain/MessageChunk.java +++ b/src/io/github/norbipeti/chat/server/db/domain/MessageChunk.java @@ -26,4 +26,8 @@ public class MessageChunk extends SavedData { public void setConversation(LoaderRef conversation) { this.conversation = conversation; } + + public void setConversation(Conversation conversation) { + this.conversation = new LoaderRef(conversation); + } } diff --git a/src/io/github/norbipeti/chat/server/page/IndexPage.java b/src/io/github/norbipeti/chat/server/page/IndexPage.java index d446783..837b635 100644 --- a/src/io/github/norbipeti/chat/server/page/IndexPage.java +++ b/src/io/github/norbipeti/chat/server/page/IndexPage.java @@ -11,6 +11,7 @@ import io.github.norbipeti.chat.server.IOHelper; import io.github.norbipeti.chat.server.data.DataManager; 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.MessageChunk; import io.github.norbipeti.chat.server.db.domain.User; public class IndexPage extends Page { @@ -46,12 +47,15 @@ public class IndexPage extends Page { cide.attr("id", "convidp"); cide.text(Long.toString(conv.getId())); LogManager.getLogger().log(Level.INFO, "Messages: " + conv.getMesssageChunks().size()); - for (Message message : conv.getMesssageChunks()) { - Element msgelement = channelmessages.appendElement("div"); //TODO: Save messages in conversation files - Element header = msgelement.appendElement("p"); - header.text(message.getSender().getName() + " - " + message.getTime()); - Element body = msgelement.appendElement("p"); - body.text(message.getMessage()); + for (MessageChunk chunk : conv.getMesssageChunks()) { // TODO: + // Reverse + for (Message message : chunk.getMessages()) { + Element msgelement = channelmessages.appendElement("div"); + Element header = msgelement.appendElement("p"); + header.text(message.getSender().get().getName() + " - " + message.getTime()); + Element body = msgelement.appendElement("p"); + body.text(message.getMessage()); + } } return doc; }, exchange); diff --git a/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java b/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java index f6b501e..8aff942 100644 --- a/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java +++ b/src/io/github/norbipeti/chat/server/page/MessageAjaxPage.java @@ -12,6 +12,7 @@ import io.github.norbipeti.chat.server.data.DataManager; import io.github.norbipeti.chat.server.data.LoaderCollection; 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.MessageChunk; import io.github.norbipeti.chat.server.db.domain.User; public class MessageAjaxPage extends Page { @@ -66,15 +67,20 @@ public class MessageAjaxPage extends Page { + conversation + " is not found.

", exchange); return; } + MessageChunk chunk = new MessageChunk(); // TODO: Automatize + chunk.setConversation(conv); Message msg = new Message(); msg.setSender(user); msg.setMessage(message); msg.setTime(new Date()); - msg.setConversation(conv); // TODO: Store relations at one side or both - DataManager.save(msg); - conv.getMesssageChunks().add(msg); + msg.setMessageChunk(chunk); // TODO: Store relations at one side or + // both); + chunk.getMessages().add(msg); + //DataManager.save(chunk); - TODO + conv.getMesssageChunks().add(chunk); DataManager.save(conv); - LogManager.getLogger().log(Level.DEBUG, "Added conversation's message count: " + conv.getMesssageChunks().size()); + LogManager.getLogger().log(Level.DEBUG, + "Added conversation's message count: " + conv.getMesssageChunks().size()); IOHelper.SendResponse(200, "Success", exchange); }