diff --git a/src/main/java/com/epam/izh/rd/online/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java index 8306d877..03df5527 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -1,4 +1,19 @@ package com.epam.izh.rd.online; +import java.io.File; +import java.io.IOException; +import java.math.BigDecimal; +import java.nio.file.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Arrays; + public class Main { + public static void main(String[] args) { + BigDecimal bd1 = BigDecimal.valueOf(1); + BigDecimal bd2 = BigDecimal.valueOf(3); + BigDecimal result = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP); + System.out.println(result); + } } 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..0d600d9c 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.DirectoryStream; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + public class SimpleFileRepository implements FileRepository { /** @@ -10,7 +16,21 @@ public class SimpleFileRepository implements FileRepository { */ @Override public long countFilesInDirectory(String path) { - return 0; + long count = 0; + File file = new File("src\\main\\resources\\" + path); + File[] files = file.listFiles(); + if (files != null) { + for (File f : files + ) { + if (f.isDirectory()) { + count += countFilesInDirectory(path + "\\" + f.getName()); + } else { + count++; + } + } + } + + return count; } /** @@ -21,7 +41,18 @@ public long countFilesInDirectory(String path) { */ @Override public long countDirsInDirectory(String path) { - return 0; + long count = 1; + File file = new File("src\\main\\resources\\" + path); + File[] files = file.listFiles(); + if (files != null) { + for (File f : files + ) { + if (f.isDirectory()) { + count += countDirsInDirectory(path + "\\" + f.getName()); + } + } + } + return count; } /** @@ -32,7 +63,17 @@ public long countDirsInDirectory(String path) { */ @Override public void copyTXTFiles(String from, String to) { - return; + Path pathFrom = Paths.get("src\\main\\resources\\" + from); + try (DirectoryStream files = Files.newDirectoryStream(pathFrom)){ + for (Path path: files + ) { + if (path.toString().endsWith(".txt")){ + Files.copy(path, Paths.get("src\\main\\resources\\" + to + path.getFileName())); + } + } + } catch (IOException e) { + e.printStackTrace(); + } } /** @@ -44,7 +85,15 @@ public void copyTXTFiles(String from, String to) { */ @Override public boolean createFile(String path, String name) { - return false; + File file = new File("src\\main\\resources\\" + path); + File file2 = new File(file, name); + boolean results = false; + try { + results = (file.mkdir() && file2.createNewFile()); + } catch (IOException e) { + e.printStackTrace(); + } + return results; } /** @@ -55,6 +104,14 @@ public boolean createFile(String path, String name) { */ @Override public String readFileFromResources(String fileName) { - return null; + try (BufferedReader reader = new BufferedReader(new FileReader("src\\main\\resources\\" + fileName))) { + StringBuilder sb = new StringBuilder(); + while (reader.ready()){ + sb.append(reader.readLine()); + return sb.toString(); + } + } 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..90fb60d1 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,8 @@ import java.math.BigDecimal; import java.math.BigInteger; +import java.util.ArrayList; +import java.util.List; public class SimpleBigNumbersService implements BigNumbersService { @@ -13,7 +15,10 @@ public class SimpleBigNumbersService implements BigNumbersService { */ @Override public BigDecimal getPrecisionNumber(int a, int b, int range) { - return null; + BigDecimal bd1 = BigDecimal.valueOf(a); + BigDecimal bd2 = BigDecimal.valueOf(b); + BigDecimal result = bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP); + return result; } /** @@ -24,6 +29,19 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { - return null; + if (range == 1){ + return BigInteger.valueOf(2); + } + BigInteger bi = BigInteger.valueOf(3); + int count = 0; + while (true){ + if (bi.isProbablePrime(100)){ + count++; + } + if (count == range){ + return bi; + } + bi = bi.add(BigInteger.valueOf(2)); + } } } 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..00f10615 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 @@ -1,5 +1,7 @@ package com.epam.izh.rd.online.service; +import javax.swing.text.DateFormatter; +import java.text.SimpleDateFormat; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; @@ -14,7 +16,7 @@ public class SimpleDateService implements DateService { */ @Override public String parseDate(LocalDate localDate) { - return null; + return localDate.format(DateTimeFormatter.ofPattern("dd-MM-yyyy")); } /** @@ -25,7 +27,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 +39,7 @@ public LocalDateTime parseString(String string) { */ @Override public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) { - return null; + return localDate.format(formatter); } /** @@ -47,7 +49,15 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma */ @Override public long getNextLeapYear() { - return 0; + LocalDate localDate = LocalDate.now(); + while (true){ + if (localDate.isLeapYear()){ + break; + } + localDate = localDate.plusYears(1); + } + + return localDate.getYear(); } /** @@ -57,7 +67,8 @@ public long getNextLeapYear() { */ @Override public long getSecondsInYear(int year) { - return 0; + LocalDate localDate = LocalDate.of(year, 1,1); + return localDate.lengthOfYear() * 24 * 60 * 60; } 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..0b976103 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.FileNotFoundException; +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; + StringBuilder sb = new StringBuilder(); + try (BufferedReader reader = new BufferedReader(new FileReader("src\\main\\resources\\sensitive_data.txt"))) { + while (reader.ready()){ + sb.append(reader.readLine()); + } + + Pattern pattern = Pattern.compile(" [\\d]{4} [\\d]{4} [\\d]{4} [\\d]{4} "); + Matcher matcher = pattern.matcher(sb.toString()); + while (matcher.find()){ + int startIndex = matcher.start(); + sb.replace(startIndex + 6, startIndex + 15, "**** ****"); + } + + + } catch (IOException e) { + e.printStackTrace(); + } + return sb.toString(); } /** @@ -22,6 +46,15 @@ public String maskSensitiveData() { */ @Override public String replacePlaceholders(double paymentAmount, double balance) { - return null; + StringBuilder sb = new StringBuilder(); + try (BufferedReader reader = new BufferedReader(new FileReader("src\\main\\resources\\sensitive_data.txt"))) { + while (reader.ready()){ + String str =reader.readLine().replaceAll("\\$\\{payment_amount}", String.valueOf((int)(paymentAmount)) ); + sb.append(str.replaceAll("\\$\\{balance}", String.valueOf((int)balance))); + } + } catch (IOException e) { + e.printStackTrace(); + } + return sb.toString(); } } 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..692c4da3 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 sb = new StringBuilder(); + for (String str : elements + ) { + sb.append(str); + } + return sb.toString(); //TODO } /** @@ -47,7 +52,14 @@ public String concatenate(String... elements) { */ @Override public String toJumpCase(String text) { - return null; //TODO + StringBuilder sb = new StringBuilder(); + char[] array = text.toLowerCase().toCharArray(); + for (int i = 0; i < array.length-1; i+=2) { + sb.append(array[i]); + sb.append(String.valueOf(array[i+1]).toUpperCase()); + + } + return sb.toString(); //TODO } /** @@ -59,6 +71,13 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { - return false; //TODO + String str = string.replaceAll("\\s", "").toLowerCase(); + if (str == null)return false; + StringBuilder sb = new StringBuilder(str); + if (sb.reverse().toString().equals(str) && str !="" ){ + return true; + }else { + return false; //TODO + } } } diff --git a/src/main/resources/testDirCreateFile/newFile.txt b/src/main/resources/testDirCreateFile/newFile.txt new file mode 100644 index 00000000..e69de29b