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
118 changes: 118 additions & 0 deletions task01/src/com/example/task01/Logger.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,118 @@
package com.example.task01;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.Map;

public class Logger
{
private static final Map<String, Logger> loggers = new HashMap<>();
private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy.MM.dd");
private static final DateTimeFormatter TIME_FORMATTER = DateTimeFormatter.ofPattern("HH:mm:ss");
private final String name;
private Level level = Level.INFO;

public String getName()
{
return name;
}

public void setLevel(Level level)
{
this.level = level;
}
public Level getLevel()
{
return level;
}
private Logger(String name)
{
this.name = name;
}

public static Logger getLogger(String name)
{
return loggers.computeIfAbsent(name, Logger::new);
}

public enum Level
{
DEBUG(0),
INFO(1),
WARNING(2),
ERROR(3);

private final int priority;

Level(int priority)
{
this.priority = priority;
}

public int getPriority()
{
return priority;
}
}

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

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

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

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

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

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

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

public void error(String pattern, Object... args)
{
log(Level.ERROR, pattern, args);
}

public void log(Level messageLevel, String message)
{
if (messageLevel.getPriority() >= level.getPriority())
{
LocalDateTime now = LocalDateTime.now();
String formattedMessage = String.format("[%s] %s %s %s - %s",
messageLevel,
now.format(DATE_FORMATTER),
now.format(TIME_FORMATTER),
name,
message);
System.out.println(formattedMessage);
}
}

public void log(Level messageLevel, String pattern, Object... args)
{
if (messageLevel.getPriority() >= level.getPriority())
log(messageLevel, String.format(pattern, args));
}
}
38 changes: 38 additions & 0 deletions task02/src/com/example/task02/DiscountBill.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.example.task02;

public class DiscountBill extends Bill
{
private final int discountPercent;

public int getDiscountPercent()
{
return discountPercent;
}

public DiscountBill(int discountPercent)
{
this.discountPercent = discountPercent;
}

@Override
public long getPrice()
{
long originalPrice = super.getPrice();
return originalPrice - getDiscountAmount();
}

public long getDiscountAmount()
{
return (super.getPrice() * discountPercent) / 100;
}

@Override
public String toString()
{
StringBuilder sb = new StringBuilder(super.toString());
sb.append("\nСкидка: ").append(discountPercent).append("%");
sb.append("\nРазмер скидки: ").append(getDiscountAmount());
sb.append("\nИтого со скидкой: ").append(getPrice());
return sb.toString();
}
}
34 changes: 34 additions & 0 deletions task03/src/com/example/task03/Hours.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.example.task03;

public class Hours implements TimeUnit
{
private final long amount;

@Override
public long getHours()
{
return amount;
}

public Hours(long amount) {
this.amount = amount;
}

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

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

@Override
public long toMinutes()
{
return amount * 60;
}
}
11 changes: 8 additions & 3 deletions task03/src/com/example/task03/Milliseconds.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
/**
* Интервал в миллисекундах
*/
public class Milliseconds implements TimeUnit {
public class Milliseconds implements TimeUnit
{

private final long amount;

Expand All @@ -18,11 +19,15 @@ public long toMillis() {

@Override
public long toSeconds() {
return amount / 1000;
return (amount + 500) / 1000;
}

@Override
public long toMinutes() {
return amount / 1000 * 60;
return (amount + 30000) / 60000;
}

public long getHours() {
return (amount + 1800000) / 3600000;
}
}
33 changes: 20 additions & 13 deletions task03/src/com/example/task03/Minutes.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,34 @@
package com.example.task03;

public class Minutes implements TimeUnit {
public class Minutes implements TimeUnit
{
private final long amount;

public Minutes(long amount) {
// TODO: реализовать
throw new UnsupportedOperationException();
public Minutes(long amount)
{
this.amount = amount;
}

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

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

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

public long getHours()
{
return (amount + 30) / 60;
}
}
11 changes: 8 additions & 3 deletions task03/src/com/example/task03/Seconds.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@
/**
* Интервал в секундах
*/
public class Seconds implements TimeUnit {
public class Seconds implements TimeUnit
{

private final long amount;

Expand All @@ -22,7 +23,11 @@ public long toSeconds() {
}

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

@Override
public long getHours()
{
return (amount + 1800) / 3600;
}
}
1 change: 1 addition & 0 deletions task03/src/com/example/task03/TimeUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,6 @@ public interface TimeUnit {
* @return количество минут в текущем интервале
*/
long toMinutes();
long getHours();

}
35 changes: 16 additions & 19 deletions task03/src/com/example/task03/TimeUnitUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,25 +3,22 @@
/**
* Класс, в котором собраны методы для работы с {@link TimeUnit}
*/
public class TimeUnitUtils {
public class TimeUnitUtils
{

/**
* Конвертирует интервал в секундах в интервал в миллисекундах
*
* @param seconds интервал в секундах
* @return интервал в миллисекундах
*/
public static Milliseconds toMillis(Seconds seconds) {
return new Milliseconds(seconds.toMillis());
}
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());}

/**
* Конвертирует интервал в миллисекундах в интервал в секундах
*
* @param millis интервал в миллисекундах
* @return интервал в секундах
*/
public static Seconds toSeconds(Milliseconds millis) {
return new Seconds(millis.toSeconds());
}
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 millis) { return new Minutes(millis.toMinutes());}
public static Minutes toSeconds(Seconds seconds) { return new Minutes(seconds.toMinutes());}
public static Minutes toHours(Hours hours) { return new Minutes(hours.toMinutes());}

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

public class ConsoleHandler implements MessageHandler
{
@Override
public void handle(String message)
{
System.out.println(message);
}
}
33 changes: 33 additions & 0 deletions task04/src/com/example/task04/FileHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package com.example.task04;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;

public class FileHandler implements MessageHandler
{

private final String filename;
private PrintWriter writer;

public FileHandler(String filename) throws IOException
{
this.filename = filename;
this.writer = new PrintWriter(new FileWriter(filename, true), true);
}

@Override
public void handle(String message)
{
if (writer != null) writer.println(message);
}

@Override
public void close()
{
if (writer != null)
{
writer.close();
writer = null;
}
}
}
Loading