diff --git a/task01/src/com/example/task01/LogLevel.java b/task01/src/com/example/task01/LogLevel.java new file mode 100644 index 00000000..8fdf8ca7 --- /dev/null +++ b/task01/src/com/example/task01/LogLevel.java @@ -0,0 +1,9 @@ +package com.example.task01; + +public enum LogLevel { + + DEBUG, + INFO, + WARNING, + ERROR +} diff --git a/task01/src/com/example/task01/Logger.java b/task01/src/com/example/task01/Logger.java new file mode 100644 index 00000000..6f451396 --- /dev/null +++ b/task01/src/com/example/task01/Logger.java @@ -0,0 +1,80 @@ +package com.example.task01; + + + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +public class Logger { + + private String _name = "Logger"; + private static ArrayList _loggers = new ArrayList(); + private LogLevel _logLevel = LogLevel.DEBUG; + + public Logger(String name) { + _name = name; + } + public String getName(){ + return _name; + } + public static Logger getLogger(String name){ + for(int i= 0; i< _loggers.toArray().length;i++){ + if(_loggers.get(i).getName().equals(name)){ + return _loggers.get(i); + } + + } + Logger logger = new Logger(name); + _loggers.add(logger); + return logger; + } + public LogLevel getLevel(){ + return _logLevel; + } + public void setLevel(LogLevel logLevel){ + _logLevel = logLevel; + } + 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); + } + public void log(LogLevel logLevel, String message){ + + if(logLevel.compareTo(_logLevel) >= 0){ + System.out.println(formatMessage(logLevel, message)); + } + } + public void log(LogLevel logLevel, String format, Object... args){ + if(logLevel.compareTo(_logLevel) >= 0){ + System.out.println(formatMessage(logLevel, String.format(format, args))); + } + } + + private String formatMessage(LogLevel logLevel, String Message){ + String date = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()); + + return String.format("[%s] %s %s - %s", logLevel.name(), date, this._name, Message); + } + +} diff --git a/task01/src/com/example/task01/Task01Main.java b/task01/src/com/example/task01/Task01Main.java index 9973557d..ab00ecb8 100644 --- a/task01/src/com/example/task01/Task01Main.java +++ b/task01/src/com/example/task01/Task01Main.java @@ -3,5 +3,19 @@ public class Task01Main { public static void main(String[] args) { + Logger logger = Logger.getLogger("FirstLogger"); + + Logger sameLogger = Logger.getLogger("FirstLogger"); + System.out.println("Проверка на одинаковость логгеров: " + (logger == sameLogger)); + System.out.println("____________");// тру + + logger.setLevel(LogLevel.DEBUG); + + int sss = 10; + logger.info("Информационное сообщение"); // Видно + logger.debug("Сообщение должно быть видно"); // Видно + logger.warning("Сообщение об предупреждении: %s%n", "пум пум пум"); // Видно + logger.error("Сообщение об ошибке"); // Видно + System.out.println("____________"); } } diff --git a/task02/src/com/example/task02/DiscontBill.java b/task02/src/com/example/task02/DiscontBill.java new file mode 100644 index 00000000..c87751d6 --- /dev/null +++ b/task02/src/com/example/task02/DiscontBill.java @@ -0,0 +1,25 @@ +package com.example.task02; + +import javax.crypto.spec.PSource; + +public class DiscontBill extends Bill{ + private final double discont; + public DiscontBill(int discont) { + this.discont = discont; + } + public String getDiscont() { + return discont + "%"; + } + + @Override + public long getPrice() { + double disc = super.getPrice() * (discont / 100); + + long price = super.getPrice(); + return Math.abs((long) disc - price); + } + + public long getAbsoluteDiscont() { + return super.getPrice()- getPrice(); + } +} diff --git a/task02/src/com/example/task02/Task02Main.java b/task02/src/com/example/task02/Task02Main.java index e589f2d3..bb4c3625 100644 --- a/task02/src/com/example/task02/Task02Main.java +++ b/task02/src/com/example/task02/Task02Main.java @@ -10,11 +10,14 @@ public class Task02Main { private static final Item ITEM6 = new Item("Товар 6", 60); public static void main(String[] args) { - Bill bill = new Bill(); + DiscontBill bill = new DiscontBill(20); +// Bill bill = new Bill(); bill.add(ITEM1, 10); bill.add(ITEM3, 3); bill.add(ITEM6, 1); System.out.println(bill); + System.out.println(bill.getPrice()); + System.out.println(bill.getDiscont()); bill.add(ITEM3, 3); System.out.println(bill); } diff --git a/task03/src/com/example/task03/Hours.java b/task03/src/com/example/task03/Hours.java new file mode 100644 index 00000000..4c2b4c20 --- /dev/null +++ b/task03/src/com/example/task03/Hours.java @@ -0,0 +1,28 @@ +package com.example.task03; + +public class Hours implements TimeUnit{ + + public final long amount; + public Hours(long amount) { + this.amount = amount; + } + @Override + public long toMillis() { + return amount * 1000 * 60 * 60; + } + + @Override + public long toSeconds() { + return amount *60 *60; + } + + @Override + public long toMinutes() { + return amount * 60; + } + + @Override + public long getHours() { + return amount; + } +} diff --git a/task03/src/com/example/task03/Milliseconds.java b/task03/src/com/example/task03/Milliseconds.java index 5115bc7d..5e14ced4 100644 --- a/task03/src/com/example/task03/Milliseconds.java +++ b/task03/src/com/example/task03/Milliseconds.java @@ -18,11 +18,16 @@ public long toMillis() { @Override public long toSeconds() { - return amount / 1000; + return amount/1000; } @Override public long toMinutes() { return amount / 1000 * 60; } + + @Override + public long getHours() { + return amount / 1000 * 60 * 60; + } } diff --git a/task03/src/com/example/task03/Minutes.java b/task03/src/com/example/task03/Minutes.java index d6fa0594..c6e1c129 100644 --- a/task03/src/com/example/task03/Minutes.java +++ b/task03/src/com/example/task03/Minutes.java @@ -2,26 +2,32 @@ 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 getHours() { + return amount / 60; } } diff --git a/task03/src/com/example/task03/Seconds.java b/task03/src/com/example/task03/Seconds.java index ce6bc213..355ac1b6 100644 --- a/task03/src/com/example/task03/Seconds.java +++ b/task03/src/com/example/task03/Seconds.java @@ -25,4 +25,9 @@ public long toSeconds() { public long toMinutes() { return Math.round(amount / 60); } + + @Override + public long getHours() { + return amount / 60 * 60; + } } diff --git a/task03/src/com/example/task03/Task03Main.java b/task03/src/com/example/task03/Task03Main.java index ff0f14b0..e6e4b27d 100644 --- a/task03/src/com/example/task03/Task03Main.java +++ b/task03/src/com/example/task03/Task03Main.java @@ -3,12 +3,13 @@ public class Task03Main { public static void main(String[] args) { TimeUnit unit1 = new Seconds(1000); + TimeUnit unit2 = new Milliseconds(1000); printTimeUnit(unit1); + printTimeUnit(unit2); } 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(unit.toSeconds()); } } diff --git a/task03/src/com/example/task03/TimeUnit.java b/task03/src/com/example/task03/TimeUnit.java index 3b123fb8..ba6f7d34 100644 --- a/task03/src/com/example/task03/TimeUnit.java +++ b/task03/src/com/example/task03/TimeUnit.java @@ -27,5 +27,6 @@ public interface TimeUnit { * @return количество минут в текущем интервале */ long toMinutes(); + long getHours(); } diff --git a/task03/src/com/example/task03/TimeUnitUtils.java b/task03/src/com/example/task03/TimeUnitUtils.java index 790f8850..76c1bf1a 100644 --- a/task03/src/com/example/task03/TimeUnitUtils.java +++ b/task03/src/com/example/task03/TimeUnitUtils.java @@ -24,4 +24,17 @@ public static Milliseconds toMillis(Seconds seconds) { public static Seconds toSeconds(Milliseconds millis) { return new Seconds(millis.toSeconds()); } +// public static Minutes toMinutes(Seconds seconds) { +// return new Minutes(seconds.toMinutes()); +// } +// public static Seconds toSeconds(Minutes minutes) { +// return new Seconds(minutes.toSeconds()); +// } +// public static Hours toHours(Minutes minutes) { +// return new Hours(minutes.getHours()); +// } +// public static Minutes toMinutes(Hours hours) { +// return new Minutes(hours.toMinutes()); +// } + } diff --git a/task04/src/com/example/task04/ConsoleHandler.java b/task04/src/com/example/task04/ConsoleHandler.java new file mode 100644 index 00000000..84054000 --- /dev/null +++ b/task04/src/com/example/task04/ConsoleHandler.java @@ -0,0 +1,8 @@ +package com.example.task04; + +public class ConsoleHandler implements MessageHandler { + @Override + public void Handle(String message) { + System.out.println(message); + } +} diff --git a/task04/src/com/example/task04/FileHandler.java b/task04/src/com/example/task04/FileHandler.java new file mode 100644 index 00000000..2c5ceef6 --- /dev/null +++ b/task04/src/com/example/task04/FileHandler.java @@ -0,0 +1,42 @@ +package com.example.task04; + +import javax.imageio.IIOException; +import java.io.*; + +public class FileHandler implements MessageHandler { + private String fileName = "logFile"; + public FileHandler() { + + } + public FileHandler(String name) { + fileName = name; + } + @Override + public void Handle(String message) { + try { + PrintWriter pw = new PrintWriter( new FileWriter(fileInit(fileName),true) ); + pw.println(message); + pw.close(); + } catch (FileNotFoundException e) { + throw new RuntimeException(e); + } catch (IOException e) { + throw new RuntimeException(e); + } + + } + + private File fileInit(String name){ + File file = new File(String.format("task04/%s.txt",name)); + if(!file.exists()){ + + try { + file.createNewFile(); + } catch (IOException e) { + throw new RuntimeException(e); + } + + + } + return file; + } +} diff --git a/task04/src/com/example/task04/HandleEnum.java b/task04/src/com/example/task04/HandleEnum.java new file mode 100644 index 00000000..7464540e --- /dev/null +++ b/task04/src/com/example/task04/HandleEnum.java @@ -0,0 +1,19 @@ +package com.example.task04; + +import java.time.temporal.ChronoUnit; + +public enum HandleEnum { + ConsoleHandle(new ConsoleHandler()), + FileHandle(new FileHandler()), + RotationFileHandle(new RotationFileHandler(ChronoUnit.SECONDS)), + MemoryHandle(new ProxiHandler()); + private final MessageHandler _messageHandler; + HandleEnum(MessageHandler messageHandler) { + _messageHandler = messageHandler; + } + public MessageHandler getHandle(){ + return _messageHandler; + } + +} + diff --git a/task04/src/com/example/task04/LogLevel.java b/task04/src/com/example/task04/LogLevel.java new file mode 100644 index 00000000..fe27f171 --- /dev/null +++ b/task04/src/com/example/task04/LogLevel.java @@ -0,0 +1,9 @@ +package com.example.task04; + +public enum LogLevel { + + DEBUG, + INFO, + WARNING, + ERROR +} diff --git a/task04/src/com/example/task04/Logger.java b/task04/src/com/example/task04/Logger.java new file mode 100644 index 00000000..5bf1908b --- /dev/null +++ b/task04/src/com/example/task04/Logger.java @@ -0,0 +1,88 @@ +package com.example.task04; + + + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; + +public class Logger { + + private String _name = "Logger"; + private MessageHandler _messageHandler; + private static ArrayList _loggers = new ArrayList(); + private LogLevel _logLevel = LogLevel.DEBUG; + + public Logger(String name) { + _name = name; + } + public Logger(String name, HandleEnum handleType) { + _name = name; + _messageHandler = handleType.getHandle() ; + } + + public String getName(){ + return _name; + } + public static Logger getLogger(String name){ + for(int i= 0; i< _loggers.toArray().length;i++){ + if(_loggers.get(i).getName().equals(name)){ + return _loggers.get(i); + } + + } + Logger logger = new Logger(name); + _loggers.add(logger); + return logger; + } + public LogLevel getLevel(){ + return _logLevel; + } + public void setLevel(LogLevel logLevel){ + _logLevel = logLevel; + } + 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); + } + public void log(LogLevel logLevel, String message){ + + if(logLevel.compareTo(_logLevel) >= 0){ + _messageHandler.Handle(formatMessage(logLevel, message)); + } + } + public void log(LogLevel logLevel, String format, Object... args){ + + if(logLevel.compareTo(_logLevel) >= 0){ + + _messageHandler.Handle(formatMessage(logLevel, String.format(format, args))); + } + } + + private String formatMessage(LogLevel logLevel, String Message){ + String date = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new Date()); + + return String.format("[%s] %s %s - %s", logLevel.name(), date, this._name, Message); + } + +} diff --git a/task04/src/com/example/task04/MessageHandler.java b/task04/src/com/example/task04/MessageHandler.java new file mode 100644 index 00000000..8a9b08be --- /dev/null +++ b/task04/src/com/example/task04/MessageHandler.java @@ -0,0 +1,5 @@ +package com.example.task04; + +public interface MessageHandler { + void Handle(String message); +} diff --git a/task04/src/com/example/task04/ProxiHandler.java b/task04/src/com/example/task04/ProxiHandler.java new file mode 100644 index 00000000..a6839297 --- /dev/null +++ b/task04/src/com/example/task04/ProxiHandler.java @@ -0,0 +1,24 @@ +package com.example.task04; + +import java.util.ArrayList; + +public class ProxiHandler implements MessageHandler { + + + private ArrayList buffer = new ArrayList<>(); + private int MaxSize = 40; + private MessageHandler handler = new ConsoleHandler(); + + @Override + public void Handle(String message) { + if(buffer.size() < MaxSize){ + buffer.add(message); + } + else{ + for(String s : buffer){ + handler.Handle(s); + } + buffer.clear(); + } + } +} diff --git a/task04/src/com/example/task04/RotationFileHandler.java b/task04/src/com/example/task04/RotationFileHandler.java new file mode 100644 index 00000000..6894265f --- /dev/null +++ b/task04/src/com/example/task04/RotationFileHandler.java @@ -0,0 +1,30 @@ +package com.example.task04; + + +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.Date; + +public class RotationFileHandler implements MessageHandler{ + private ChronoUnit rotation; + private LocalDateTime previousRotation; + private FileHandler fileHandler; + @Override + public void Handle(String message) { + if(LocalDateTime.now().isAfter(previousRotation.plus(3,rotation)) ) { + + fileHandler = new FileHandler( new SimpleDateFormat("HH-mm-ss").format(new Date())); + + fileHandler.Handle(message); + previousRotation = LocalDateTime.now(); + } + + + } + public RotationFileHandler(ChronoUnit rotation) { + this.previousRotation = LocalDateTime.now(); + this.rotation = rotation; + } + +} diff --git a/task04/src/com/example/task04/Task04Main.java b/task04/src/com/example/task04/Task04Main.java index 55917a30..7de8f714 100644 --- a/task04/src/com/example/task04/Task04Main.java +++ b/task04/src/com/example/task04/Task04Main.java @@ -3,5 +3,22 @@ public class Task04Main { public static void main(String[] args) { + Logger logger2 = new Logger("log2",HandleEnum.ConsoleHandle); + Logger logger1 = new Logger("log1",HandleEnum.FileHandle); + Logger logger3 = new Logger("log3",HandleEnum.RotationFileHandle); + Logger logger4 = new Logger("log4",HandleEnum.MemoryHandle); + for(int i=0; i <= 41;i++){ + + logger4.info("ASd"); + + } + for(;;) { + + logger3.info("ASd"); + } + + } } -} + + +