package com.example.cosmos_serversb.models; import java.util.List; import java.util.UUID; import javax.inject.Singleton; import com.example.cosmos_serversb.entities.*; 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; import org.hibernate.criterion.Restrictions; @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() { } 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; } 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(); //名前、uId、ユーザーuri、パスワード、アイコンイメージを保存 User testUser = new User(name,getInstance().createUId(), "http://nitta-lab-8080/cosmos/users/{uId}.com",pw,iconImage); session.save(testUser); //出力 List userResult = session.createQuery( "from User" ).list(); for ( User user : (List<User>) userResult ) { System.out.println( "UserId (" + 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(); List usertList = session.createQuery( "from User" ).list(); for ( User user : (List<User>) usertList ) { if(user.getuId() == uId){ user.setuId(uId); user.setName(name); user.setPw(pw); if(iconImage != null) { user.setIconUri(iconImage); } session.update(user); break; } } session.getTransaction().commit(); session.close(); // testUser.token.add(getInstance().createToken(testUser.uId)); // testUser.token.add(getInstance().createToken(testUser.uId)); return null; } public static User getUserById(String uId) { //与えられたuIdのUser情報を返す Session session = sessionFactory.openSession(); session.beginTransaction(); List usertList = session.createQuery( "from User" ).list(); for ( User user : (List<User>) usertList ) { if (user.getuId() == uId) { System.out.println( "name: " + user.getName() + "iconUri : " + user.getIconUri()); break; } } 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://nitta-lab-8080/cosmos/users/{uId}.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, uId); if(deleteRequest != null){ session.delete(deleteRequest); System.out.println("massage: Already Deleted"); } 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 } 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; } }