Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package tech.ignatyev.polychat.backend;
- import android.support.annotation.NonNull;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.List;
- import tech.ignatyev.polychat.backend.database.Database;
- public class User {
- private int id;
- private @NonNull String login;
- private @NonNull String password;
- private @NonNull String email;
- private @NonNull String name;
- private int age;
- private @NonNull Gender gender;
- private Database database;
- public enum Gender {
- @NonNull NONE(0), @NonNull MAN(1), @NonNull WOMEN(2);
- private int number;
- Gender(int number){
- this.number = number;
- }
- public int getNumber() {
- return number;
- }
- public static Gender getByNumber(int genderNumber){
- switch (genderNumber){
- case 1:
- return MAN;
- case 2:
- return WOMEN;
- default:
- return NONE;
- }
- }
- @Override
- public String toString() {
- switch (number){
- case 1:
- return "man";
- case 2:
- return "women";
- default:
- return "none";
- }
- }
- }
- public User(int id, @NonNull String login, @NonNull String password, @NonNull String email) throws SQLException {
- this(id, login, password, email, "none", 0, Gender.NONE);
- }
- public User(int id, @NonNull String login, @NonNull String password, @NonNull String email, @NonNull String name, int age, @NonNull Gender gender) throws SQLException {
- this.id = id;
- this.login = login;
- this.password = password;
- this.email = email;
- this.name = name;
- this.age = age;
- this.gender = gender;
- database = Database.connect();
- }
- /**
- * Регистрируем пользователя и добовляем в базу
- * @param login логин пользователя
- * @param password пароль пользователя
- * @param email почта пользователя
- * @return зарегестрированный пользователь
- */
- public static @NonNull User register(String login, String password, String email) {
- User user = null;
- try {
- Database database = Database.connect();
- ResultSet result = database.query("SELECT COUNT(*) FROM Users");
- while (result.next()) {
- user = new User(result.getInt(1), login, password, email);
- }
- System.out.println(String.format("INSERT INTO Users VALUES (%s, %s, %s, %s, %s, %s, %s)", user.getId(), user.getLogin(),
- user.getPassword(), user.getEmail(), user.getName(), user.getAge(), user.getGender()));
- database.update(String.format("INSERT INTO Users VALUES (%s, '%s', '%s', '%s', '%s', %s, '%s')", user.getId(), user.getLogin(),
- user.getPassword(), user.getEmail(), user.getName(), user.getAge(), user.getGender()));
- database.close();
- }catch (SQLException | NullPointerException ex){
- ex.printStackTrace();
- }
- return user;
- }
- /**
- * Получить пользователя по идентификатору
- * @param id идентификатор пользователя
- * @return пользователь с идентификатором = id
- * @throws SQLException на случай если что-то пойдет не так
- */
- public static @NonNull User getById(int id) throws SQLException {
- return getByField("id", String.valueOf(id));
- }
- /**
- * Получить пользователя по логину
- * @param login логин пользователя
- * @return пользователь с логином = login
- * @throws SQLException на случай если что-то пойдет не так
- */
- public static @NonNull User getByLogin(String login) throws SQLException {
- return getByField("login", login);
- }
- /**
- * Получить пользователя по электронной почте
- * @param email электронная почта пользователя
- * @return пользователь с электронной почтой = email
- * @throws SQLException на случай если что-то пойдет не так
- */
- public static @NonNull User getByEmail(String email) throws SQLException {
- return getByField("email", email);
- }
- /**
- * Получить пользователя по любому уникальному полю
- * @param fieldName имя поля
- * @param fieldValue требуемое значение поля
- * @return пользователь с fieldName = fieldValue
- * @throws SQLException на случай если что-то пойдет не так
- */
- public static User getByField(String fieldName, String fieldValue) throws SQLException {
- Database database = Database.connect();
- ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE %s='%s'", fieldName, fieldValue));
- database.close();
- return new User(resultSet.getInt("id"), resultSet.getString("login"), resultSet.getString("password"), resultSet.getString("email"),
- resultSet.getString("name"), resultSet.getInt("age"), Gender.getByNumber(resultSet.getInt("gender")));
- }
- public static boolean isLoginFree(String login) throws SQLException {
- Database database = Database.connect();
- ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE login='%s'", login));
- //database.close();
- return resultSet.next();
- }
- public static boolean isEmailFree(String email) throws SQLException {
- Database database = Database.connect();
- ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE email='%s'", email));
- //database.close();
- return resultSet.next();
- }
- /**
- * @return идентификатор пользователя
- */
- public int getId() {
- return id;
- }
- /**
- * @return логин пользователя
- */
- public @NonNull String getLogin() {
- return login;
- }
- public void setLogin(@NonNull String login) {
- this.login = login;
- }
- /**
- * @return пароль пользователя
- */
- public @NonNull String getPassword() {
- return password;
- }
- public void setPassword(@NonNull String password) {
- this.password = password;
- }
- /**
- * @return элелктронная почта пользователя
- */
- public @NonNull String getEmail() {
- return email;
- }
- public void setEmail(@NonNull String email) {
- this.email = email;
- }
- /**
- * @return имя пользователя
- */
- public @NonNull String getName() {
- return name;
- }
- public void setName(@NonNull String name) {
- this.name = name;
- }
- /**
- * @return возраст пользователя
- */
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- /**
- * @return пол пользователя
- */
- public @NonNull Gender getGender() {
- return gender;
- }
- public void setGender(@NonNull Gender gender) {
- this.gender = gender;
- }
- /**
- * Обновлаем данные пользователя в базе данных
- */
- public boolean update(){
- try {
- 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));
- database.close();
- return true;
- }catch (SQLException ex){
- ex.printStackTrace();
- }
- return false;
- }
- /**
- * @return true, если пользователь существует в базе, иначе false
- */
- public boolean isExists() throws SQLException {
- Database database = Database.connect();
- ResultSet resultSet = database.query(String.format("SELECT * FROM Users WHERE id='%s'", id));
- database.close();
- return resultSet.next();
- }
- @Override
- public boolean equals(Object obj) {
- return (obj instanceof User) && (((User) obj).getId() == id);
- }
- @Override
- public String toString() {
- return String.format("id=%s\nlogin = %s\npassword=%s\nemail=%s\nname=%s\nage=%s\ngender=%s", id, login, password, email, name, age, gender);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement