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: -webkit-calc(100% - 50px);
|
||||
height: calc(100% - 50px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
html, body {
|
||||
|
|
|
@ -116,7 +116,7 @@ public class IOHelper {
|
|||
// provider.SetValues(() ->
|
||||
// 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));
|
||||
exchange.getResponseHeaders().add("Set-Cookie",
|
||||
"user_id=" + user.getId() + "; expires=" + expiretime.format(DateTimeFormatter.RFC_1123_DATE_TIME));
|
||||
|
|
|
@ -38,44 +38,42 @@ public class Main {
|
|||
user2.setName("Teszt"); // TODO:
|
||||
// http://www.journaldev.com/3524/spring-hibernate-integration-example-tutorial
|
||||
user2.setEmail("test2@test.com");
|
||||
user2.getContacts().add(user);
|
||||
provider.save(user);
|
||||
List<User> users = provider.getUsers();
|
||||
user = users.get(0);
|
||||
user = provider.save(user);
|
||||
user2 = provider.save(user2);
|
||||
user.getContacts().add(user2);
|
||||
provider.save(user2);
|
||||
users = provider.getUsers();
|
||||
user2 = users.get(1);
|
||||
LogManager.getLogger().log(Level.DEBUG, users);
|
||||
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 convo = new Conversation();
|
||||
//convo.getUsers().add(user);
|
||||
//user.getConversations().add(convo);
|
||||
//convo.getUsers().add(user2);
|
||||
//user2.getConversations().add(convo); //TODO: Fix duplicate
|
||||
Conversation conversation = new Conversation();
|
||||
conversation = provider.save(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); // TODO: Fix
|
||||
// duplicate
|
||||
// key constraint
|
||||
Message msg = new Message();
|
||||
msg.setSender(user);
|
||||
msg.setTime(new Date());
|
||||
msg.setMessage("Teszt 1");
|
||||
convo.getMesssages().add(msg);
|
||||
conversation.getMesssages().add(msg);
|
||||
Message msg2 = new Message();
|
||||
msg2.setSender(user2);
|
||||
msg2.setTime(new Date());
|
||||
msg2.setMessage("Teszt 2");
|
||||
convo.getMesssages().add(msg2);
|
||||
provider.save(convo);
|
||||
provider.save(user);
|
||||
provider.save(user2);
|
||||
User loggedinuser = new User();
|
||||
loggedinuser.setName("NorbiPeti");
|
||||
loggedinuser.setSessionid("093b1395-8c31-4f3b-ba67-828a755af92e");
|
||||
loggedinuser.setEmail("sznp@asd.com");
|
||||
convo.getUsers().add(loggedinuser);
|
||||
loggedinuser.getConversations().add(convo);
|
||||
provider.save(loggedinuser);
|
||||
provider.save(convo);
|
||||
conversation.getMesssages().add(msg2);
|
||||
// provider.save(user);
|
||||
// provider.save(user2);
|
||||
/*
|
||||
* User loggedinuser = new User(); provider.save(loggedinuser);
|
||||
* loggedinuser.setName("NorbiPeti"); loggedinuser.setSessionid(
|
||||
* "093b1395-8c31-4f3b-ba67-828a755af92e");
|
||||
* loggedinuser.setEmail("sznp@asd.com");
|
||||
* conversation.getUsers().add(loggedinuser);
|
||||
* loggedinuser.getConversations().add(conversation);
|
||||
*/
|
||||
}
|
||||
LogManager.getLogger().log(Level.INFO, "Starting webserver...");
|
||||
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 {
|
||||
private EntityManagerFactory emf;
|
||||
private EntityManager em;
|
||||
|
||||
public DataProvider() {
|
||||
emf = Persistence.createEntityManagerFactory("ChatServerPU");
|
||||
em = emf.createEntityManager();
|
||||
em.getTransaction().begin();
|
||||
}
|
||||
|
||||
public <T extends ChatDatabaseEntity> void save(T object) {
|
||||
EntityManager em = null;
|
||||
try {
|
||||
em = emf.createEntityManager();
|
||||
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() {
|
||||
|
@ -46,21 +39,15 @@ public class DataProvider implements AutoCloseable {
|
|||
}
|
||||
|
||||
private <T> List<T> get(Class<T> cl) {
|
||||
EntityManager em = emf.createEntityManager();
|
||||
TypedQuery<T> query = em.createQuery("SELECT x FROM " + cl.getSimpleName() + " x", cl);
|
||||
List<T> results = query.getResultList();
|
||||
Hibernate.initialize(results);
|
||||
em.close();
|
||||
return results;
|
||||
}
|
||||
|
||||
public void removeUser(User user) {
|
||||
EntityManager em = emf.createEntityManager();
|
||||
em.getTransaction().begin();
|
||||
User managedUser = em.find(User.class, user.getId());
|
||||
em.remove(managedUser);
|
||||
em.getTransaction().commit();
|
||||
em.close();
|
||||
}
|
||||
|
||||
public User getUser(Long id) {
|
||||
|
@ -68,32 +55,28 @@ public class DataProvider implements AutoCloseable {
|
|||
}
|
||||
|
||||
private <T> T get(Class<T> cl, Long id) {
|
||||
EntityManager em = emf.createEntityManager();
|
||||
T result = em.find(cl, id);
|
||||
em.close();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public void SetValues(Runnable action) {
|
||||
EntityManager em = emf.createEntityManager();
|
||||
em.getTransaction().begin();
|
||||
action.run();
|
||||
em.flush();
|
||||
em.getTransaction().commit();
|
||||
em.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
if (em != null) {
|
||||
em.flush();
|
||||
em.close();
|
||||
}
|
||||
if (emf != null)
|
||||
emf.close();
|
||||
}
|
||||
|
||||
public boolean isEntityManaged(Object entity) {
|
||||
EntityManager em = emf.createEntityManager();
|
||||
boolean ret = em.contains(entity);
|
||||
em.close();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,7 +23,10 @@ public class Conversation extends ChatDatabaseEntity {
|
|||
// inverseJoinColumns = @JoinColumn(name = "user_id", referencedColumnName =
|
||||
// "id", unique = false), uniqueConstraints = @UniqueConstraint(name =
|
||||
// "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;
|
||||
|
||||
public List<Message> getMesssages() {
|
||||
|
|
|
@ -11,12 +11,12 @@ public class Message extends ChatDatabaseEntity {
|
|||
@Column(name = "id", unique = true, nullable = false)
|
||||
private Long id;
|
||||
@ManyToOne
|
||||
//@JoinTable(name="user_message")
|
||||
// @JoinTable(name="user_message")
|
||||
private User sender;
|
||||
private Date time;
|
||||
private String message;
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
//@JoinTable(name="conversation_message")
|
||||
// @JoinTable(name="conversation_message")
|
||||
private Conversation conversation;
|
||||
|
||||
public User getSender() {
|
||||
|
|
|
@ -18,6 +18,7 @@ public class User extends ChatDatabaseEntity {
|
|||
private String email;
|
||||
private String password;
|
||||
@ElementCollection(fetch = FetchType.EAGER)
|
||||
@ManyToMany(cascade = CascadeType.ALL)
|
||||
private List<User> contacts;
|
||||
private String salt;
|
||||
// @Column(columnDefinition = "CHAR(16) FOR BIT DATA")
|
||||
|
@ -27,7 +28,10 @@ public class User extends ChatDatabaseEntity {
|
|||
// @ManyToMany(fetch = FetchType.EAGER, mappedBy = "users")
|
||||
@ManyToMany(mappedBy = "users", fetch = FetchType.EAGER, cascade = CascadeType.ALL)
|
||||
// @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;
|
||||
|
||||
public List<User> getContacts() {
|
||||
|
|
|
@ -40,9 +40,8 @@ public class RegisterAjaxPage extends Page {
|
|||
user.setEmail(post.getString("email"));
|
||||
user.setSalt(BCrypt.gensalt()); // http://www.mindrot.org/projects/jBCrypt/
|
||||
user.setPassword(BCrypt.hashpw(post.getString("pass"), user.getSalt()));
|
||||
provider.save(user);
|
||||
User managedUser = provider.getUser(user.getId());
|
||||
IOHelper.LoginUser(exchange, managedUser, provider);
|
||||
user = provider.save(user);
|
||||
IOHelper.LoginUser(exchange, user, provider);
|
||||
IOHelper.SendResponse(200, "Success", exchange);
|
||||
} catch (Exception e) {
|
||||
throw e;
|
||||
|
|
Loading…
Reference in a new issue