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

public enum LogLevel {
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.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

public class Logger {
private final String name;
private static ArrayList<Logger> loggersList;
private LogLevel logLevel;

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

public Logger(){
this.name = "Logger";
}

public String getName(){
return name;
}

public static Logger getLogger(String name){
for(Logger i : loggersList){
if(i.name.equals(name))
return i;
}
Logger logger = new Logger(name);
loggersList.add(logger);
return logger;
}

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

public void error(String format, Object... args){
log(LogLevel.ERROR, format, args);
}

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

public void warning(String format, Object... args){
log(LogLevel.WARNING, format, args);
}

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

public void info(String format, Object... args){
log(LogLevel.INFO, format, args);
}

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

public void debug(String format, Object... args){
log(LogLevel.DEBUG, format, args);
}

private String formatMessage(LogLevel logLevel, String Message){
String date = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date());
return MessageFormat.format("[{0}] {1} {2} - {3}", logLevel.name(), date, this.name, Message);
}

public void log(LogLevel logLevel, String message){
if(logLevel.compareTo(this.logLevel) >= 0)
System.out.println(formatMessage(logLevel, message));
}

public void log(LogLevel logLevel, String format, Object... args){
if(logLevel.compareTo(this.logLevel) >= 0)
System.out.println(formatMessage(logLevel, String.format(format, args)));
}

public LogLevel getLevel(){
return logLevel;
}

public void setLevel(LogLevel logLevel){
this.logLevel = logLevel;
}
}
4 changes: 3 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,8 @@

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

Logger logger1 = new Logger("Biba");
logger1.setLevel(LogLevel.DEBUG);
logger1.log(LogLevel.DEBUG, "Boba!");
}
}
37 changes: 37 additions & 0 deletions task02/src/com/example/task02/DiscountBill.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.example.task02;

public class DiscountBill extends Bill {
private final double discount;

public DiscountBill(double discount) {
this.discount = discount;
}

/**
* Подсчитывает общую сумму покупки с учетом скидки
*
* @return общую стоимость покупки с учетом скидки
*/
@Override
public long getPrice() {
return (long)(super.getPrice() * (1 - discount / 100));
}

/**
* Возвращает размер скидки (в процентах)
*
* @return размер скидки (в процентах)
*/
public String getDiscount() {
return discount + "%";
}

/**
* Подсчитывает абсолютное значение скидки
*
* @return абсолютное значение скидки
*/
public long getBenefit() {
return super.getPrice() - getPrice();
}
}
12 changes: 10 additions & 2 deletions task02/src/com/example/task02/Task02Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,15 @@ public static void main(String[] args) {
bill.add(ITEM3, 3);
bill.add(ITEM6, 1);
System.out.println(bill);
bill.add(ITEM3, 3);
System.out.println(bill);

System.out.println("\n");

DiscountBill dBill = new DiscountBill(30);
dBill.add(ITEM1, 10);
dBill.add(ITEM3, 3);
dBill.add(ITEM6, 1);
System.out.println(dBill);
System.out.println("Значение скидки: " + dBill.getDiscount());
System.out.println("Выгода: " + dBill.getBenefit());
}
}
29 changes: 29 additions & 0 deletions task03/src/com/example/task03/Hours.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
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(amount / 1000f);
}

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

@Override
public long toHours() {
return Math.round(amount / 1000f / 60f / 60f);
}
}
18 changes: 10 additions & 8 deletions task03/src/com/example/task03/Minutes.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,29 @@
package com.example.task03;

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(amount / 60f);
}
}
6 changes: 5 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,10 @@ public long toSeconds() {

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

public long toHours() {
return Math.round(amount / 60f / 60f);
}
}
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();
}
20 changes: 20 additions & 0 deletions task03/src/com/example/task03/TimeUnitUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,24 @@ public static Milliseconds toMillis(Seconds seconds) {
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());
}
}
11 changes: 11 additions & 0 deletions task04/src/com/example/task04/ConsoleHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.example.task04;

public class ConsoleHandler implements MessageHandler {
/**
* Выводит сообщение
*/
@Override
public void log(String message) {
System.out.println(message);
}
}
19 changes: 19 additions & 0 deletions task04/src/com/example/task04/FileHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package com.example.task04;

import java.io.FileWriter;
import java.io.IOException;

public class FileHandler implements MessageHandler {
/**
* Записывает сообщение в файл
*/
@Override
public void log(String message) {
try(FileWriter writer = new FileWriter("log.txt", true)){
writer.write(message + "\n");
}
catch (IOException ex){
System.out.println(ex.getMessage());
}
}
}
8 changes: 8 additions & 0 deletions task04/src/com/example/task04/LogLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task04;

public enum LogLevel {
DEBUG,
INFO,
WARNING,
ERROR
}
Loading