From 25191a8577bfb7bd4147487e138c178a4582b495 Mon Sep 17 00:00:00 2001 From: Maksim754 Date: Tue, 15 Jun 2021 15:46:02 +0300 Subject: [PATCH] commit --- java-data-handling-template.iml | 23 +++++++ .../repository/SimpleFileRepository.java | 64 ++++++++++++++++++- .../service/SimpleBigNumbersService.java | 16 ++++- .../rd/online/service/SimpleDateService.java | 18 ++++-- .../online/service/SimpleRegExpService.java | 43 ++++++++++++- .../rd/online/service/SimpleTextService.java | 30 +++++++-- 6 files changed, 177 insertions(+), 17 deletions(-) create mode 100644 java-data-handling-template.iml 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..e37867f3 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,10 @@ package com.epam.izh.rd.online.repository; +import java.io.*; +import java.net.URL; +import java.nio.file.Files; +import java.util.stream.Collectors; + public class SimpleFileRepository implements FileRepository { /** @@ -10,7 +15,20 @@ public class SimpleFileRepository implements FileRepository { */ @Override public long countFilesInDirectory(String path) { - return 0; + long c = 0; + File dir = new File("src/main/resources/" + path); + File[] dirs = dir.listFiles(); + if (dirs != null) { + for (File file : dirs) { + if (file.isFile()) { + c++; + } + if (file.isDirectory()) { + c += countFilesInDirectory(path + "/" + file.getName()); + } + } + } + return c; } /** @@ -21,7 +39,20 @@ public long countFilesInDirectory(String path) { */ @Override public long countDirsInDirectory(String path) { - return 0; + long c = 1; + File dir = new File("src/main/resources/" + path); + File[] dirs = dir.listFiles(); + if (dirs != null) { + for (File file : dirs) { + if (file.isDirectory()) { + c++; + } + if (file.isDirectory()) { + c += countDirsInDirectory(path + "/" + file.getName())-1; + } + } + } + return c; } /** @@ -32,7 +63,16 @@ public long countDirsInDirectory(String path) { */ @Override public void copyTXTFiles(String from, String to) { - return; + File dirFrom = new File(from); + File dirTo = new File(to); + if (!dirTo.getParentFile().exists()) { + dirTo.getParentFile().mkdirs(); + } + try { + Files.copy(dirFrom.getAbsoluteFile().toPath(), dirTo.getAbsoluteFile().toPath()); + } catch (IOException e) { + e.printStackTrace(); + } } /** @@ -44,6 +84,15 @@ public void copyTXTFiles(String from, String to) { */ @Override public boolean createFile(String path, String name) { + String targetFolder = "target/classes/"; + File dir = new File(targetFolder + path); + dir.mkdir(); + File file = new File(dir.getPath() + File.separator + name); + try { + return file.createNewFile(); + } catch (IOException e) { + e.printStackTrace(); + } return false; } @@ -55,6 +104,15 @@ public boolean createFile(String path, String name) { */ @Override public String readFileFromResources(String fileName) { + URL resource = getClass().getClassLoader().getResource(fileName); + File file = new File(resource.getFile()); + try (BufferedReader in = new BufferedReader(new FileReader(file))) { + return in.lines().collect(Collectors.joining()); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } return null; } } 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..ba44c80e 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 @@ -13,7 +13,9 @@ public class SimpleBigNumbersService implements BigNumbersService { */ @Override public BigDecimal getPrecisionNumber(int a, int b, int range) { - return null; + BigDecimal firstNumber = BigDecimal.valueOf(a); + BigDecimal secondNumber = BigDecimal.valueOf(b); + return firstNumber.divide(secondNumber, range, BigDecimal.ROUND_HALF_UP); } /** @@ -24,6 +26,16 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { - return null; + int i = 0; + BigInteger number = new BigInteger("1"); + while (true) { + if (number.isProbablePrime(range)) { + if (i == range) { + return number; + } + i++; + } + number = number.add(new BigInteger("1")); + } } } 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..8f4a36a7 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,6 +2,7 @@ import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.Year; import java.time.format.DateTimeFormatter; public class SimpleDateService implements DateService { @@ -14,7 +15,7 @@ public class SimpleDateService implements DateService { */ @Override public String parseDate(LocalDate localDate) { - return null; + return localDate.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")); } /** @@ -25,7 +26,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 +38,7 @@ public LocalDateTime parseString(String string) { */ @Override public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) { - return null; + return localDate.format(formatter); } /** @@ -47,7 +48,11 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma */ @Override public long getNextLeapYear() { - return 0; + int y = Year.now().getValue(); + while (!Year.of(y).isLeap()) { + y++; + } + return y; } /** @@ -57,7 +62,10 @@ public long getNextLeapYear() { */ @Override public long getSecondsInYear(int year) { - return 0; + if (Year.isLeap(year)) { + return LocalDate.now().lengthOfYear() * 24 * 3600 + 24 * 3600; + } + return LocalDate.now().lengthOfYear() * 24 * 3600; } 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..2d7cddd6 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,12 @@ 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.util.regex.Matcher; +import java.util.regex.Pattern; + public class SimpleRegExpService implements RegExpService { /** @@ -11,7 +18,24 @@ public class SimpleRegExpService implements RegExpService { */ @Override public String maskSensitiveData() { - return null; + File file = new File("src/main/resources/sensitive_data.txt"); + String text = ""; + try (BufferedReader reader = new BufferedReader(new FileReader(file))) { + text = reader.readLine(); + }catch (IOException e) { + e.printStackTrace(); + } + String regex = "\\d{4}\\s\\d{4}\\s\\d{4}\\s\\d{4}"; + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(text); + String cardNumber; + String[] numberParts; + while (matcher.find()) { + cardNumber = matcher.group(); + numberParts = cardNumber.split(" "); + text = text.replaceAll(cardNumber,numberParts[0] + " **** **** " + numberParts[3]); + } + return text; } /** @@ -22,6 +46,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(); + } catch (IOException e) { + e.printStackTrace(); + } + Pattern pattern = Pattern.compile("\\$\\{.*?}"); + Matcher matcher = pattern.matcher(text); + while (matcher.find()) { + if (matcher.group().equals("${payment_amount}")) { + text = text.replaceAll("\\$\\{payment_amount}", "" + (int)paymentAmount); + } else if (matcher.group().equals("${balance}")) { + text = text.replaceAll("\\$\\{balance}", "" + (int)balance); + } + } + 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..fd7977d2 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 @@ -13,7 +13,7 @@ public class SimpleTextService implements TextService { */ @Override public String removeString(String base, String remove) { - return null; //TODO + return base.replaceAll(remove,""); } /** @@ -24,7 +24,7 @@ public String removeString(String base, String remove) { */ @Override public boolean isQuestionString(String text) { - return false; //TODO + return text.endsWith("?"); } /** @@ -35,7 +35,12 @@ public boolean isQuestionString(String text) { */ @Override public String concatenate(String... elements) { - return null; //TODO + StringBuilder stringBuilder = new StringBuilder(elements.length); + for (String item:elements + ) { + stringBuilder.append(item); + } + return stringBuilder.toString(); } /** @@ -47,7 +52,15 @@ public String concatenate(String... elements) { */ @Override public String toJumpCase(String text) { - return null; //TODO + char[] myChars = text.toCharArray(); + for (int i = 0; i < myChars.length; i++) { + if (i % 2 == 0) { + myChars[i] = Character.toLowerCase(myChars[i]); + } else { + myChars[i] = Character.toUpperCase(myChars[i]); + } + } + return String.valueOf(myChars); } /** @@ -59,6 +72,13 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { - return false; //TODO + if (string.length() == 0) {return false;} + string = string.toLowerCase(); + string = string.replaceAll(" ", ""); + int len = string.length(); + for (int i = 0; i < len/2; i++) { + if (string.charAt(i) != string.charAt(len-i-1)){return false;} + } + return true; } }