Switched to merge over persist and update
This commit is contained in:
parent
a3d5f290a6
commit
1a1772fabf
8 changed files with 49 additions and 61 deletions
|
@ -49,6 +49,7 @@ body {
|
||||||
height: -moz-calc(100% - 50px);
|
height: -moz-calc(100% - 50px);
|
||||||
height: -webkit-calc(100% - 50px);
|
height: -webkit-calc(100% - 50px);
|
||||||
height: calc(100% - 50px);
|
height: calc(100% - 50px);
|
||||||
|
overflow: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
html, body {
|
html, body {
|
||||||
|
|
|
@ -116,7 +116,7 @@ public class IOHelper {
|
||||||
// provider.SetValues(() ->
|
// provider.SetValues(() ->
|
||||||
// user.setSessionid(UUID.randomUUID().toString()));
|
// user.setSessionid(UUID.randomUUID().toString()));
|
||||||
user.setSessionid(UUID.randomUUID().toString());
|
user.setSessionid(UUID.randomUUID().toString());
|
||||||
provider.save(user);
|
user = provider.save(user);
|
||||||
ZonedDateTime expiretime = ZonedDateTime.now(ZoneId.of("GMT")).plus(Period.of(2, 0, 0));
|
ZonedDateTime expiretime = ZonedDateTime.now(ZoneId.of("GMT")).plus(Period.of(2, 0, 0));
|
||||||
exchange.getResponseHeaders().add("Set-Cookie",
|
exchange.getResponseHeaders().add("Set-Cookie",
|
||||||
"user_id=" + user.getId() + "; expires=" + expiretime.format(DateTimeFormatter.RFC_1123_DATE_TIME));
|
"user_id=" + user.getId() + "; expires=" + expiretime.format(DateTimeFormatter.RFC_1123_DATE_TIME));
|
||||||
|
|
|
@ -38,44 +38,42 @@ public class Main {
|
||||||
user2.setName("Teszt"); // TODO:
|
user2.setName("Teszt"); // TODO:
|
||||||
// http://www.journaldev.com/3524/spring-hibernate-integration-example-tutorial
|
// http://www.journaldev.com/3524/spring-hibernate-integration-example-tutorial
|
||||||
user2.setEmail("test2@test.com");
|
user2.setEmail("test2@test.com");
|
||||||
user2.getContacts().add(user);
|
user = provider.save(user);
|
||||||
provider.save(user);
|
user2 = provider.save(user2);
|
||||||
List<User> users = provider.getUsers();
|
|
||||||
user = users.get(0);
|
|
||||||
user.getContacts().add(user2);
|
user.getContacts().add(user2);
|
||||||
provider.save(user2);
|
user2.getContacts().add(user);
|
||||||
users = provider.getUsers();
|
|
||||||
user2 = users.get(1);
|
|
||||||
LogManager.getLogger().log(Level.DEBUG, users);
|
|
||||||
LogManager.getLogger().log(Level.DEBUG, "1st's contact: " + user.getContacts().get(0));
|
LogManager.getLogger().log(Level.DEBUG, "1st's contact: " + user.getContacts().get(0));
|
||||||
LogManager.getLogger().log(Level.DEBUG, "2nd's contact: " + user2.getContacts().get(0));
|
LogManager.getLogger().log(Level.DEBUG, "2nd's contact: " + user2.getContacts().get(0));
|
||||||
Conversation convo = new Conversation();
|
Conversation conversation = new Conversation();
|
||||||
//convo.getUsers().add(user);
|
conversation = provider.save(conversation);
|
||||||
//user.getConversations().add(convo);
|
conversation.getUsers().add(user);
|
||||||
//convo.getUsers().add(user2);
|
user.getConversations().add(conversation);
|
||||||
//user2.getConversations().add(convo); //TODO: Fix duplicate
|
LogManager.getLogger().debug("User: " + user);
|
||||||
|
conversation.getUsers().add(user2);
|
||||||
|
LogManager.getLogger().debug("User2: " + user2);
|
||||||
|
user2.getConversations().add(conversation); // TODO: Fix
|
||||||
|
// duplicate
|
||||||
// key constraint
|
// key constraint
|
||||||
Message msg = new Message();
|
Message msg = new Message();
|
||||||
msg.setSender(user);
|
msg.setSender(user);
|
||||||
msg.setTime(new Date());
|
msg.setTime(new Date());
|
||||||
msg.setMessage("Teszt 1");
|
msg.setMessage("Teszt 1");
|
||||||
convo.getMesssages().add(msg);
|
conversation.getMesssages().add(msg);
|
||||||
Message msg2 = new Message();
|
Message msg2 = new Message();
|
||||||
msg2.setSender(user2);
|
msg2.setSender(user2);
|
||||||
msg2.setTime(new Date());
|
msg2.setTime(new Date());
|
||||||
msg2.setMessage("Teszt 2");
|
msg2.setMessage("Teszt 2");
|
||||||
convo.getMesssages().add(msg2);
|
conversation.getMesssages().add(msg2);
|
||||||
provider.save(convo);
|
// provider.save(user);
|
||||||
provider.save(user);
|
// provider.save(user2);
|
||||||
provider.save(user2);
|
/*
|
||||||
User loggedinuser = new User();
|
* User loggedinuser = new User(); provider.save(loggedinuser);
|
||||||
loggedinuser.setName("NorbiPeti");
|
* loggedinuser.setName("NorbiPeti"); loggedinuser.setSessionid(
|
||||||
loggedinuser.setSessionid("093b1395-8c31-4f3b-ba67-828a755af92e");
|
* "093b1395-8c31-4f3b-ba67-828a755af92e");
|
||||||
loggedinuser.setEmail("sznp@asd.com");
|
* loggedinuser.setEmail("sznp@asd.com");
|
||||||
convo.getUsers().add(loggedinuser);
|
* conversation.getUsers().add(loggedinuser);
|
||||||
loggedinuser.getConversations().add(convo);
|
* loggedinuser.getConversations().add(conversation);
|
||||||
provider.save(loggedinuser);
|
*/
|
||||||
provider.save(convo);
|
|
||||||
}
|
}
|
||||||
LogManager.getLogger().log(Level.INFO, "Starting webserver...");
|
LogManager.getLogger().log(Level.INFO, "Starting webserver...");
|
||||||
HttpServer server = HttpServer.create(new InetSocketAddress(InetAddress.getLocalHost(), 8080), 10);
|
HttpServer server = HttpServer.create(new InetSocketAddress(InetAddress.getLocalHost(), 8080), 10);
|
||||||
|
|
|
@ -13,24 +13,17 @@ import io.github.norbipeti.chat.server.db.domain.*;
|
||||||
|
|
||||||
public class DataProvider implements AutoCloseable {
|
public class DataProvider implements AutoCloseable {
|
||||||
private EntityManagerFactory emf;
|
private EntityManagerFactory emf;
|
||||||
|
private EntityManager em;
|
||||||
|
|
||||||
public DataProvider() {
|
public DataProvider() {
|
||||||
emf = Persistence.createEntityManagerFactory("ChatServerPU");
|
emf = Persistence.createEntityManagerFactory("ChatServerPU");
|
||||||
}
|
|
||||||
|
|
||||||
public <T extends ChatDatabaseEntity> void save(T object) {
|
|
||||||
EntityManager em = null;
|
|
||||||
try {
|
|
||||||
em = emf.createEntityManager();
|
em = emf.createEntityManager();
|
||||||
em.getTransaction().begin();
|
em.getTransaction().begin();
|
||||||
Session s = em.unwrap(Session.class);
|
|
||||||
s.saveOrUpdate(object);
|
|
||||||
em.persist(object);
|
|
||||||
em.getTransaction().commit();
|
|
||||||
} finally {
|
|
||||||
em.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T extends ChatDatabaseEntity> T save(T object) {
|
||||||
|
T obj = em.merge(object);
|
||||||
|
return obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<User> getUsers() {
|
public List<User> getUsers() {
|
||||||
|
@ -46,21 +39,15 @@ public class DataProvider implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> List<T> get(Class<T> cl) {
|
private <T> List<T> get(Class<T> cl) {
|
||||||
EntityManager em = emf.createEntityManager();
|
|
||||||
TypedQuery<T> query = em.createQuery("SELECT x FROM " + cl.getSimpleName() + " x", cl);
|
TypedQuery<T> query = em.createQuery("SELECT x FROM " + cl.getSimpleName() + " x", cl);
|
||||||
List<T> results = query.getResultList();
|
List<T> results = query.getResultList();
|
||||||
Hibernate.initialize(results);
|
Hibernate.initialize(results);
|
||||||
em.close();
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void removeUser(User user) {
|
public void removeUser(User user) {
|
||||||
EntityManager em = emf.createEntityManager();
|
|
||||||
em.getTransaction().begin();
|
|
||||||
User managedUser = em.find(User.class, user.getId());
|
User managedUser = em.find(User.class, user.getId());
|
||||||
em.remove(managedUser);
|
em.remove(managedUser);
|
||||||
em.getTransaction().commit();
|
|
||||||
em.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public User getUser(Long id) {
|
public User getUser(Long id) {
|
||||||
|
@ -68,32 +55,28 @@ public class DataProvider implements AutoCloseable {
|
||||||
}
|
}
|
||||||
|
|
||||||
private <T> T get(Class<T> cl, Long id) {
|
private <T> T get(Class<T> cl, Long id) {
|
||||||
EntityManager em = emf.createEntityManager();
|
|
||||||
T result = em.find(cl, id);
|
T result = em.find(cl, id);
|
||||||
em.close();
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public void SetValues(Runnable action) {
|
public void SetValues(Runnable action) {
|
||||||
EntityManager em = emf.createEntityManager();
|
|
||||||
em.getTransaction().begin();
|
|
||||||
action.run();
|
action.run();
|
||||||
em.flush();
|
em.flush();
|
||||||
em.getTransaction().commit();
|
|
||||||
em.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void close() {
|
public void close() {
|
||||||
|
if (em != null) {
|
||||||
|
em.flush();
|
||||||
|
em.close();
|
||||||
|
}
|
||||||
if (emf != null)
|
if (emf != null)
|
||||||
emf.close();
|
emf.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isEntityManaged(Object entity) {
|
public boolean isEntityManaged(Object entity) {
|
||||||
EntityManager em = emf.createEntityManager();
|
|
||||||
boolean ret = em.contains(entity);
|
boolean ret = em.contains(entity);
|
||||||
em.close();
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,7 +23,10 @@ public class Conversation extends ChatDatabaseEntity {
|
||||||
// inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName =
|
// inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName =
|
||||||
// "id", unique = false), uniqueConstraints = @UniqueConstraint(name =
|
// "id", unique = false), uniqueConstraints = @UniqueConstraint(name =
|
||||||
// "USER_CONV_UN", columnNames = {"user_id", "conversation_id" }))
|
// "USER_CONV_UN", columnNames = {"user_id", "conversation_id" }))
|
||||||
@JoinTable(name = "User_Conversation", joinColumns = @JoinColumn(name = "conversation_id", referencedColumnName = "id"), inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName = "id"))
|
// @JoinTable(name = "User_Conversation", joinColumns = @JoinColumn(name =
|
||||||
|
// "conversation_id", referencedColumnName = "id"), inverseJoinColumns =
|
||||||
|
// @JoinColumn(name = "user_id", referencedColumnName = "id"))
|
||||||
|
@JoinTable(name = "User_Conversation")
|
||||||
private Set<User> users;
|
private Set<User> users;
|
||||||
|
|
||||||
public List<Message> getMesssages() {
|
public List<Message> getMesssages() {
|
||||||
|
|
|
@ -11,12 +11,12 @@ public class Message extends ChatDatabaseEntity {
|
||||||
@Column(name = "id", unique = true, nullable = false)
|
@Column(name = "id", unique = true, nullable = false)
|
||||||
private Long id;
|
private Long id;
|
||||||
@ManyToOne
|
@ManyToOne
|
||||||
//@JoinTable(name="user_message")
|
// @JoinTable(name="user_message")
|
||||||
private User sender;
|
private User sender;
|
||||||
private Date time;
|
private Date time;
|
||||||
private String message;
|
private String message;
|
||||||
@ManyToOne(fetch = FetchType.EAGER)
|
@ManyToOne(fetch = FetchType.EAGER)
|
||||||
//@JoinTable(name="conversation_message")
|
// @JoinTable(name="conversation_message")
|
||||||
private Conversation conversation;
|
private Conversation conversation;
|
||||||
|
|
||||||
public User getSender() {
|
public User getSender() {
|
||||||
|
|
|
@ -18,6 +18,7 @@ public class User extends ChatDatabaseEntity {
|
||||||
private String email;
|
private String email;
|
||||||
private String password;
|
private String password;
|
||||||
@ElementCollection(fetch = FetchType.EAGER)
|
@ElementCollection(fetch = FetchType.EAGER)
|
||||||
|
@ManyToMany(cascade = CascadeType.ALL)
|
||||||
private List<User> contacts;
|
private List<User> contacts;
|
||||||
private String salt;
|
private String salt;
|
||||||
// @Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
// @Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
||||||
|
@ -27,7 +28,10 @@ public class User extends ChatDatabaseEntity {
|
||||||
// @ManyToMany(fetch = FetchType.EAGER, mappedBy = "users")
|
// @ManyToMany(fetch = FetchType.EAGER, mappedBy = "users")
|
||||||
@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
|
@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
|
||||||
// @ManyToMany(mappedBy = "users")
|
// @ManyToMany(mappedBy = "users")
|
||||||
//@JoinTable(name = "User_Conversation", joinColumns = @JoinColumn(referencedColumnName = "id", unique = false), inverseJoinColumns = @JoinColumn(referencedColumnName = "id", unique = false))
|
// @JoinTable(name = "User_Conversation", joinColumns =
|
||||||
|
// @JoinColumn(referencedColumnName = "id", unique = false),
|
||||||
|
// inverseJoinColumns = @JoinColumn(referencedColumnName = "id", unique =
|
||||||
|
// false))
|
||||||
private Set<Conversation> conversations;
|
private Set<Conversation> conversations;
|
||||||
|
|
||||||
public List<User> getContacts() {
|
public List<User> getContacts() {
|
||||||
|
|
|
@ -40,9 +40,8 @@ public class RegisterAjaxPage extends Page {
|
||||||
user.setEmail(post.getString("email"));
|
user.setEmail(post.getString("email"));
|
||||||
user.setSalt(BCrypt.gensalt()); // http://www.mindrot.org/projects/jBCrypt/
|
user.setSalt(BCrypt.gensalt()); // http://www.mindrot.org/projects/jBCrypt/
|
||||||
user.setPassword(BCrypt.hashpw(post.getString("pass"), user.getSalt()));
|
user.setPassword(BCrypt.hashpw(post.getString("pass"), user.getSalt()));
|
||||||
provider.save(user);
|
user = provider.save(user);
|
||||||
User managedUser = provider.getUser(user.getId());
|
IOHelper.LoginUser(exchange, user, provider);
|
||||||
IOHelper.LoginUser(exchange, managedUser, provider);
|
|
||||||
IOHelper.SendResponse(200, "Success", exchange);
|
IOHelper.SendResponse(200, "Success", exchange);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw e;
|
throw e;
|
||||||
|
|
Loading…
Reference in a new issue