From 0d131f8fe677afd785ab17c8123cb493e309ed6f Mon Sep 17 00:00:00 2001 From: AlCor Date: Fri, 18 Dec 2020 15:58:34 +0400 Subject: [PATCH 1/2] 1 --- java-data-handling-template.iml | 23 +++++++++++++++++++ .../service/SimpleBigNumbersService.java | 7 +++++- 2 files changed, 29 insertions(+), 1 deletion(-) 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/service/SimpleBigNumbersService.java b/src/main/java/com/epam/izh/rd/online/service/SimpleBigNumbersService.java index a94c7bba..f5b17495 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,8 @@ public class SimpleBigNumbersService implements BigNumbersService { */ @Override public BigDecimal getPrecisionNumber(int a, int b, int range) { - return null; + BigDecimal result = new BigDecimal(a).divide(new BigDecimal(b),2, RoundingMode.HALF_UP) ; + return result; } /** @@ -24,6 +26,9 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { + for (int i = 1 ; i<= range ; i++){ + + } return null; } } From 846577f633ae82b9b95c1aab6b100687beaba18f Mon Sep 17 00:00:00 2001 From: AlCor Date: Mon, 8 Feb 2021 09:36:51 +0400 Subject: [PATCH 2/2] commit --- .../repository/SimpleFileRepository.java | 78 +++++++++++++++++-- .../izh/rd/online/service/DateService.java | 4 +- .../service/SimpleBigNumbersService.java | 9 ++- .../rd/online/service/SimpleDateService.java | 14 +++- .../online/service/SimpleRegExpService.java | 38 ++++++++- .../rd/online/service/SimpleTextService.java | 24 ++++-- src/main/resources/sensitive_data.txt | 2 +- 7 files changed, 146 insertions(+), 23 deletions(-) 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..38674ef9 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,12 @@ package com.epam.izh.rd.online.repository; +import java.io.*; +import java.net.URISyntaxException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + + public class SimpleFileRepository implements FileRepository { /** @@ -10,7 +17,17 @@ public class SimpleFileRepository implements FileRepository { */ @Override public long countFilesInDirectory(String path) { - return 0; + long sum = 0 ; + + File[] files = new File("./src/main/resources/" + path).listFiles() ; + + for (File file : files ) { + if(file.isFile()) + sum++; + else + sum+= countFilesInDirectory(path + "/" + file.getName()); + } + return sum; } /** @@ -21,7 +38,15 @@ public long countFilesInDirectory(String path) { */ @Override public long countDirsInDirectory(String path) { - return 0; + long sum = 1 ; + + File[] files = new File("./src/main/resources/" + path).listFiles() ; + + for (File file : files ) { + if(file.isDirectory()) + sum+= countDirsInDirectory(path + "/" + file.getName()); + } + return sum; } /** @@ -32,7 +57,26 @@ public long countDirsInDirectory(String path) { */ @Override public void copyTXTFiles(String from, String to) { - return; + Path file = Paths.get(from) ; + Path fileName = file.getFileName() ; + System.out.println(fileName); + Path fileCopy = Paths.get(to) ; + System.out.println(fileCopy); + System.out.println(fileName.toString().endsWith(".txt")); + Path directory = fileCopy.getParent() ; + try { + Files.createDirectories(directory) ; + } catch (IOException e) { + e.printStackTrace(); + } + System.out.println(Files.exists(Paths.get(String.valueOf(directory)))); + + + try { + Files.copy(file, fileCopy) ; + } catch (IOException e) { + e.printStackTrace(); + } } /** @@ -44,7 +88,21 @@ public void copyTXTFiles(String from, String to) { */ @Override public boolean createFile(String path, String name) { - return false; + try { + Path pathAbs = Paths.get(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()) ; + path = pathAbs.toString() + "/" + path ; + } catch (URISyntaxException e) { + e.printStackTrace(); + } + File fold = new File(path) ; + File file = new File(path + "/" + name) ; + fold.mkdir() ; + try { + file.createNewFile() ; + } catch (IOException e) { + e.printStackTrace(); + } + return file.exists() ; } /** @@ -55,6 +113,16 @@ public boolean createFile(String path, String name) { */ @Override public String readFileFromResources(String fileName) { - return null; + try (FileReader con = new FileReader("src/main/resources/" + fileName)){ + BufferedReader content = new BufferedReader (con) ; + String text = content.readLine(); + return text; + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null ; + } } diff --git a/src/main/java/com/epam/izh/rd/online/service/DateService.java b/src/main/java/com/epam/izh/rd/online/service/DateService.java index 78ad381f..d5a5bf3f 100644 --- a/src/main/java/com/epam/izh/rd/online/service/DateService.java +++ b/src/main/java/com/epam/izh/rd/online/service/DateService.java @@ -1,14 +1,14 @@ package com.epam.izh.rd.online.service; import java.time.LocalDate; -import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; public interface DateService { String parseDate(LocalDate localDate); - LocalDateTime parseString(String string); + TemporalAccessor parseString(String string); String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter); 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 f5b17495..1bb46b7c 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 @@ -26,9 +26,10 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { - for (int i = 1 ; i<= range ; i++){ - - } - return null; + BigInteger result = new BigInteger("2") ; + for (int i = 1; i<=range ; i++){ + result = result.nextProbablePrime(); + } + return result; } } 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..6db10fff 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,8 @@ public class SimpleDateService implements DateService { */ @Override public String parseDate(LocalDate localDate) { - return null; + DateTimeFormatter format = DateTimeFormatter.ofPattern("dd-MM-yyyy") ; + return format.format(localDate); } /** @@ -25,7 +27,8 @@ public String parseDate(LocalDate localDate) { */ @Override public LocalDateTime parseString(String string) { - return null; + DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + return LocalDateTime.parse(string,format); } /** @@ -37,7 +40,7 @@ public LocalDateTime parseString(String string) { */ @Override public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) { - return null; + return formatter.format(localDate); } /** @@ -47,6 +50,9 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma */ @Override public long getNextLeapYear() { + for(int i = 2021; i<2025;i++){ + if(Year.of(i).isLeap()) return i ; + } return 0; } @@ -57,7 +63,7 @@ public long getNextLeapYear() { */ @Override public long getSecondsInYear(int year) { - return 0; + return LocalDate.of(year,1,1).lengthOfYear()*3600*24; } 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..16e5e7b5 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.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class SimpleRegExpService implements RegExpService { /** @@ -11,7 +18,23 @@ public class SimpleRegExpService implements RegExpService { */ @Override public String maskSensitiveData() { - return null; + + try (FileReader con = new FileReader("src/main/resources/sensitive_data.txt")){ + BufferedReader cont = new BufferedReader (con) ; + String text = cont.readLine(); + StringBuilder file = new StringBuilder(text); + Pattern pat = Pattern.compile("\\s*\\d{4}\\s+(\\d{4}\\s+\\d{4})\\s+\\d{4}") ; + Matcher mat = pat.matcher(file) ; + while (mat.find()) { + file.replace(mat.start(1),mat.end(1),"**** ****") ; + } + return file.toString(); + } catch (FileNotFoundException e) { + e.printStackTrace(); + } catch (IOException e) { + e.printStackTrace(); + } + return null ; } /** @@ -22,6 +45,17 @@ public String maskSensitiveData() { */ @Override public String replacePlaceholders(double paymentAmount, double balance) { - return null; + String payment = "${payment_amount}"; + String balance1 = "${balance}"; + String pay = String.valueOf((int)paymentAmount); + String bal = String.valueOf((int)balance) ; + Path path = Paths.get("src/main/resources/sensitive_data.txt"); + try { + String path1 = new String(Files.readAllBytes(path)).replace(payment,pay).replace(balance1,bal) ; + return path1; + } catch (IOException e) { + e.printStackTrace(); + } + return null ; } } 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..8e746da7 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,""); //TODO } /** @@ -24,7 +24,7 @@ public String removeString(String base, String remove) { */ @Override public boolean isQuestionString(String text) { - return false; //TODO + return text.endsWith("?") ; //TODO } /** @@ -35,7 +35,11 @@ public boolean isQuestionString(String text) { */ @Override public String concatenate(String... elements) { - return null; //TODO + StringBuilder text = new StringBuilder(); + for (String element: elements ) { + text.append(element); + } + return text.toString(); //TODO } /** @@ -47,7 +51,15 @@ public String concatenate(String... elements) { */ @Override public String toJumpCase(String text) { - return null; //TODO + char [] jump = text.toCharArray() ; + for (int i = 0 ; i < text.length() ; i++ ){ + if ((i+2)%2 ==0) { + jump[i] = Character.toLowerCase(text.charAt(i)) ; + } else { + jump[i] = Character.toUpperCase(text.charAt(i)) ; + } + } + return new String(jump); //TODO } /** @@ -59,6 +71,8 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { - return false; //TODO + StringBuilder revString = new StringBuilder(string.replaceAll(" ","")).reverse() ; + + return string.replaceAll(" ","").equalsIgnoreCase(String.valueOf(revString))&&!string.equals(""); //TODO } } diff --git a/src/main/resources/sensitive_data.txt b/src/main/resources/sensitive_data.txt index 4041aa51..58e01a12 100644 --- a/src/main/resources/sensitive_data.txt +++ b/src/main/resources/sensitive_data.txt @@ -1 +1 @@ -Вчера вечером со счета номер 4301 0234 2145 2140 был совершен перевод на счет 5042 2012 0532 2043 в размере ${payment_amount} рублей. На счету осталось ${balance} рублей +Вчера вечером со счета номер 4301 0234 2145 2140 был совершен перевод на счет 5042 2012 0532 2043 в размере ${payment_amount} рублей. На счету осталось ${balance} рублей \ No newline at end of file