package hibernateTest.models; import com.example.cosmos_serversb.entities.Token; import com.example.cosmos_serversb.models.DeleteResult; import javax.inject.Singleton; import java.util.Date; import java.util.List; import java.util.UUID; import hibernateTest.entities.Event; import hibernateTest.entities.Group; import hibernateTest.entities.Request; import hibernateTest.entities.User; import org.hibernate.Criteria; import org.hibernate.SessionBuilder; import org.hibernate.criterion.Restrictions; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.boot.MetadataSources; import org.hibernate.boot.registry.StandardServiceRegistry; import org.hibernate.boot.registry.StandardServiceRegistryBuilder; @Singleton public class Users { private static Users theInstance = null; private static SessionFactory sessionFactory; public static void setUp() { // A SessionFactory is set up once for an application! final StandardServiceRegistry registry = new StandardServiceRegistryBuilder() .configure() // configures settings from hibernate.cfg.xml .build(); try { sessionFactory = new MetadataSources( registry ).buildMetadata().buildSessionFactory(); } catch (Exception e) { // The registry would be destroyed by the SessionFactory, but we had trouble building the SessionFactory // so destroy it manually. StandardServiceRegistryBuilder.destroy( registry ); } } public static void tearDown() { try { if (sessionFactory != null) { sessionFactory.close(); } } catch (Exception e) { System.out.println("Exception!"); } } private Users() { setUp(); } public static Users getInstance() { if (theInstance == null) { theInstance = new Users(); } return theInstance; } public static String createToken(String uId) { //Tokenを作成しuIdと関連付けしDBに保存し作成したTokenを返す //String token = UUID.randomUUID().toString(); //return token; return null; } public static String createUId() { //uIdを作成し既存していないかチェック後DBに保存し作成したuIdを返す String uId = UUID.randomUUID().toString(); return uId; } public static User createUser(String name, String pw, String iconImage) { Session session = sessionFactory.openSession(); session.beginTransaction(); //名前、パスワード、アイコンイメージを保存 User testUser = new User(name,getInstance().createUId(), "http://test.com",pw,iconImage); System.out.println(testUser.getUri()); session.save(testUser); //hibernateテスト出力用 List userResult = session.createQuery( "from User" ).list(); for ( User user : (List<User>) userResult ) { System.out.println( "User (" + user.getuId() + ") : " + user.getUri() + ": " + user.getName()); } session.getTransaction().commit(); session.close(); //testUser.token.add(getInstance().createToken(testUser.uId)); //testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } public static User setUser(String uId, String name, String pw, String iconImage) { Session session = sessionFactory.openSession(); session.beginTransaction(); User testUser = new User(name,uId,"http://test.com",pw,iconImage); Criteria criteria = session.createCriteria(Request.class).add(Restrictions.eq("rId", "333")); Request editRequest = (Request) criteria.uniqueResult(); if(editRequest != null) { editRequest.setProduct("Chocolate ice !!"); session.update(editRequest); } session.getTransaction().commit(); session.close(); //testUser.token.add(getInstance().createToken(testUser.uId)); //testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } public static User getUserById(String uId) { //与えられたuIdのUser情報を返す User editUser; Session session = sessionFactory.openSession(); session.beginTransaction(); List userResult = session.createQuery("from User").list(); for ( hibernateTest.entities.User user : (List<hibernateTest.entities.User>) userResult){ editUser = user; if (editUser.getuId().equals(uId)){ return editUser; } } session.getTransaction().commit(); session.close(); //testUser.token.add(getInstance().createToken(testUser.uId)); //testUser.token.add(getInstance().createToken(testUser.uId)); return null; } public static User getUserByToken(String token) { //与えられたTokenに紐づくUser情報を返す User testUser = new User("test", getInstance().createUId(), "http://test.com", "testpw", "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg"); //testUser.token.add(getInstance().createToken(testUser.uId)); //testUser.token.add(getInstance().createToken(testUser.uId)); return testUser; } public static DeleteResult deleteUser(String uId) { Session session = sessionFactory.openSession(); session = sessionFactory.openSession(); session.beginTransaction(); Request deleteRequest = (Request) session.load(Request.class, "222"); if(deleteRequest != null){ session.delete(deleteRequest); } session.getTransaction().commit(); session.close(); return DeleteResult.SUCCESS; } public static Token login(String uId) { //Token testtoken = new Token(getInstance().createToken(uId)); //tokenを作成後値を返す //return testtoken;//testToken return null; } public static DeleteResult logout(String token) { if(Users.getInstance().getUserByToken(token).uId == null) { return DeleteResult.FAILURE; }else{ //Users.getInstance().getUserByToken(token).token.remove(Users.getInstance().getUserByToken(token).token.indexOf(token)); return DeleteResult.SUCCESS; } } public static boolean checkToken(String uId, String token) { //与えられたtokenとUserのtokenを比較し結果を返す return true; } public static boolean checkPassword(String uId, String pw) { //与えられたパスワードとUserのパスワードを比較し結果を返す return true; } }