From 8744ded019791054660b89ab0030ab7c231f3df1 Mon Sep 17 00:00:00 2001 From: Dmitrii Reshetnikov Date: Sat, 7 May 2022 22:51:35 +0400 Subject: [PATCH 1/2] BigNumbers complete --- .../java/com/epam/izh/rd/online/Main.java | 12 +++++++- .../service/SimpleBigNumbersService.java | 29 +++++++++++++++++-- .../izh/rd/online/BigNumbersServiceTest.java | 4 +-- 3 files changed, 40 insertions(+), 5 deletions(-) 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..c1b70efa 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,14 @@ package com.epam.izh.rd.online; +import com.epam.izh.rd.online.service.SimpleBigNumbersService; + +import java.math.BigDecimal; +import java.math.RoundingMode; + public class Main { -} + public static void main(String[] args) { + SimpleBigNumbersService simpleBigNumbersService = new SimpleBigNumbersService(); + System.out.println(simpleBigNumbersService.getPrimaryNumber(101)); + System.out.println(simpleBigNumbersService.getPrecisionNumber(1,3,2)); + } +} \ 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..8436f21d 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.math.RoundingMode; +import java.util.stream.IntStream; public class SimpleBigNumbersService implements BigNumbersService { @@ -13,9 +15,18 @@ public class SimpleBigNumbersService implements BigNumbersService { */ @Override public BigDecimal getPrecisionNumber(int a, int b, int range) { - return null; + return new BigDecimal(a).divide(new BigDecimal(b), range, RoundingMode.HALF_UP); } + public boolean isSimple(int number){ + for (int i = 2; i < (Math.sqrt(number)+2); i++) { + if (number % i == 0) { + return false; + //break; + } + } + return true; + } /** * Метод находит простое число по номеру * @@ -24,6 +35,20 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) { */ @Override public BigInteger getPrimaryNumber(int range) { - return null; + int simpleNumber = 2; + if (range == 0){ + simpleNumber = 0; + }else + { + if (range >= 2){ + simpleNumber = 3; + for (int i = 2; i < range ; i++) { + do { + simpleNumber += 2; + } while (!isSimple(simpleNumber)); + } + } + } + return BigInteger.valueOf(simpleNumber); } } diff --git a/src/test/java/com/epam/izh/rd/online/BigNumbersServiceTest.java b/src/test/java/com/epam/izh/rd/online/BigNumbersServiceTest.java index d86a5fe3..b4ccabd5 100644 --- a/src/test/java/com/epam/izh/rd/online/BigNumbersServiceTest.java +++ b/src/test/java/com/epam/izh/rd/online/BigNumbersServiceTest.java @@ -30,7 +30,7 @@ void testGetPrecisionNumber() { @Test @DisplayName("Тест метода BigNumbersService.getPrimaryNumber(int range)") void testGetPrimaryNumber() { - assertEquals(BigInteger.valueOf(547), bigNumbersService.getPrimaryNumber(100), - "Для вызова метода: bigNumbersService.getPrimaryNumber(100)"); + assertEquals(BigInteger.valueOf(547), bigNumbersService.getPrimaryNumber(101), + "Для вызова метода: bigNumbersService.getPrimaryNumber(101)"); } } From 47c938dad72480749490b995332ca4d999670400 Mon Sep 17 00:00:00 2001 From: Dmitrii Reshetnikov Date: Sat, 28 May 2022 19:52:48 +0400 Subject: [PATCH 2/2] All tests are doing! --- .../java/com/epam/izh/rd/online/Main.java | 22 +++++-- .../service/SimpleBigNumbersService.java | 1 - .../rd/online/service/SimpleDateService.java | 22 ++++--- .../online/service/SimpleRegExpService.java | 62 ++++++++++++++++++- .../rd/online/service/SimpleTextService.java | 35 ++++++++--- 5 files changed, 118 insertions(+), 24 deletions(-) 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 c1b70efa..fc8254c8 100644 --- a/src/main/java/com/epam/izh/rd/online/Main.java +++ b/src/main/java/com/epam/izh/rd/online/Main.java @@ -1,14 +1,26 @@ package com.epam.izh.rd.online; -import com.epam.izh.rd.online.service.SimpleBigNumbersService; +import com.epam.izh.rd.online.service.*; +import java.io.IOException; import java.math.BigDecimal; import java.math.RoundingMode; public class Main { - public static void main(String[] args) { - SimpleBigNumbersService simpleBigNumbersService = new SimpleBigNumbersService(); - System.out.println(simpleBigNumbersService.getPrimaryNumber(101)); - System.out.println(simpleBigNumbersService.getPrecisionNumber(1,3,2)); + public static void main(String[] args) throws IOException { + SimpleRegExpService simpleRegExpService = new SimpleRegExpService(); + System.out.println(simpleRegExpService.maskSensitiveData()); + System.out.println(simpleRegExpService.replacePlaceholders(2,6)); + /* + SimpleTextService simpleTextService = new SimpleTextService(); + System.out.println(simpleTextService.removeString("Hello, hello, hello, how low?", ", he")); + System.out.println(simpleTextService.isQuestionString("HHHbgaghaj jjshdsgd hdhdhdh")); + System.out.println(simpleTextService.concatenate("Hi", " ", "all", " ", "boys")); + System.out.println(simpleTextService.toJumpCase("First string, second string")); + System.out.println(simpleTextService.isPalindrome("а роза упала на лапу Азора")); + System.out.println(simpleTextService.isPalindrome("а роза уп на лапу Азора")); + System.out.println(simpleTextService.isPalindrome(",")); +*/ + } } \ 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 8436f21d..59f7f444 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 @@ -22,7 +22,6 @@ public boolean isSimple(int number){ for (int i = 2; i < (Math.sqrt(number)+2); i++) { if (number % i == 0) { return false; - //break; } } return true; 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..1da1b952 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,9 @@ import java.time.LocalDate; import java.time.LocalDateTime; +import java.time.Year; import java.time.format.DateTimeFormatter; +import java.util.concurrent.TimeUnit; public class SimpleDateService implements DateService { @@ -14,7 +16,8 @@ public class SimpleDateService implements DateService { */ @Override public String parseDate(LocalDate localDate) { - return null; + DateTimeFormatter formatters = DateTimeFormatter.ofPattern("dd-MM-uuuu"); + return localDate.format(formatters); } /** @@ -25,7 +28,8 @@ public String parseDate(LocalDate localDate) { */ @Override public LocalDateTime parseString(String string) { - return null; + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); + return LocalDateTime.parse(string, formatter); } /** @@ -37,7 +41,7 @@ public LocalDateTime parseString(String string) { */ @Override public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) { - return null; + return localDate.format(formatter); } /** @@ -47,7 +51,10 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma */ @Override public long getNextLeapYear() { - return 0; + LocalDate now = LocalDate.now(); + long year = now.getYear(); + while (!Year.isLeap(++year)); + return year; } /** @@ -56,9 +63,8 @@ public long getNextLeapYear() { * @return число секунд */ @Override - public long getSecondsInYear(int year) { - return 0; + public long getSecondsInYear(int year) + { + return TimeUnit.DAYS.toSeconds( Year.of(year).length() ); } - - } 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..d31f5f74 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,10 @@ package com.epam.izh.rd.online.service; +import java.io.*; +import java.nio.charset.Charset; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + public class SimpleRegExpService implements RegExpService { /** @@ -11,7 +16,33 @@ public class SimpleRegExpService implements RegExpService { */ @Override public String maskSensitiveData() { - return null; + StringBuilder result = new StringBuilder(); + String regex = "(\\d{4}\\s){4}"; + Pattern pattern = Pattern.compile(regex); + + String fileName = // "/sensitive_data.txt"; + File.separator + "sensitive_data.txt"; + + ClassLoader classLoader = getClass().getClassLoader(); + try (InputStream is = classLoader.getResourceAsStream(fileName); + BufferedReader reader = new BufferedReader(new InputStreamReader(is, Charset.defaultCharset()))) + { + String line; + while ((line = reader.readLine()) != null) + { + Matcher matcher = pattern.matcher(line); + StringBuilder stringBuilder = new StringBuilder(line); + while (matcher.find()) { + stringBuilder.replace(matcher.start()+4,matcher.end()-5," **** **** "); + } + result.append(stringBuilder); + } + + } catch (IOException e) { + e.printStackTrace(); + } + + return result.toString(); } /** @@ -22,6 +53,33 @@ public String maskSensitiveData() { */ @Override public String replacePlaceholders(double paymentAmount, double balance) { - return null; +// String result = ""; + StringBuilder result = new StringBuilder(); + String regex1 = "\\$\\{payment_amount}"; + Pattern pattern1 = Pattern.compile(regex1); + String regex2 = "\\$\\{balance}"; + Pattern pattern2 = Pattern.compile(regex2); + + String fileName = // "/sensitive_data.txt"; + File.separator + "sensitive_data.txt"; + + ClassLoader classLoader = getClass().getClassLoader(); + try (InputStream is = classLoader.getResourceAsStream(fileName); + BufferedReader reader = new BufferedReader(new InputStreamReader(is, Charset.defaultCharset()))) + { + String line; + while ((line = reader.readLine()) != null) + { + line = line.replaceAll(regex1, Integer.toString((int)paymentAmount)); + line = line.replaceAll(regex2, Integer.toString((int)balance)); + + result.append(line); + } + + } catch (IOException e) { + e.printStackTrace(); + } + + return result.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..1baac42a 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.Arrays; + public class SimpleTextService implements TextService { /** @@ -12,8 +14,9 @@ public class SimpleTextService implements TextService { * @param remove - строка которую необходимо удалить */ @Override - public String removeString(String base, String remove) { - return null; //TODO + public String removeString(String base, String remove) + { + return base.replaceAll(remove, ""); } /** @@ -23,8 +26,9 @@ public String removeString(String base, String remove) { * Например для строки "Hello, hello, hello!" метод вернет false */ @Override - public boolean isQuestionString(String text) { - return false; //TODO + public boolean isQuestionString(String text) + { + return text.endsWith("?"); } /** @@ -34,8 +38,14 @@ public boolean isQuestionString(String text) { * метод вернет "Smells Like Teen Spirit" */ @Override - public String concatenate(String... elements) { - return null; //TODO + public String concatenate(String... elements) + { + StringBuilder result = new StringBuilder(); + for (String s: elements) + { + result.append(s); + } + return result.toString(); } /** @@ -47,7 +57,12 @@ public String concatenate(String... elements) { */ @Override public String toJumpCase(String text) { - return null; //TODO + char[] result = text.toCharArray(); + for (int i = 0; i < result.length-1; i += 2) { + result[i] = Character.toLowerCase(result[i]); + result[i+1] = Character.toUpperCase(result[i+1]); + } + return String.valueOf(result); } /** @@ -59,6 +74,10 @@ public String toJumpCase(String text) { */ @Override public boolean isPalindrome(String string) { - return false; //TODO + StringBuilder stringBuilder = new StringBuilder(string.replaceAll("\\s", "")); + if (string.length() > 1) + { + return (stringBuilder.toString().equalsIgnoreCase(stringBuilder.reverse().toString())); + }else return false; } }