Skip to content
Open

Done #21

Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 23 additions & 0 deletions java-data-handling-template.iml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<module org.jetbrains.idea.maven.project.MavenProjectsManager.isMavenModule="true" type="JAVA_MODULE" version="4">
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_11">
<output url="file://$MODULE_DIR$/target/classes" />
<output-test url="file://$MODULE_DIR$/target/test-classes" />
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
<excludeFolder url="file://$MODULE_DIR$/target" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter:5.5.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-api:5.5.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.apiguardian:apiguardian-api:1.1.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.opentest4j:opentest4j:1.2.0" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-commons:1.5.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-params:5.5.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.jupiter:junit-jupiter-engine:5.5.2" level="project" />
<orderEntry type="library" scope="TEST" name="Maven: org.junit.platform:junit-platform-engine:1.5.2" level="project" />
</component>
</module>
9 changes: 9 additions & 0 deletions src/main/java/com/epam/izh/rd/online/Main.java
Original file line number Diff line number Diff line change
@@ -1,4 +1,13 @@
package com.epam.izh.rd.online;

import com.epam.izh.rd.online.repository.SimpleFileRepository;

public class Main {
public static void main(String ... args)
{
String path = "testDirCountFiles";
String path2 = "testDirCountFiles";
SimpleFileRepository fr = new SimpleFileRepository();
fr.copyTXTFiles(path,path2);
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
package com.epam.izh.rd.online.repository;

import java.io.*;
import java.nio.file.*;
import java.util.*;


public class SimpleFileRepository implements FileRepository {
private long count;
private ArrayList<File> fileList;

/**
* Метод рекурсивно подсчитывает количество файлов в директории
Expand All @@ -10,7 +17,22 @@ public class SimpleFileRepository implements FileRepository {
*/
@Override
public long countFilesInDirectory(String path) {
return 0;
count = 0;
File file = new File("src\\main\\resources\\" + path);
if (file.isDirectory())
fileCounter(file);

return count;
}

private void fileCounter(File file) {
for (File f : file.listFiles()) {
if (f.isDirectory()) {
fileCounter(f);
} else {
++count;
}
}
}

/**
Expand All @@ -21,7 +43,22 @@ public long countFilesInDirectory(String path) {
*/
@Override
public long countDirsInDirectory(String path) {
return 0;
count = 0;
File file = new File("src\\main\\resources\\" + path);
if (file.isDirectory()) {
++count;
folderCounter(file);
}
return count;
}

private void folderCounter(File file) {
for (File f : file.listFiles()) {
if (f.isDirectory()) {
++count;
folderCounter(f);
}
}
}

/**
Expand All @@ -32,7 +69,34 @@ public long countDirsInDirectory(String path) {
*/
@Override
public void copyTXTFiles(String from, String to) {
return;
fileList = new ArrayList<>();
File directory = new File("src\\main\\resources\\" + from);
findAllFilesNames(directory, ".txt");
fileSCopyTo(fileList, to);
}

private void findAllFilesNames(File file, String filter) {
for (File files : file.listFiles()) {
if (files.isDirectory()) {
findAllFilesNames(files, filter);
} else if (files.getName().contains(filter)) {
fileList.add(files);
}
}
}

private void fileSCopyTo(ArrayList<File> fileList, String to) {
for (File files : fileList) {
fileCopy(files, to);
}
}

private void fileCopy(File f, String to) {
try {
Files.copy(Paths.get(f.getPath()), Paths.get(to + "\\" + f.getName()));
} catch (IOException e) {
e.printStackTrace();
}
}

/**
Expand All @@ -44,7 +108,28 @@ public void copyTXTFiles(String from, String to) {
*/
@Override
public boolean createFile(String path, String name) {
return false;
return create(path, name);
}

private boolean create(String path, String name) {
try {
Files.createFile(Paths.get(path + "/" + name));
} catch (NoSuchFileException noFile) {
noFile.printStackTrace();
createDirectory(path);
createFile(path, name);
} catch (IOException e) {
e.printStackTrace();
}
return Files.exists(Paths.get(path + "\\" + name));
}

private void createDirectory(String path) {
try {
Files.createDirectory(Paths.get(path));
} catch (IOException e) {
e.printStackTrace();
}
}

/**
Expand All @@ -55,6 +140,16 @@ public boolean createFile(String path, String name) {
*/
@Override
public String readFileFromResources(String fileName) {
return null;
return readFile(fileName);
}

private String readFile(String fileName) {
try {
Scanner sc = new Scanner(new BufferedInputStream(new FileInputStream("src\\main\\resources\\" + fileName)));
return sc.nextLine();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
return "";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@

import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;

public class SimpleBigNumbersService implements BigNumbersService {

/**
* Метод делит первое число на второе с заданной точностью
* Например 1/3 с точностью 2 = 0.33
*
* @param range точность
* @return результат
*/
@Override
public BigDecimal getPrecisionNumber(int a, int b, int range) {
return null;
return new BigDecimal(a).divide(new BigDecimal(b), range, RoundingMode.HALF_UP);
}

/**
Expand All @@ -24,6 +26,14 @@ public BigDecimal getPrecisionNumber(int a, int b, int range) {
*/
@Override
public BigInteger getPrimaryNumber(int range) {
return null;
BigInteger result = BigInteger.valueOf(3);
long count = 0;
while (count < range) {
if (result.isProbablePrime(range)) {
count++;
}
result = result.add(BigInteger.valueOf(2));
}
return result.add(BigInteger.valueOf(-2));
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.epam.izh.rd.online.service;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.*;
import java.time.format.DateTimeFormatter;

public class SimpleDateService implements DateService {
Expand All @@ -14,7 +13,7 @@ public class SimpleDateService implements DateService {
*/
@Override
public String parseDate(LocalDate localDate) {
return null;
return DateTimeFormatter.ofPattern("dd-MM-yyyy").format(localDate);
}

/**
Expand All @@ -25,7 +24,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"));
}

/**
Expand All @@ -37,7 +36,8 @@ public LocalDateTime parseString(String string) {
*/
@Override
public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter formatter) {
return null;

return formatter.format(localDate);
}

/**
Expand All @@ -47,7 +47,9 @@ public String convertToCustomFormat(LocalDate localDate, DateTimeFormatter forma
*/
@Override
public long getNextLeapYear() {
return 0;
Year year = Year.now();
while (!year.isLeap()) year = year.plusYears(1);
return year.getValue();
}

/**
Expand All @@ -57,7 +59,7 @@ public long getNextLeapYear() {
*/
@Override
public long getSecondsInYear(int year) {
return 0;
return Year.of(year).length() * 24 * 60 * 60;
}


Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
package com.epam.izh.rd.online.service;

import java.io.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SimpleRegExpService implements RegExpService {

/**
Expand All @@ -11,7 +15,25 @@ public class SimpleRegExpService implements RegExpService {
*/
@Override
public String maskSensitiveData() {
return null;
return findAndReplaceCardNumber(readResourceFileNames("sensitive_data.txt"));
}

private StringBuilder readResourceFileNames(String name) {
try (BufferedReader reader = new BufferedReader(new FileReader("src\\main\\resources\\" + name))) {
return new StringBuilder(reader.readLine());
} catch (IOException e) {
e.printStackTrace();
}
return new StringBuilder();
}

private String findAndReplaceCardNumber(StringBuilder text) {
Pattern pat = Pattern.compile("\\s*\\d{4}\\s+(\\d{4}\\s+\\d{4})\\s+\\d{4}");
Matcher match = pat.matcher(text);
while (match.find()) {
text.replace(match.start(1), match.end(1), "**** ****");
}
return text.toString();
}

/**
Expand All @@ -22,6 +44,18 @@ public String maskSensitiveData() {
*/
@Override
public String replacePlaceholders(double paymentAmount, double balance) {
return null;
return findAndReplacePlaceholder(paymentAmount, balance, readResourceFileNames("sensitive_data.txt"));
}

private String findAndReplacePlaceholder(double paymentAmount, double balance, StringBuilder text) {
String x = text.toString();
Pattern pat = Pattern.compile("(\\$\\{p.*[}]).+(\\$\\{b.*[}])");
Matcher match = pat.matcher(x);
if (match.find()) {
text.replace(match.start(2), match.end(2), String.valueOf((int) balance)).
replace(match.start(1), match.end(1), String.valueOf((int) paymentAmount));
}
System.out.println(text);
return text.toString();
}
}
Loading