Advertisement
Guest User

Untitled

a guest
Mar 7th, 2018
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.97 KB | None | 0 0
  1. package tech.ignatyev.polychat.backend;
  2.  
  3. import android.support.annotation.NonNull;
  4.  
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.util.List;
  8.  
  9. import tech.ignatyev.polychat.backend.database.Database;
  10.  
  11. public class User {
  12.  
  13.     private int id;
  14.     private @NonNull String login;
  15.     private @NonNull String password;
  16.     private @NonNull String email;
  17.     private @NonNull String name;
  18.     private int age;
  19.     private @NonNull Gender gender;
  20.     private Database database;
  21.  
  22.     public enum Gender {
  23.         @NonNull NONE(0), @NonNull MAN(1), @NonNull WOMEN(2);
  24.  
  25.         private int number;
  26.  
  27.         Gender(int number){
  28.             this.number = number;
  29.         }
  30.  
  31.         public int getNumber() {
  32.             return number;
  33.         }
  34.  
  35.         public static Gender getByNumber(int genderNumber){
  36.             switch (genderNumber){
  37.                 case 1:
  38.                     return MAN;
  39.                 case 2:
  40.                     return WOMEN;
  41.                 default:
  42.                     return NONE;
  43.             }
  44.         }
  45.  
  46.         @Override
  47.         public String toString() {
  48.             switch (number){
  49.                 case 1:
  50.                     return "man";
  51.                 case 2:
  52.                     return "women";
  53.                 default:
  54.                     return "none";
  55.             }
  56.         }
  57.     }
  58.  
  59.     public User(int id, @NonNull String login, @NonNull String password, @NonNull String email) throws SQLException {
  60.         this(id, login, password, email, "none", 0, Gender.NONE);
  61.     }
  62.  
  63.     public User(int id, @NonNull String login, @NonNull String password, @NonNull String email, @NonNull String name, int age, @NonNull Gender gender) throws SQLException {
  64.         this.id = id;
  65.         this.login = login;
  66.         this.password = password;
  67.         this.email = email;
  68.         this.name = name;
  69.         this.age = age;
  70.         this.gender = gender;
  71.         database = Database.connect();
  72.     }
  73.  
  74.     /**
  75.      * Регистрируем пользователя и добовляем в базу
  76.      * @param login логин пользователя
  77.      * @param password пароль пользователя
  78.      * @param email почта пользователя
  79.      * @return зарегестрированный пользователь
  80.      */
  81.     public static @NonNull User register(String login, String password, String email) {
  82.         User user = null;
  83.         try {
  84.             Database database = Database.connect();
  85.             ResultSet result = database.query("SELECT COUNT(*) FROM Users");
  86.             while (result.next()) {
  87.                 user = new User(result.getInt(1), login, password, email);
  88.             }
  89.             System.out.println(String.format("INSERT INTO Users VALUES (%s, %s, %s, %s, %s, %s, %s)", user.getId(), user.getLogin(),
  90.                     user.getPassword(), user.getEmail(), user.getName(), user.getAge(), user.getGender()));
  91.             database.update(String.format("INSERT INTO Users VALUES (%s, '%s', '%s', '%s', '%s', %s, '%s')", user.getId(), user.getLogin(),
  92.             user.getPassword(), user.getEmail(), user.getName(), user.getAge(), user.getGender()));
  93.             database.close();
  94.         }catch (SQLException | NullPointerException ex){
  95.             ex.printStackTrace();
  96.         }
  97.         return user;
  98.     }
  99.  
  100.     /**
  101.      * Получить пользователя по идентификатору
  102.      * @param id идентификатор пользователя
  103.      * @return пользователь с идентификатором = id
  104.      * @throws SQLException на случай если что-то пойдет не так
  105.      */
  106.     public static @NonNull User getById(int id) throws SQLException {
  107.         return getByField("id", String.valueOf(id));
  108.     }
  109.  
  110.     /**
  111.      * Получить пользователя по логину
  112.      * @param login логин пользователя
  113.      * @return пользователь с логином = login
  114.      * @throws SQLException на случай если что-то пойдет не так
  115.      */
  116.     public static @NonNull User getByLogin(String login) throws SQLException {
  117.         return getByField("login", login);
  118.     }
  119.  
  120.     /**
  121.      * Получить пользователя по электронной почте
  122.      * @param email электронная почта пользователя
  123.      * @return пользователь с электронной почтой = email
  124.      * @throws SQLException на случай если что-то пойдет не так
  125.      */
  126.     public static @NonNull User getByEmail(String email) throws SQLException {
  127.         return getByField("email", email);
  128.     }
  129.  
  130.     /**
  131.      * Получить пользователя по любому уникальному полю
  132.      * @param fieldName имя поля
  133.      * @param fieldValue требуемое значение поля
  134.      * @return пользователь с fieldName = fieldValue
  135.      * @throws SQLException на случай если что-то пойдет не так
  136.      */
  137.     public static User getByField(String fieldName, String fieldValue) throws SQLException {
  138.         Database database = Database.connect();
  139.         ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE %s='%s'", fieldName, fieldValue));
  140.         database.close();
  141.         return new User(resultSet.getInt("id"), resultSet.getString("login"), resultSet.getString("password"), resultSet.getString("email"),
  142.                 resultSet.getString("name"), resultSet.getInt("age"), Gender.getByNumber(resultSet.getInt("gender")));
  143.     }
  144.  
  145.     public static boolean isLoginFree(String login) throws SQLException {
  146.         Database database = Database.connect();
  147.         ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE login='%s'", login));
  148.         //database.close();
  149.         return resultSet.next();
  150.     }
  151.  
  152.     public static boolean isEmailFree(String email) throws SQLException {
  153.         Database database = Database.connect();
  154.         ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE email='%s'", email));
  155.         //database.close();
  156.         return resultSet.next();
  157.     }
  158.  
  159.     /**
  160.      * @return идентификатор пользователя
  161.      */
  162.     public int getId() {
  163.         return id;
  164.     }
  165.  
  166.     /**
  167.      * @return логин пользователя
  168.      */
  169.     public @NonNull String getLogin() {
  170.         return login;
  171.     }
  172.  
  173.     public void setLogin(@NonNull String login) {
  174.         this.login = login;
  175.     }
  176.  
  177.     /**
  178.      * @return пароль пользователя
  179.      */
  180.     public @NonNull String getPassword() {
  181.         return password;
  182.     }
  183.  
  184.     public void setPassword(@NonNull String password) {
  185.         this.password = password;
  186.     }
  187.  
  188.     /**
  189.      * @return элелктронная почта пользователя
  190.      */
  191.     public @NonNull String getEmail() {
  192.         return email;
  193.     }
  194.  
  195.     public void setEmail(@NonNull String email) {
  196.         this.email = email;
  197.     }
  198.  
  199.     /**
  200.      * @return имя пользователя
  201.      */
  202.     public @NonNull String getName() {
  203.         return name;
  204.     }
  205.  
  206.     public void setName(@NonNull String name) {
  207.         this.name = name;
  208.     }
  209.  
  210.     /**
  211.      * @return возраст пользователя
  212.      */
  213.     public int getAge() {
  214.         return age;
  215.     }
  216.  
  217.     public void setAge(int age) {
  218.         this.age = age;
  219.     }
  220.  
  221.     /**
  222.      * @return пол пользователя
  223.      */
  224.     public @NonNull Gender getGender() {
  225.         return gender;
  226.     }
  227.  
  228.     public void setGender(@NonNull Gender gender) {
  229.         this.gender = gender;
  230.     }
  231.  
  232.     /**
  233.      * Обновлаем данные пользователя в базе данных
  234.      */
  235.     public boolean update(){
  236.         try {
  237.             database.update(String.format("UPDATE Users SET login=%s, password=%s, email=%s, name=%s, age=%s, gender=%s WHERE id=%s", login, password, email, name, age, gender, id));
  238.             database.close();
  239.             return true;
  240.         }catch (SQLException ex){
  241.             ex.printStackTrace();
  242.         }
  243.         return false;
  244.     }
  245.  
  246.     /**
  247.      * @return true, если пользователь существует в базе, иначе false
  248.      */
  249.     public boolean isExists() throws SQLException {
  250.         Database database = Database.connect();
  251.         ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE id='%s'", id));
  252.         database.close();
  253.         return resultSet.next();
  254.     }
  255.  
  256.     @Override
  257.     public boolean equals(Object obj) {
  258.         return (obj instanceof User) && (((User) obj).getId() == id);
  259.     }
  260.  
  261.     @Override
  262.     public String toString() {
  263.         return String.format("id=%s\nlogin = %s\npassword=%s\nemail=%s\nname=%s\nage=%s\ngender=%s", id, login, password, email, name, age, gender);
  264.     }
  265. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement