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/Level.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task01;

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

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;

public class Logger {
private static HashMap<String, Logger> loggers = new HashMap<String, Logger>();
private final String name;
private Level currentLevel = Level.DEBUG;
private final SimpleDateFormat formatter = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");

public String getName() {
return name;
}

public Level getLevel() {
return currentLevel;
}

public void setLevel(Level level) {
currentLevel = level;
}

public Logger(String name) {
this.name = name;
loggers.put(name, this);
}

public static Logger getLogger(String name) {
if (loggers.get(name) == null)
new Logger(name);
return loggers.get(name);
}

public void log(Level level, String message) {
if (level.ordinal() < currentLevel.ordinal())
return;
Date date = new Date();
String formattedMessage = String.format("[%s] %s %s - %s", level, formatter.format(date), name, message);
System.out.println(formattedMessage);
}

public void log(Level level, String pattern, Object... args) {
if (args.length == 0)
throw new IllegalArgumentException("Количество аргументов не может равняться нулю!");
log(level, String.format(pattern, args));
}

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);
}
}
3 changes: 2 additions & 1 deletion task01/src/com/example/task01/Task01Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

public class Task01Main {
public static void main(String[] args) {

Logger logger1 = new Logger("test1");
Logger logger2 = new Logger("test2");
}
}
23 changes: 23 additions & 0 deletions task02/src/com/example/task02/DiscountBill.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.example.task02;

public class DiscountBill extends Bill {
private final int discountPercent;

public DiscountBill(int discountPercent) {
if (discountPercent < 0 || discountPercent > 100)
throw new IllegalArgumentException("Скидка должна быть от 0% до 100%!");
this.discountPercent = discountPercent;
}
public int getDiscountPercent() {
return discountPercent;
}

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

@Override
public long getPrice() {
return super.getPrice() - getAbsoluteDiscount();
}
}
7 changes: 7 additions & 0 deletions task02/src/com/example/task02/Task02Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,5 +17,12 @@ public static void main(String[] args) {
System.out.println(bill);
bill.add(ITEM3, 3);
System.out.println(bill);

Bill discountBill = new DiscountBill(10);
discountBill.add(ITEM1, 10);
discountBill.add(ITEM3, 3);
discountBill.add(ITEM6, 1);
discountBill.add(ITEM3, 3);
System.out.println(discountBill);
}
}
30 changes: 30 additions & 0 deletions task03/src/com/example/task03/Hours.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.example.task03;

public class Hours implements TimeUnit {

private final long amount;

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

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

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

@Override
public long toMinutes() {
return amount * 60;
}

@Override
public long toHours() {
return amount;
}
}
9 changes: 7 additions & 2 deletions task03/src/com/example/task03/Milliseconds.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,16 @@ public long toMillis() {

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

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

@Override
public long toHours() {
return Math.round((double)amount / 1000 / 60 / 60);
}
}
19 changes: 11 additions & 8 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 {

private final long amount;

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

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

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

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

@Override
public long toHours() {
return Math.round((double)amount / 60);
}
}
7 changes: 6 additions & 1 deletion task03/src/com/example/task03/Seconds.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ public long toSeconds() {

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

@Override
public long toHours() {
return Math.round((double)amount / 60 / 60);
}
}
3 changes: 2 additions & 1 deletion task03/src/com/example/task03/Task03Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

public class Task03Main {
public static void main(String[] args) {
TimeUnit unit1 = new Seconds(1000);
TimeUnit unit1 = new Milliseconds(1000);
printTimeUnit(unit1);
}

private static void printTimeUnit(TimeUnit unit) {
System.out.println(String.format("Milliseconds: %d", unit.toMillis()));
System.out.println(String.format("Seconds: %d", unit.toSeconds()));
System.out.println(String.format("Minutes: %d", unit.toMinutes()));
System.out.println(String.format("Hours: %d", unit.toHours()));
}
}
7 changes: 7 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,11 @@ public interface TimeUnit {
*/
long toMinutes();

/**
* Возвращает продолжительность текущего интервала, пересчитанного в часах.
* При необходимости округлять по обычным правилам округления (число, меньшее 0.5 переходит в 0, большее или равное - в 1)
*
* @return количество часов в текущем интервале
*/
long toHours();
}
110 changes: 105 additions & 5 deletions task03/src/com/example/task03/TimeUnitUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,37 @@
public class TimeUnitUtils {

/**
* Конвертирует интервал в секундах в интервал в миллисекундах
* Конвертирует интервал в миллисекундах в интервал в секундах.
*
* @param millis интервал в миллисекундах
* @return интервал в секундах
*/
public static Seconds toSeconds(Milliseconds millis) {
return new Seconds(millis.toSeconds());
}

/**
* Конвертирует интервал в миллисекундах в интервал в минутах.
*
* @param millis интервал в миллисекундах
* @return интервал в минутах
*/
public static Minutes toMinutes(Milliseconds millis) {
return new Minutes(millis.toMinutes());
}

/**
* Конвертирует интервал в миллисекундах в интервал в часах.
*
* @param millis интервал в миллисекундах
* @return интервал в часах
*/
public static Hours toHours(Milliseconds millis) {
return new Hours(millis.toHours());
}

/**
* Конвертирует интервал в секундах в интервал в миллисекундах.
*
* @param seconds интервал в секундах
* @return интервал в миллисекундах
Expand All @@ -16,12 +46,82 @@ public static Milliseconds toMillis(Seconds seconds) {
}

/**
* Конвертирует интервал в миллисекундах в интервал в секундах
* Конвертирует интервал в секундах в интервал в минутах.
*
* @param millis интервал в миллисекундах
* @param seconds интервал в секундах
* @return интервал в минутах
*/
public static Minutes toMinutes(Seconds seconds) {
return new Minutes(seconds.toMinutes());
}

/**
* Конвертирует интервал в секундах в интервал в часах.
*
* @param seconds интервал в секундах
* @return интервал в часах
*/
public static Hours toHours(Seconds seconds) {
return new Hours(seconds.toHours());
}

/**
* Конвертирует интервал в минутах в интервал в миллисекундах.
*
* @param minutes интервал в минутах
* @return интервал в миллисекундах
*/
public static Milliseconds toMillis(Minutes minutes) {
return new Milliseconds(minutes.toMillis());
}

/**
* Конвертирует интервал в минутах в интервал в секундах.
*
* @param minutes интервал в минутах
* @return интервал в секундах
*/
public static Seconds toSeconds(Milliseconds millis) {
return new Seconds(millis.toSeconds());
public static Seconds toSeconds(Minutes minutes) {
return new Seconds(minutes.toSeconds());
}

/**
* Конвертирует интервал в минутах в интервал в часах.
*
* @param minutes интервал в минутах
* @return интервал в часах
*/
public static Hours toHours(Minutes minutes) {
return new Hours(minutes.toHours());
}

/**
* Конвертирует интервал в часах в интервал в миллисекундах.
*
* @param hours интервал в часах
* @return интервал в миллисекундах
*/
public static Milliseconds toMillis(Hours hours) {
return new Milliseconds(hours.toMillis());
}

/**
* Конвертирует интервал в часах в интервал в секундах.
*
* @param hours интервал в часах
* @return интервал в секундах
*/
public static Seconds toSeconds(Hours hours) {
return new Seconds(hours.toSeconds());
}

/**
* Конвертирует интервал в часах в интервал в минутах.
*
* @param hours интервал в часах
* @return интервал в минутах
*/
public static Minutes toMinutes(Hours hours) {
return new Minutes(hours.toMinutes());
}
}
Loading