Skip to content
Open
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
8 changes: 8 additions & 0 deletions task01/src/com/example/task01/ErrorLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task01;

public enum ErrorLevel {
DEBUG(),
INFO(),
WARNING(),
ERROR();
}
89 changes: 89 additions & 0 deletions task01/src/com/example/task01/Logger.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,89 @@
package com.example.task01;

import java.text.MessageFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;

public class Logger {
private final String name;
private ErrorLevel level;
private static final ArrayList<Logger> loggers = new ArrayList<>();

public Logger(String name) {
this.name = name;
this.level = ErrorLevel.INFO;
loggers.add(this);
}

public Logger(String name, ErrorLevel level) {
this.name = name;
this.level = level;
loggers.add(this);
}

public String getName() {
return name;
}

public ErrorLevel getLevel() {
return level;
}

public void setLevel(ErrorLevel level) {
this.level = level;
}

public static Logger getLogger(String name) {
for (Logger logger : loggers) {
if (logger.getName().equals(name)) return logger;
}
return new Logger(name);
}

public void log(ErrorLevel level, String message) {
if (this.level.ordinal() <= level.ordinal()) {
String dateTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy.MM.dd HH:mm:ss"));
String formattedMessage = MessageFormat.format("[{0}] {1} {2} - {3}", level, dateTime, name, message);
System.out.println(formattedMessage);
}
}

public void log(ErrorLevel level, String pattern, Object... args) {
if (this.level.ordinal() <= level.ordinal()) {
System.out.println(MessageFormat.format(pattern, args));
}
}

public void debug(String message) {
log(ErrorLevel.DEBUG, message);
}

public void debug(String pattern, Object... args) {
log(ErrorLevel.DEBUG, pattern, args);
}

public void info(String message) {
log(ErrorLevel.INFO, message);
}

public void info(String pattern, Object... args) {
log(ErrorLevel.INFO, pattern, args);
}

public void warning(String message) {
log(ErrorLevel.WARNING, message);
}

public void warning(String pattern, Object... args) {
log(ErrorLevel.WARNING, pattern, args);
}

public void error(String message) {
log(ErrorLevel.ERROR, message);
}

public void error(String pattern, Object... args) {
log(ErrorLevel.ERROR, pattern, args);
}
}
2 changes: 1 addition & 1 deletion task01/src/com/example/task01/Task01Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@ public class Task01Main {
public static void main(String[] args) {

}
}
}
21 changes: 21 additions & 0 deletions task02/src/com/example/task02/DiscountBill.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package com.example.task02;

public class DiscountBill extends Bill{
private final double discount;
public DiscountBill(double discount) {
this.discount = discount;
}

public String getDiscount(){
return discount + "%";
}

public long getAbsoluteDiscount() {
return super.getPrice() - getPrice();
}
@Override
public long getPrice() {
long price = super.getPrice();
return (long) (price * (1 - discount / 100));
}
}
27 changes: 27 additions & 0 deletions task03/src/com/example/task03/Hours.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.example.task03;

public class Hours implements TimeUnit{
private final long hours;
public Hours(long hours) {
this.hours = hours;
}

@Override
public long toMillis() {
return hours * 3600 * 1000;
}

@Override
public long toSeconds() {
return hours * 3600;
}

@Override
public long toMinutes() {
return hours * 60;
}
@Override
public long getHours() {
return hours;
}
}
19 changes: 12 additions & 7 deletions task03/src/com/example/task03/Milliseconds.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,29 @@
*/
public class Milliseconds implements TimeUnit {

private final long amount;
private final long milliseconds;

public Milliseconds(long amount) {
this.amount = amount;
public Milliseconds(long milliseconds) {
this.milliseconds = milliseconds;
}

@Override
public long toMillis() {
return amount;
return milliseconds;
}

@Override
public long toSeconds() {
return amount / 1000;
return Math.round(milliseconds / 1000f);
}

@Override
public long toMinutes() {
return amount / 1000 * 60;
return Math.round(milliseconds / (float) (1000 * 60));
}
}

@Override
public long getHours() {
return Math.round(milliseconds / (float) (3600 * 1000));
}
}
23 changes: 13 additions & 10 deletions task03/src/com/example/task03/Minutes.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,29 @@

