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

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

public class Logger {
private String Name;
private Level currentLevel = Level.DEBUG;
private static final Map<String, Logger> loggers = new HashMap<>();
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; }
}
Logger(String name){
this.Name = name;
}
public void setName(String name){
this.Name = name;
}
public String getName(){
return this.Name;
}
public Level getLevel() {
return currentLevel;
}

public void setLevel(Level level) {
this.currentLevel = level;
}
public static Logger getLogger(String name) {
return loggers.computeIfAbsent(name, Logger::new);
}
public void log(Level lvl, String message)
{
if (lvl.getPriority() >= currentLevel.getPriority()) {
String timestamp = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss").format(new Date());
System.out.printf("[%s] %s %s - %s%n", lvl.name(), timestamp, Name, message);
}
}
public void log(Level lvl, String message, Object... args) {
log(lvl, String.format(message, args));
}
public void debug(String message) {
log(Level.DEBUG, message);
}

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

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

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

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

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

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

public void error(String message, Object... args) {
log(Level.ERROR, message, 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 double Discount;

@Override
public long getPrice(){
return (long)(super.getPrice() - super.getPrice() * (Discount / 100));
}

public long getAbsDiscount(){
return super.getPrice() - getPrice();
}

public void setDiscount(double discount){
this.Discount = discount;
}
public String getDiscount(){
return this.Discount + "%";
}
}
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 / 1000d);
}

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

@Override
public long toHours() {
return Math.round(amount / 1000d / 60d / 60d);
}
}
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(amount / 60d);
}
}
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(amount / 60d);
}

@Override
public long toHours() {
return Math.round(amount / 60d / 60d);
}
}
1 change: 1 addition & 0 deletions task03/src/com/example/task03/Task03Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,5 +10,6 @@ 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();
}
44 changes: 31 additions & 13 deletions task03/src/com/example/task03/TimeUnitUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,23 +5,41 @@
*/
public class TimeUnitUtils {

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

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

}
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 handleMessage(String message){
System.out.println(message);
}
}
22 changes: 22 additions & 0 deletions task04/src/com/example/task04/FileHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.example.task04;

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

public class FileHandler implements MessageHandler {
public String FilePath;

public FileHandler(String filePath) {
this.FilePath = filePath;
}

@Override
public void handleMessage(String message) {
try (BufferedWriter writer = new BufferedWriter(new FileWriter(FilePath, true))) {
writer.write(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
52 changes: 52 additions & 0 deletions task04/src/com/example/task04/Logger.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.example.task04;

import java.text.SimpleDateFormat;
import java.util.*;

public class Logger {
private String Name;
private Level currentLevel = Level.DEBUG;
private static final Map<String, Logger> loggers = new HashMap<>();
MessageHandler handler;
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; }
}
Logger(String name){
this.Name = name;
}
public void setName(String name){
this.Name = name;
}
public String getName(){
return this.Name;
}
public Level getLevel() {
return currentLevel;
}

public void setLevel(Level level) {
this.currentLevel = level;
}
public static Logger getLogger(String name) {
return loggers.computeIfAbsent(name, Logger::new);
}
public void SetHandler(MessageHandler handler){
this.handler = handler;
}
public void log(MessageHandler handler, Level lvl, String message)
{
if (lvl.getPriority() >= currentLevel.getPriority()) {
handler.handleMessage(message);
}
}
}
28 changes: 28 additions & 0 deletions task04/src/com/example/task04/MemoryHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package com.example.task04;

import java.util.ArrayList;
import java.util.List;

public class MemoryHandler implements MessageHandler{
private final List<String> messageBuffer = new ArrayList<>();
private final int bufferSize;
private final ConsoleHandler proxiedHandler;

public MemoryHandler(ConsoleHandler proxiedHandler, int bufferSize) {
this.proxiedHandler = proxiedHandler;
this.bufferSize = bufferSize;
}
public void push() {
for (String msg : messageBuffer) {
proxiedHandler.handleMessage(msg);
}
messageBuffer.clear();
}
@Override
public void handleMessage(String message) {
messageBuffer.add(message);
if (messageBuffer.size() >= bufferSize) {
push();
}
}
}
Loading