From 7c212c17e4bb3357d6d7614aaeebbfb431d84c4c Mon Sep 17 00:00:00 2001 From: Gata Date: Sat, 12 Jun 2021 21:11:10 +0400 Subject: [PATCH] gotovo --- java-data-handling-template.iml | 23 +++++++ .../repository/SimpleFileRepository.java | 61 +++++++++++++++++-- .../service/SimpleBigNumbersService.java | 11 +++- .../rd/online/service/SimpleDateService.java | 19 ++++-- .../online/service/SimpleRegExpService.java | 44 ++++++++++++- .../rd/online/service/SimpleTextService.java | 33 ++++++++-- .../resources/testDirCreateFile/newFile.txt | 0 .../resourcestestDirCreateFile/newFile.txt | 0 testDirCreateFile/newFile.txt | 0 9 files changed, 174 insertions(+), 17 deletions(-) create mode 100644 java-data-handling-template.iml create mode 100644 src/main/resources/testDirCreateFile/newFile.txt create mode 100644 src/main/resourcestestDirCreateFile/newFile.txt create mode 100644 testDirCreateFile/newFile.txt diff --git a/java-data-handling-template.iml b/java-data-handling-template.iml new file mode 100644 index 00000000..5e9ffdc5 --- /dev/null +++ b/java-data-handling-template.iml @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java b/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java index 1783b845..5799d7b7 100644 --- a/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java +++ b/src/main/java/com/epam/izh/rd/online/repository/SimpleFileRepository.java @@ -1,5 +1,11 @@ package com.epam.izh.rd.online.repository; +import java.io.*; +import java.nio.file.Files; +import java.util.List; + +import static java.nio.file.StandardCopyOption.REPLACE_EXISTING; + public class SimpleFileRepository implements FileRepository { /** @@ -10,7 +16,16 @@ public class SimpleFileRepository implements FileRepository { */ @Override public long countFilesInDirectory(String path) { - return 0; + File dir = new File("src/main/resources/" + path); + long counter = 0; + if (dir.isDirectory()) { + for (File file : dir.listFiles()) { + counter += countFilesInDirectory(path + "/" + file.getName()); + } + } else { + counter++; + } + return counter; } /** @@ -21,7 +36,16 @@ public long countFilesInDirectory(String path) { */ @Override public long countDirsInDirectory(String path) { - return 0; + long counter = 1; + File dir = new File("src/main/resources/" + path); + if (dir.isDirectory()) { + for (File file : dir.listFiles()){ + if (file.isDirectory()){ + counter += countDirsInDirectory(path + "/" + file.getName()); + } + } + } + return counter; } /** @@ -32,9 +56,19 @@ public long countDirsInDirectory(String path) { */ @Override public void copyTXTFiles(String from, String to) { - return; + File originalDir = new File(from); + File finalDir = new File(to); + if (!finalDir.exists()) { + finalDir.mkdir(); + } + try { + Files.copy(originalDir.toPath(), finalDir.toPath(), REPLACE_EXISTING); + } catch (IOException e) { + e.printStackTrace(); + } } + /** * Метод создает файл на диске с расширением txt * @@ -44,6 +78,18 @@ public void copyTXTFiles(String from, String to) { */ @Override public boolean createFile(String path, String name) { + File directory = new File(getClass().getResource("/").getPath() + "/" + path); + + if (!directory.exists()) { + directory.mkdir(); + } + + File file = new File(directory + "/" + name); + try { + return file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } return false; } @@ -55,6 +101,13 @@ public boolean createFile(String path, String name) { */ @Override public String readFileFromResources(String fileName) { - return null; + File file = new File("src/main/resources/", fileName); + try { + List result = Files.readAllLines(file.toPath()); + return result.get(0); + } catch (IOException e) { + e.printStackTrace(); + } + return ""; } } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java index a94c7bba..27acb019 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java @@ -2,6 +2,7 @@ import java.math.BigDecimal; import java.math.BigInteger; +import java.math.RoundingMode; public class SimpleBigNumbersService implements BigNumbersService { @@ -13,7 +14,9 @@ public class SimpleBigNumbersService implements BigNumbersService { */ @Override public BigDecimal getPrecisionNumber(int a, int b, int range) { - return null; + BigDecimal aNew = new BigDecimal(a); + BigDecimal bNew = new BigDecimal(b); + return aNew.divide(bNew, range, RoundingMode.HALF_UP); } /** @@ -24,6 +27,10 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { - return null; + BigInteger primaryNumber = new BigInteger("2"); + for(int i = 0; i < range; i++){ + primaryNumber = primaryNumber.nextProbablePrime(); + } + return primaryNumber; } } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java index 70d64dfd..1d100544 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleDateService.java @@ -2,7 +2,12 @@ import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.Period; +import java.time.Year; import java.time.format.DateTimeFormatter; +import java.util.stream.IntStream; + +import static java.time.LocalDate.now; public class SimpleDateService implements DateService { @@ -14,7 +19,7 @@ public class SimpleDateService implements DateService { */ @Override public String parseDate(LocalDate localDate) { - return null; + return localDate.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")); } /** @@ -25,7 +30,7 @@ public String parseDate(LocalDate localDate) { */ @Override public LocalDateTime parseString(String string) { - return null; + return LocalDateTime.parse(string, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); } /** @@ -37,7 +42,7 @@ public LocalDateTime parseString(String string) { */ @Override public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) { - return null; + return localDate.format(formatter); } /** @@ -47,7 +52,11 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma */ @Override public long getNextLeapYear() { - return 0; + long year = now().getYear(); + do { + year++; + } while (!Year.isLeap(year)); + return year; } /** @@ -57,7 +66,7 @@ public long getNextLeapYear() { */ @Override public long getSecondsInYear(int year) { - return 0; + return (Year.isLeap(year) ? 3600 * 24 * 366 : 3600 * 24 * 365); } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java index b6eff56b..791623d6 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleRegExpService.java @@ -1,5 +1,14 @@ package com.epam.izh.rd.online.service; +import java.io.BufferedReader; +import java.io.File; +import java.io.FileReader; +import java.io.IOException; +import java.nio.file.Files; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class SimpleRegExpService implements RegExpService { /** @@ -11,6 +20,24 @@ public class SimpleRegExpService implements RegExpService { */ @Override public String maskSensitiveData() { + File file = new File("src/main/resources", "sensitive_data.txt"); + Pattern pattern = Pattern.compile("\\d{4}\\s(\\d{4}?)\\s(\\d{4}?)\\s\\d{4}"); + Matcher matcher; + int counter = 0; + try { + List result = Files.readAllLines(file.toPath()); + while (counter < result.size()){ + matcher = pattern.matcher(result.get(counter)); + while (matcher.find()) { + String[] parts = matcher.group().split(" "); + result.set(counter, result.get(counter).replaceFirst(String.valueOf(pattern), parts[0] + " **** **** " + parts[parts.length - 1])); + } + counter++; + } + return result.get(0); + } catch (IOException e) { + e.printStackTrace(); + } return null; } @@ -22,6 +49,21 @@ public String maskSensitiveData() { */ @Override public String replacePlaceholders(double paymentAmount, double balance) { - return null; + String text = ""; + try (BufferedReader reader = new BufferedReader(new FileReader("src/main/resources/sensitive_data.txt"))) { + text = reader.readLine(); + Pattern pattern = Pattern.compile("\\$\\{.*?}"); + Matcher matcher = pattern.matcher(text); + while (matcher.find()) { + if (matcher.group().equals("${payment_amount}")) { + text = text.replaceAll("\\$\\{payment_amount}", String.valueOf((int)paymentAmount)); + } else if (matcher.group().equals("${balance}")) { + text = text.replaceAll("\\$\\{balance}", String.valueOf((int)balance)); + } + } + } catch (IOException e) { + e.printStackTrace(); + } + return text; } } diff --git a/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java index 68951fbe..888c32aa 100644 --- a/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java +++ b/src/main/java/com/epam/izh/rd/online/service/SimpleTextService.java @@ -1,5 +1,7 @@ package com.epam.izh.rd.online.service; +import java.util.Locale; + public class SimpleTextService implements TextService { /** @@ -13,7 +15,7 @@ public class SimpleTextService implements TextService { */ @Override public String removeString(String base, String remove) { - return null; //TODO + return base.replaceAll(remove, ""); } /** @@ -24,7 +26,7 @@ public String removeString(String base, String remove) { */ @Override public boolean isQuestionString(String text) { - return false; //TODO + return text.endsWith("?"); } /** @@ -35,7 +37,11 @@ public boolean isQuestionString(String text) { */ @Override public String concatenate(String... elements) { - return null; //TODO + String newStr = ""; + for (String str : elements) { + newStr = newStr.concat(str); + } + return newStr; } /** @@ -47,7 +53,19 @@ public String concatenate(String... elements) { */ @Override public String toJumpCase(String text) { - return null; //TODO + char[] def = text.toCharArray(); + text = ""; + boolean flag = true; + for (char ch : def){ + if (flag) { + text += Character.toLowerCase(ch); + flag = false; + } else { + text += Character.toUpperCase(ch); + flag = true; + } + } + return text; } /** @@ -59,6 +77,11 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { - return false; //TODO + String raw = string.toLowerCase(Locale.ROOT).replace(" ", "").replace(",", ""); + String palindrome = new StringBuilder(raw).reverse().toString(); + if (raw.isEmpty()) { + return false; + } + return palindrome.equals(raw); } } diff --git a/src/main/resources/testDirCreateFile/newFile.txt b/src/main/resources/testDirCreateFile/newFile.txt new file mode 100644 index 00000000..e69de29b diff --git a/src/main/resourcestestDirCreateFile/newFile.txt b/src/main/resourcestestDirCreateFile/newFile.txt new file mode 100644 index 00000000..e69de29b diff --git a/testDirCreateFile/newFile.txt b/testDirCreateFile/newFile.txt new file mode 100644 index 00000000..e69de29b