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/Main.java b/src/main/java/com/epam/izh/rd/online/Main.java
index 8306d877..aedf04ef 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,11 @@
package com.epam.izh.rd.online;
+import com.epam.izh.rd.online.repository.FileRepository;
+import com.epam.izh.rd.online.repository.SimpleFileRepository;
+
public class Main {
+ public static void main(String[] args) {
+// SimpleFileRepository simpleFileRepository = new SimpleFileRepository();
+// simpleFileRepository.createFile("testDirCreateFile/", "sex.txt");
+ }
}
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..7e996c47 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,16 +1,25 @@
package com.epam.izh.rd.online.repository;
+import java.io.File;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.List;
+
public class SimpleFileRepository implements FileRepository {
/**
* Метод рекурсивно подсчитывает количество файлов в директории
*
- * @param path путь до директори
+ * @param path путь до директории
* @return файлов, в том числе скрытых
*/
@Override
public long countFilesInDirectory(String path) {
- return 0;
+ File dir = new File(path); //path указывает на директорию
+ File[] arrFiles = dir.listFiles();
+ assert arrFiles != null;
+ List lst = Arrays.asList(arrFiles);
+ return lst.size();
}
/**
@@ -21,7 +30,12 @@ public long countFilesInDirectory(String path) {
*/
@Override
public long countDirsInDirectory(String path) {
- return 0;
+
+ File dir = new File(path); //path указывает на директорию
+ File[] arrFiles = dir.listFiles();
+ assert arrFiles != null;
+ List lst = Arrays.asList(arrFiles);
+ return lst.size() + 1;
}
/**
@@ -44,9 +58,19 @@ public void copyTXTFiles(String from, String to) {
*/
@Override
public boolean createFile(String path, String name) {
- return false;
+ File file = new File(path + name);
+ try {
+ file.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ if (file.exists()){
+ }return true;
}
+
+
+
/**
* Метод считывает тело файла .txt из папки src/main/resources
*
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..bfa277c5 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,9 @@
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.math.RoundingMode;
+import java.util.ArrayList;
+import java.util.List;
public class SimpleBigNumbersService implements BigNumbersService {
@@ -13,7 +16,9 @@ public class SimpleBigNumbersService implements BigNumbersService {
*/
@Override
public BigDecimal getPrecisionNumber(int a, int b, int range) {
- return null;
+ BigDecimal bigDecimalA = new BigDecimal(a);
+ BigDecimal bigDecimalB = new BigDecimal(b);
+ return bigDecimalA.divide(bigDecimalB,range, RoundingMode.HALF_UP);
}
/**
@@ -24,6 +29,35 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) {
*/
@Override
public BigInteger getPrimaryNumber(int range) {
- return null;
+ int primaryNumber = 0;
+
+ List primes = new ArrayList<>();
+ for (int i = 0; i < 1000; i++) {
+ if (isPrime(i)) {
+ primes.add(i);
+ primaryNumber++;
+ if (primaryNumber == range + 1){
+ primaryNumber = i;
+ break;
+ }
+ }
+ }
+ return BigInteger.valueOf(primaryNumber);
+ }
+
+ private boolean isPrime(int n) {
+ if (n == 2 || n == 3) {
+ return true;
+ } else if (n <= 1 || (n % 2) == 0 || (n % 3) == 0) {
+ return false;
+ }
+ int i = 5;
+ while (i * i <= n) {
+ if ((n % i) == 0 || (n % (i + 2)) == 0) {
+ return false;
+ }
+ i += 6;
+ }
+ 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..a1c1b3c1 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,9 +26,11 @@ 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 +40,7 @@ public LocalDateTime parseString(String string) {
*/
@Override
public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) {
- return null;
+ return localDate.format(formatter);
}
/**
@@ -47,7 +50,13 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma
*/
@Override
public long getNextLeapYear() {
- return 0;
+ int year = 2021;
+ for (int i = 2021; i < year + 4; i++){
+ if (Year.of(i).isLeap()){
+ year = i;
+ }
+ }
+ return year;
}
/**
@@ -57,8 +66,7 @@ public long getNextLeapYear() {
*/
@Override
public long getSecondsInYear(int year) {
- return 0;
+ Year year1 = Year.of(year);
+ return year1.length()*86400;
}
-
-
}
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..6b1db232 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,11 @@
package com.epam.izh.rd.online.service;
+import java.io.BufferedReader;
+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 +17,19 @@ public class SimpleRegExpService implements RegExpService {
*/
@Override
public String maskSensitiveData() {
- return null;
+ String path = "src/main/resources/sensitive_data.txt";
+ String text = null;
+ String newText = null;
+
+ try (BufferedReader br = new BufferedReader(new FileReader(path))) {
+ text = br.readLine();
+ } catch (IOException e) {
+ System.out.println("Файл не найден");
+ }
+ Pattern pattern = Pattern.compile("(\\s\\d{4}\\s)\\d{4}\\s\\d{4}\\s(\\d{4}\\s)"); //("[0-9]\\s[\\d]{4}\\s[\\d]{4}\\s")
+ Matcher matcher = pattern.matcher(text);
+ newText = matcher.replaceAll("$1**** **** $2");
+ return newText;
}
/**
@@ -22,6 +40,27 @@ public String maskSensitiveData() {
*/
@Override
public String replacePlaceholders(double paymentAmount, double balance) {
- return null;
+ String path = "src/main/resources/sensitive_data.txt";
+ String text = null;
+ String newText = null;
+
+ try (BufferedReader br = new BufferedReader(new FileReader(path))) {
+ text = br.readLine();
+ } catch (IOException e) {
+ System.out.println("Файл не найден");
+ }
+
+ String stringPaymentAmount = String.valueOf((int) paymentAmount);
+ Pattern paymentPattern = Pattern.compile("\\$\\{payment_amount\\}");
+ Matcher paymentMatcher = paymentPattern.matcher(text);
+ newText = paymentMatcher.replaceFirst(stringPaymentAmount);
+
+ String stringBalance = String.valueOf((int) balance);
+ Pattern balancePattern = Pattern.compile("\\$\\{balance\\}");
+ Matcher balanceMatcher = balancePattern.matcher(newText);
+ newText = balanceMatcher.replaceFirst(stringBalance);
+
+ return newText;
}
}
+
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..79b39b9e 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,12 @@ public boolean isQuestionString(String text) {
*/
@Override
public String concatenate(String... elements) {
- return null; //TODO
+ StringBuilder string = new StringBuilder();
+
+ for (String element : elements) {
+ string.append(element);
+ }
+ return string.toString();
}
/**
@@ -47,8 +54,16 @@ public String concatenate(String... elements) {
*/
@Override
public String toJumpCase(String text) {
- return null; //TODO
- }
+ char[] chars = text.toCharArray();
+ for (int i = 0; i < chars.length; i++) {
+ if (i % 2 == 0) {
+ chars[i] = Character.toLowerCase(chars[i]);
+ } else {
+ chars[i] = Character.toUpperCase(chars[i]);
+ }
+ }
+ return String.valueOf(chars);
+ }
/**
* Метод определяет, является ли строка палиндромом.
@@ -59,6 +74,10 @@ public String toJumpCase(String text) {
*/
@Override
public boolean isPalindrome(String string) {
- return false; //TODO
+ StringBuilder stringBuilder = new StringBuilder(string);
+ String str1 = stringBuilder.reverse().toString();
+ if (string.equals("")){
+ return false;
+ }else return string.replaceAll("\\s+", "").toLowerCase(Locale.ROOT).equals(str1.toLowerCase(Locale.ROOT).replaceAll("\\s+", ""));
}
}