Advertisement
Guest User

Untitled

a guest
Apr 5th, 2020
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 12.83 KB | None | 0 0
  1. package academy.todo.repos.txt;
  2.  
  3. import academy.todo.entities.User;
  4. import academy.todo.exceptions.DataAccessException;
  5. import academy.todo.interfaces.UsersPersistable;
  6.  
  7. import java.time.LocalDateTime;
  8. import java.util.*;
  9. import java.io.*;
  10. import java.nio.file.Files;
  11. import java.nio.file.Path;
  12. import java.nio.file.Paths;
  13. import java.time.LocalDate;
  14.  
  15. public class UsersRepositoryTxt implements UsersPersistable {
  16.  
  17.     private static final String USERS_COMPLETE_DATA_FILE_NAME = "usersCompleteData.txt";
  18.     private static final String TEMP_FILE_NAME_PREFIX = "temp_";
  19.  
  20.     public UsersRepositoryTxt() throws IOException {
  21.  
  22.         Path completeDataFile = Paths.get(USERS_COMPLETE_DATA_FILE_NAME);
  23.  
  24.         if (!Files.exists(completeDataFile)) {
  25.             Files.createFile(completeDataFile);
  26.  
  27.             User admin = new User();
  28.  
  29.             admin.setId(1);
  30.             admin.setUsername("admin");
  31.             admin.setPassword("adminpass");
  32.             admin.setFirstName("Administrator");
  33.             admin.setLastName("Administrator");
  34.             admin.setCreationDate(LocalDateTime.now());
  35.             admin.setCreatorId(0);
  36.             admin.setLastModificationDate(LocalDateTime.now());
  37.             admin.setLastModifierId(1);
  38.             admin.setAdmin(true);
  39.  
  40.             addUser(admin);
  41.         }
  42.     }
  43.  
  44.     public void addUser(User user) {
  45.  
  46.         try(FileWriter fileWriter = new FileWriter(USERS_COMPLETE_DATA_FILE_NAME, true);
  47.             PrintWriter printWriter = new PrintWriter(fileWriter)) {
  48.  
  49.             printWriter.println(user.getId());
  50.             printWriter.println(user.getUsername());
  51.             printWriter.println(user.getPassword());
  52.             printWriter.println(user.getFirstName());
  53.             printWriter.println(user.getLastName());
  54.             printWriter.println(user.getCreationDate());
  55.             printWriter.println(user.getCreatorId());
  56.             printWriter.println(user.getLastModificationDate());
  57.             printWriter.println(user.getLastModifierId());
  58.             printWriter.println(user.isAdmin());
  59.         } catch(Exception ex) {
  60.             throw new DataAccessException(ex);
  61.         }
  62.     }
  63.  
  64.     public User searchByUsernameAndPassword(String username, String password) {
  65.  
  66.         User foundUser = null;
  67.  
  68.         try(BufferedReader bufferedReader = new BufferedReader(new FileReader(USERS_COMPLETE_DATA_FILE_NAME))) {
  69.  
  70.             String value = "";
  71.             while ((value = bufferedReader.readLine()) != null) {
  72.  
  73.                 User user = new User();
  74.  
  75.                 user.setId(Integer.parseInt(value));
  76.                 user.setUsername(bufferedReader.readLine());
  77.                 user.setPassword(bufferedReader.readLine());
  78.                 user.setFirstName(bufferedReader.readLine());
  79.                 user.setLastName(bufferedReader.readLine());
  80.                 user.setCreationDate(LocalDateTime.parse(bufferedReader.readLine()));
  81.                 user.setCreatorId(Integer.parseInt(bufferedReader.readLine()));
  82.                 user.setLastModificationDate(LocalDateTime.parse(bufferedReader.readLine()));
  83.                 user.setLastModifierId(Integer.parseInt(bufferedReader.readLine()));
  84.                 user.setAdmin(Boolean.parseBoolean(bufferedReader.readLine()));
  85.  
  86.                 if (user.getUsername().equals(username) && user.getPassword().equals(password)) {
  87.                     foundUser = user;
  88.                     break;
  89.                 }
  90.             }
  91.             return foundUser;
  92.         } catch (Exception ex) {
  93.             throw new DataAccessException(ex);
  94.         }
  95.     }
  96.  
  97.     public int getNextId() {
  98.  
  99.         int nextId = 0;
  100.         try (BufferedReader bufferedReader = new BufferedReader(new FileReader(USERS_COMPLETE_DATA_FILE_NAME))) {
  101.  
  102.             String value = "";
  103.             while ((value = bufferedReader.readLine()) != null) {
  104.  
  105.                 User user = new User();
  106.                 user.setId(Integer.parseInt(value));
  107.  
  108.                 user.setUsername(bufferedReader.readLine());
  109.                 user.setPassword(bufferedReader.readLine());
  110.                 user.setFirstName(bufferedReader.readLine());
  111.                 user.setLastName(bufferedReader.readLine());
  112.                 user.setCreationDate(LocalDateTime.parse(bufferedReader.readLine()));
  113.                 user.setCreatorId(Integer.parseInt(bufferedReader.readLine()));
  114.                 user.setLastModificationDate(LocalDateTime.parse(bufferedReader.readLine()));
  115.                 user.setLastModifierId(Integer.parseInt(bufferedReader.readLine()));
  116.                 user.setAdmin(Boolean.parseBoolean(bufferedReader.readLine()));
  117.  
  118.                 if (nextId < user.getId()) {
  119.                     nextId = user.getId();
  120.                 }
  121.             }
  122.  
  123.             return nextId + 1;
  124.         } catch(Exception ex) {
  125.             throw new DataAccessException(ex);
  126.         }
  127.     }
  128.  
  129.     public ArrayList<User> listUsers() {
  130.         try (BufferedReader bufferedReader = new BufferedReader(new FileReader(USERS_COMPLETE_DATA_FILE_NAME))) {
  131.             ArrayList<User> listedUsers = new ArrayList<>();
  132.             String line = "";
  133.  
  134.             while ((line = bufferedReader.readLine()) != null) {
  135.  
  136.                 User user = new User();
  137.  
  138.                 user.setId(Integer.parseInt(line));
  139.                 user.setUsername(bufferedReader.readLine());
  140.                 user.setPassword(bufferedReader.readLine());
  141.                 user.setFirstName(bufferedReader.readLine());
  142.                 user.setLastName(bufferedReader.readLine());
  143.                 user.setCreationDate(LocalDateTime.parse(bufferedReader.readLine()));
  144.                 user.setCreatorId(Integer.parseInt(bufferedReader.readLine()));
  145.                 user.setLastModificationDate(LocalDateTime.parse(bufferedReader.readLine()));
  146.                 user.setLastModifierId(Integer.parseInt(bufferedReader.readLine()));
  147.                 user.setAdmin(Boolean.parseBoolean(bufferedReader.readLine()));
  148.  
  149.                 listedUsers.add(user);
  150.             }
  151.  
  152.             return listedUsers;
  153.  
  154.         } catch(Exception ex) {
  155.             throw new DataAccessException(ex);
  156.         }
  157.     }
  158.  
  159.     public void deleteUser(User user) {
  160.  
  161.         try (BufferedReader bufferedReader = new BufferedReader(new FileReader(USERS_COMPLETE_DATA_FILE_NAME));
  162.              PrintWriter printWriter = new PrintWriter(new FileWriter(TEMP_FILE_NAME_PREFIX + USERS_COMPLETE_DATA_FILE_NAME, true))) {
  163.  
  164.             String value = "";
  165.             while ((value = bufferedReader.readLine()) != null) {
  166.  
  167.                 User currentUser = new User();
  168.                 currentUser.setId(Integer.parseInt(value));
  169.  
  170.                 currentUser.setUsername(bufferedReader.readLine());
  171.                 currentUser.setPassword(bufferedReader.readLine());
  172.                 currentUser.setFirstName(bufferedReader.readLine());
  173.                 currentUser.setLastName(bufferedReader.readLine());
  174.                 currentUser.setCreationDate(LocalDateTime.parse(bufferedReader.readLine()));
  175.                 currentUser.setCreatorId(Integer.parseInt(bufferedReader.readLine()));
  176.                 currentUser.setLastModificationDate(LocalDateTime.parse(bufferedReader.readLine()));
  177.                 currentUser.setLastModifierId(Integer.parseInt(bufferedReader.readLine()));
  178.                 currentUser.setAdmin(Boolean.parseBoolean(bufferedReader.readLine()));
  179.  
  180.                 if (currentUser.getId() != user.getId()) {
  181.                     printWriter.println(currentUser.getId());
  182.                     printWriter.println(currentUser.getUsername());
  183.                     printWriter.println(currentUser.getPassword());
  184.                     printWriter.println(currentUser.getFirstName());
  185.                     printWriter.println(currentUser.getLastName());
  186.                     printWriter.println(currentUser.getCreationDate());
  187.                     printWriter.println(currentUser.getCreatorId());
  188.                     printWriter.println(currentUser.getLastModificationDate());
  189.                     printWriter.println(currentUser.getLastModifierId());
  190.                     printWriter.println(currentUser.isAdmin());
  191.                 }
  192.  
  193.             }
  194.             bufferedReader.close();
  195.             printWriter.close();
  196.  
  197.             Files.delete(Paths.get(USERS_COMPLETE_DATA_FILE_NAME));
  198.             Files.move(Paths.get(TEMP_FILE_NAME_PREFIX + USERS_COMPLETE_DATA_FILE_NAME), Paths.get(USERS_COMPLETE_DATA_FILE_NAME));
  199.  
  200.         } catch (Exception ex) {
  201.             throw new DataAccessException(ex);
  202.         }
  203.     }
  204.  
  205.     public void editUser(User user) {
  206.         try (BufferedReader bufferedReader = new BufferedReader(new FileReader(USERS_COMPLETE_DATA_FILE_NAME));
  207.              PrintWriter printWriter = new PrintWriter(new FileWriter(TEMP_FILE_NAME_PREFIX + USERS_COMPLETE_DATA_FILE_NAME, true));
  208.              ) {
  209.  
  210.             String value = "";
  211.             while((value = bufferedReader.readLine()) != null) {
  212.  
  213.                 User currentUser = new User();
  214.  
  215.                 currentUser.setId(Integer.parseInt(value));
  216.                 currentUser.setUsername(bufferedReader.readLine());
  217.                 currentUser.setPassword(bufferedReader.readLine());
  218.                 currentUser.setFirstName(bufferedReader.readLine());
  219.                 currentUser.setLastName(bufferedReader.readLine());
  220.                 currentUser.setCreationDate(LocalDateTime.parse(bufferedReader.readLine()));
  221.                 currentUser.setCreatorId(Integer.parseInt(bufferedReader.readLine()));
  222.                 currentUser.setLastModificationDate(LocalDateTime.parse(bufferedReader.readLine()));
  223.                 currentUser.setLastModifierId(Integer.parseInt(bufferedReader.readLine()));
  224.                 currentUser.setAdmin(Boolean.parseBoolean(bufferedReader.readLine()));
  225.  
  226.                 if(user.getId() != currentUser.getId()) {
  227.                     printWriter.println(currentUser.getId());
  228.                     printWriter.println(currentUser.getUsername());
  229.                     printWriter.println(currentUser.getPassword());
  230.                     printWriter.println(currentUser.getFirstName());
  231.                     printWriter.println(currentUser.getLastName());
  232.                     printWriter.println(currentUser.getCreationDate());
  233.                     printWriter.println(currentUser.getCreatorId());
  234.                     printWriter.println(currentUser.getLastModificationDate());
  235.                     printWriter.println(currentUser.getLastModifierId());
  236.                     printWriter.println(currentUser.isAdmin());
  237.                 } else {
  238.                     printWriter.println(user.getId());
  239.                     printWriter.println(user.getUsername());
  240.                     printWriter.println(user.getPassword());
  241.                     printWriter.println(user.getFirstName());
  242.                     printWriter.println(user.getLastName());
  243.                     printWriter.println(user.getCreationDate());
  244.                     printWriter.println(user.getCreatorId());
  245.                     printWriter.println(user.getLastModificationDate());
  246.                     printWriter.println(user.getLastModifierId());
  247.                     printWriter.println(user.isAdmin());
  248.                 }
  249.             }
  250.  
  251.             printWriter.close();
  252.             bufferedReader.close();
  253.  
  254.             Files.delete(Paths.get(USERS_COMPLETE_DATA_FILE_NAME));
  255.             Files.move(Paths.get(TEMP_FILE_NAME_PREFIX + USERS_COMPLETE_DATA_FILE_NAME), Paths.get(USERS_COMPLETE_DATA_FILE_NAME));
  256.  
  257.  
  258.         } catch (Exception ex) {
  259.             throw new DataAccessException(ex);
  260.         }
  261.     }
  262.  
  263.     public User findUserById(int id) {
  264.         User foundUser = null;
  265.  
  266.         try (BufferedReader bufferedReader = new BufferedReader(new FileReader(USERS_COMPLETE_DATA_FILE_NAME))) {
  267.             String value = "";
  268.             while ((value = bufferedReader.readLine()) != null) {
  269.  
  270.                 User user = new User();
  271.                 user.setId(Integer.parseInt(value));
  272.  
  273.                 user.setUsername(bufferedReader.readLine());
  274.                 user.setPassword(bufferedReader.readLine());
  275.                 user.setFirstName(bufferedReader.readLine());
  276.                 user.setLastName(bufferedReader.readLine());
  277.                 user.setCreationDate(LocalDateTime.parse(bufferedReader.readLine()));
  278.                 user.setCreatorId(Integer.parseInt(bufferedReader.readLine()));
  279.                 user.setLastModificationDate(LocalDateTime.parse(bufferedReader.readLine()));
  280.                 user.setLastModifierId(Integer.parseInt(bufferedReader.readLine()));
  281.                 user.setAdmin(Boolean.parseBoolean(bufferedReader.readLine()));
  282.  
  283.                 if (user.getId() == id) {
  284.                     foundUser = user;
  285.                     break;
  286.                 }
  287.             }
  288.             return foundUser;
  289.         } catch (Exception ex) {
  290.             throw new DataAccessException(ex);
  291.         }
  292.     }
  293. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement