Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Перникова Елизавета. Модуль 05 #408

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
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.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
8 changes: 8 additions & 0 deletions task01/src/com/example/task01/ImportanceLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task01;

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

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

public class Logger {
private final String name;
private final static HashMap<String, Logger> loggers = new HashMap<>();
private ImportanceLevel level;
public Logger(String name) {
this.name = name;
loggers.put(name, this);
}

public String getName(){
return name;
}

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

public ImportanceLevel getLevel(){
return level;
}

public void setLevel(ImportanceLevel level){
this.level = level;
}

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

public void debug(String format, Object ...оbjects){
log(ImportanceLevel.DEBUG, format, оbjects);
}

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

public void info(String format, Object ...оbjects){
log(ImportanceLevel.INFO, format, оbjects);
}

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

public void warning(String format, Object ...оbjects){
log(ImportanceLevel.WARNING, format, оbjects);
}

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

public void error(String format, Object ...оbjects){
log(ImportanceLevel.ERROR, format, оbjects);
}

public void log(ImportanceLevel logLevel, String message){
if (logLevel.ordinal() >= this.level.ordinal()) {
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date(System.currentTimeMillis());
System.out.println("[" + logLevel + "] " + formatter.format(date) + " " + this.name + " - " + message);
}
}

public void log(ImportanceLevel logLevel, String format, Object ...args){
if (logLevel.ordinal() >= this.level.ordinal()) {
System.out.println(String.format(format, args));
}
}

}
6 changes: 5 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,10 @@

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

Logger log1 = new Logger("test");
Logger logger1 = Logger.getLogger("test");
Logger logger2 = Logger.getLogger("test");
Boolean b = (logger1 == logger2);
System.out.println(b);
}
}
24 changes: 24 additions & 0 deletions task02/src/com/example/task02/DiscountBill.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.example.task02;

public class DiscountBill extends Bill {
private final double discount;

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

public double getDiscount(){
return discount;
}

public Long getAbsoluteDiscount(){
return super.getPrice() - getPrice();
}

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

}
7 changes: 5 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,10 @@ 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);
DiscountBill bill2 = new DiscountBill(20);
bill2.add(ITEM1, 10);
bill2.add(ITEM3, 3);
bill2.add(ITEM6, 1);
System.out.println(bill2);
}
}
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 * 3600000;
}

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

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

}
17 changes: 9 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,27 @@

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;
}

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);
}
@Override
public long toHours() {
return Math.round( amount / 3600f );
}
}
2 changes: 2 additions & 0 deletions task03/src/com/example/task03/Task03Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ public class Task03Main {
public static void main(String[] args) {
TimeUnit unit1 = new Seconds(1000);
printTimeUnit(unit1);
Seconds sec = TimeUnitUtils.toSeconds(new Hours(1));
System.out.println(sec.toSeconds());
}

private static void printTimeUnit(TimeUnit unit) {
Expand Down
2 changes: 1 addition & 1 deletion task03/src/com/example/task03/TimeUnit.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,5 +27,5 @@ public interface TimeUnit {
* @return количество минут в текущем интервале
*/
long toMinutes();

long toHours();
}
40 changes: 40 additions & 0 deletions task03/src/com/example/task03/TimeUnitUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@ 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());
}

/**
* Конвертирует интервал в миллисекундах в интервал в секундах
*
Expand All @@ -24,4 +32,36 @@ public static Milliseconds toMillis(Seconds seconds) {
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 toMinutes(Seconds seconds) {
return new Minutes(seconds.toMinutes());
}

public static Minutes toMinutes(Hours hours) {
return new Minutes(hours.toMinutes());
}

public static Hours toHours(Milliseconds millis) {
return new Hours(millis.toHours());
}

public static Hours toHours(Seconds seconds) {
return new Hours(seconds.toHours());
}

public static Hours toHours(Minutes minutes) {
return new Hours(minutes.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 handleMessage(String message){
System.out.println(message);
}
public void handleMessage(String format, Object ...objects){
System.out.println(String.format(format, objects));
}
}
29 changes: 29 additions & 0 deletions task04/src/com/example/task04/FileHandler.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
package com.example.task04;

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

public class FileHandler implements MessageHandler{
@Override
public void handleMessage(String message){
try(FileWriter fileWriter = new FileWriter("Message.txt", true))
{
fileWriter.write(message + "\n");
fileWriter.flush();
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}

public void handleMessage(String format, Object ...objects){
try(FileWriter fileWriter = new FileWriter("Message.txt", true))
{
fileWriter.write(String.format(format, objects) + "\n");
fileWriter.flush();
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
}
8 changes: 8 additions & 0 deletions task04/src/com/example/task04/ImportanceLevel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.example.task04;

public enum ImportanceLevel {
DEBUG,
INFO,
WARNING,
ERROR
}