public class Minutes implements TimeUnit {

public Minutes(long amount) {
// TODO: реализовать
throw new UnsupportedOperationException();
private final long minutes;

public Minutes(long minutes) {
this.minutes = minutes;
}

@Override
public long toMillis() {
// TODO: реализовать
throw new UnsupportedOperationException();
return minutes * 60 * 1000;
}

@Override
public long toSeconds() {
// TODO: реализовать
throw new UnsupportedOperationException();
return minutes * 60;
}

@Override
public long toMinutes() {
// TODO: реализовать
throw new UnsupportedOperationException();
return minutes;
}

@Override
public long getHours() {
return Math.round(minutes / 60f);
}
}
}
19 changes: 12 additions & 7 deletions task03/src/com/example/task03/Seconds.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,24 +5,29 @@
*/
public class Seconds implements TimeUnit {

private final long amount;
private final long seconds;

public Seconds(long amount) {
this.amount = amount;
public Seconds(long seconds) {
this.seconds = seconds;
}

@Override
public long toMillis() {
return amount * 1000;
return seconds * 1000;
}

@Override
public long toSeconds() {
return amount;
return seconds;
}

@Override
public long toMinutes() {
return Math.round(amount / 60);
return Math.round(seconds / 60f);
}
}

@Override
public long getHours() {
return Math.round(seconds / 3600f);
}
}
2 changes: 2 additions & 0 deletions task03/src/com/example/task03/TimeUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,6 @@ public interface TimeUnit {
*/
long toMinutes();

long getHours();

}
42 changes: 41 additions & 1 deletion task03/src/com/example/task03/TimeUnitUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ public static Milliseconds toMillis(Seconds seconds) {
return new Milliseconds(seconds.toMillis());
}

public static Milliseconds toMillis(Minutes minutes) {
return new Milliseconds(minutes.toMillis());
}

public static Milliseconds toMillis(Hours hours) {
return new Milliseconds(hours.toMillis());
}

/**
* Конвертирует интервал в миллисекундах в интервал в секундах
*
Expand All @@ -24,4 +32,36 @@ public static Milliseconds toMillis(Seconds seconds) {
public static Seconds toSeconds(Milliseconds millis) {
return new Seconds(millis.toSeconds());
}
}

public static Seconds toSeconds(Minutes minutes) {
return new Seconds(minutes.toSeconds());
}

public static Seconds toSeconds(Hours hours) {
return new Seconds(hours.toSeconds());
}

public static Minutes toMinutes(Milliseconds milliseconds) {
return new Minutes(milliseconds.toMinutes());
}

public static Minutes toMinutes(Seconds seconds) {
return new Minutes(seconds.toMinutes());
}

public static Minutes toMinutes(Hours hours) {
return new Minutes(hours.toMinutes());
}

public static Hours toHours(Milliseconds milliseconds) {
return new Hours(milliseconds.getHours());
}

public static Hours toHours(Seconds seconds) {
return new Hours(seconds.getHours());
}

public static Hours toHours(Minutes minutes) {
return new Hours(minutes.getHours());
}
}
8 changes: 8 additions & 0 deletions task04/src/com/example/task04/ConsoleHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task04;

public class ConsoleHandler implements MessageHandler{
@Override
public void log(String message) {
System.out.println(message);
}
}
8 changes: 8 additions & 0 deletions task04/src/com/example/task04/ErrorLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task04;

public enum ErrorLevel {
DEBUG(),
INFO(),
WARNING(),
ERROR();
}
24 changes: 24 additions & 0 deletions task04/src/com/example/task04/FileHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.example.task04;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileHandler implements MessageHandler {
private final String Path;

public FileHandler(String path) {
Path = path;
}

@Override
public void log(String message) {
File file = new File(Path);

try (FileOutputStream fileOutputStream = new FileOutputStream(file)) {
fileOutputStream.write(message.getBytes());
} catch (IOException ex) {
System.out.println(ex.getMessage());
}
}
}
Loading