- package com.example.cosmos_serversb.models;
-
- import java.util.List;
- import java.util.UUID;
- import javax.inject.Singleton;
- import javax.ws.rs.WebApplicationException;
-
- import com.example.cosmos_serversb.entities.*;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.springframework.beans.factory.annotation.Value;
-
-
- @Singleton
- public class Users {
- /**
- * ユーザの情報を操作するためクラス
- *
- * @param Users
- * @param SessionFactory
- * @param baseURI
- * @param AppName
- *
- * TODO:statusコードを返す
- * TODO:baseURIなどは定義ファイルで保持させる
- */
-
- private static Users theInstance = null;
- private static SessionFactory sessionFactory;
- private static String baseURI="http://nitta-lab-www.is.konan-u.ac.jp/";
- private static String AppName="cosmos";
-
- private Users() {
- sessionFactory = SessionFactoryManager.getInstance().getSessionFactory();
- }
-
- public static Users getInstance() {
- if (theInstance == null) {
- theInstance = new Users();
- }
- return theInstance;
- }
-
- public static Token createToken(String uId) {
- /**
- * Tokenを作成返すためのメソッド
- *
- * @param uId String
- * @param token_str String
- * @return token Token
- *
- * TODO :どこでトークンを保存するか要検討
- */
- String token = UUID.randomUUID().toString();
- Token return_token =new Token(token, uId);
- return return_token;
- }
-
- public static String createUId() {
- /**
- * uIdを作成し既存していないかチェック後DBに保存し作成したuIdを返すためのメソッド
- *
- * @param uId String
- *
- */
- String uId = UUID.randomUUID().toString();
- return uId;
- }
-
- public static User createUser(String name, String pw, String iconImage) {
- String uId = getInstance().createUId();
- String uri = baseURI + AppName +"/users/" +uId;
-
- Session session = SessionManager.getInstance().getSession();
- Token token = createToken(uId);
- User testUser = new User(name, uId, uri, iconImage);
- Password password = new Password(pw, uId);
- session.save(testUser);
- session.save(password);
- session.save(token);
- return testUser;
- }
-
- public static User setUser(String uId, String name, String pw, String iconImage) {
- /**
- * Userの情報を変更するためのメソッド
- *
- * @param uId String
- * @param name String
- * @param pw String
- * @param iconImage String
- *
- * TODO: checkPasswordメソッドを用いパスワードを確認する
- */
- Session session = SessionManager.getInstance().getSession();
- List usersList = session.createQuery( "from User" ).list();
- List passwordList = session.createQuery("from Password").list();
- for ( User user : (List<User>) usersList ) {
- if (user.getuId().equals(uId)) {//if (user.getuId().equals(uId) || password.getPw().equals(pw)) {
- user.setName(name);
- for ( Password password : (List<Password>) passwordList ) {
- password.setPw(pw);
- session.update(password);
- }
- if(iconImage != null) {
- user.setIconUri(iconImage);
- }
- session.update(user);
- break;
- }
- }
- User findUser = (User) session.load(User.class, uId);
- return findUser;
- }
-
- public static User getUserById(String uId) {
- /**
- * 与えられたuIdのUser情報を返すためのメソッド
- * @param uId
- *
- */
- Session session = SessionManager.getInstance().getSession();
- List usersList = session.createQuery( "from User" ).list();
- //uIdを比較し、一致した場合はNameとiconUriを返す。一致しない場合はbreak
- for ( User user : (List<User>) usersList ) {
- if (user.getuId().equals(uId)) {
- User findUser = (User) session.load(User.class, uId);
- // System.out.println(mapper.valueToTree(findUser).toString());
- return findUser;
- }
- }
- //例外処理
- return null;
- }
-
- public static User getUserByToken(String token) {
- //与えられたTokenに紐づくUser情報を返す
- User testUser = new User("test", getInstance().createUId(), "http://test.com", "http://localhost:8080/iconImage/b4bb7db0-cc0c-4ee1-816f-8304add12da8.jpg");
- return testUser;
- }
-
- public static DeleteResult deleteUser(String uId) {
- Session session = SessionManager.getInstance().getSession();
- User deleteUser = (User) session.load(User.class, uId);
- if(deleteUser != null){
- session.delete(deleteUser);
- System.out.println("massage: Already Deleted");
- }
- return DeleteResult.SUCCESS;
- }
-
- public static Token login(String uId,String pw) {
- /**
- * tokenを作成したりloginフラグの操作を行うフラグ
- * @param uId String
- * @param pw String
- *
- */
- if(checkPassword(uId,pw)) {
- Token testtoken = getInstance().createToken(uId);
- return testtoken;//testToken
- }else{
- //例外処理
- return null;
- }
- }
-
- public static DeleteResult logout(String uId,String token) {
- /**
- * トークンを削除しログインフラグを操作するためのメソッド
- *
- * TODO: queryの文に条件文を追加
- * TODO :logout 変更
- */
- Session session = SessionManager.getInstance().getSession();
- List usersList = session.createQuery( "from User" ).list();
- for ( User user : (List<User>) usersList ) {
- if (user.getuId().equals(uId)) {
- 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;
- }
- }
- }
- //例外処理
- return null;
- }
-
- public static boolean checkToken(String uId, String token) {
- /**
- * uIdとtokenを比較し結果を返すためのメソッド
- * @param uId
- * @param
- */
- return true;
- }
-
- public static boolean checkPassword(String uId, String pw) {
- /**
- * UIDをキーにパスワードを引き抜き参照
- * @param uId
- * @param pw String userが提示したパスワード
- * @param pw_ans String DBに格納されたパスワード
- *
- * TODO:パスワードはhash、塩コショウかけて味を調える
- */
- Session session = SessionManager.getInstance().getSession();
- Password findPassword = (Password) session.load(Password.class, uId);
- if (findPassword.getPw().equals(pw)) {
- return true;
- } else {
- return false;
- }
- }
- }