Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
bb48789
Add names
KozDaria Oct 12, 2021
d7bd508
add separator
TimoninaDaria Oct 13, 2021
ce5d4b3
Fixed tests
KozDaria Oct 14, 2021
7227da4
refactored logger
TimoninaDaria Oct 14, 2021
5679d0c
Changed (in process)
KozDaria Oct 15, 2021
eb0c553
Changed (in process)
KozDaria Oct 15, 2021
f5f2f81
Add iteration2. Final result.
KozDaria Oct 15, 2021
eb08bed
iteration3 in progress
TimoninaDaria Oct 18, 2021
58c4104
Add iteration3.
KozDaria Oct 18, 2021
45b00ab
ctrl alt L
TimoninaDaria Oct 18, 2021
eb7d540
New fun processing
TimoninaDaria Oct 18, 2021
66fd2c1
Add iteration3. Refactoring
KozDaria Oct 18, 2021
6748950
Add iteration3. Refactoring
KozDaria Oct 18, 2021
05c6ca4
Refactor class in process
TimoninaDaria Oct 20, 2021
9eeb1cb
Refactor class in process
TimoninaDaria Oct 20, 2021
3c0e337
Refactoring. Add classes
KozDaria Oct 20, 2021
6365034
Refactoring. Add enums
KozDaria Oct 20, 2021
2c3e233
Refactoring.
KozDaria Oct 20, 2021
a920d8f
Refactor class in process
TimoninaDaria Oct 21, 2021
acf11de
Refactoring. Add StringMessage
KozDaria Oct 21, 2021
e22c087
Refactored classes
TimoninaDaria Oct 21, 2021
64242f9
Refactoring. Added interfaces
KozDaria Oct 21, 2021
06a4111
Add abstract class for Int and Byte
TimoninaDaria Oct 23, 2021
efa63d6
Added tests for Controller.
KozDaria Oct 25, 2021
a988535
Add tests to pom
TimoninaDaria Oct 26, 2021
d9cb394
Fixed
KozDaria Oct 26, 2021
08da979
Fixed
KozDaria Oct 26, 2021
32a5420
changed pom
TimoninaDaria Oct 26, 2021
787958a
Added exeptions
KozDaria Oct 26, 2021
0dcbbec
Fixed test shouldNotPrintWhenMessageIsNullString()
KozDaria Oct 26, 2021
88b6e2c
Fixed test shouldNotPrintWhenMessageIsNullString()
KozDaria Oct 26, 2021
a13d4cb
Debug iteration
KozDaria Oct 27, 2021
a8fe0e7
remove static
TimoninaDaria Oct 27, 2021
2e67b40
fixed
KozDaria Oct 27, 2021
6769ac8
add proxy/skeleton
KozDaria Oct 28, 2021
52f17c2
iteration
KozDaria Oct 28, 2021
99824c2
connection fixed
TimoninaDaria Oct 29, 2021
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
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
# Daria Kozyreva & Daria Timonina

---

# Java Junior Developer Training Course.
88 hours training + 32 hours work project = 120 hr.

Expand Down
77 changes: 74 additions & 3 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,79 @@
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.7</version>
<executions>
<execution>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>verify</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.pitest</groupId>
<artifactId>pitest-maven</artifactId>
<version>1.7.2</version>
<dependencies>
<dependency>
<groupId>org.pitest</groupId>
<artifactId>pitest-junit5-plugin</artifactId>
<version>0.15</version>
</dependency>
</dependencies>
<configuration>
<targetClasses>
<param>com.acme.edu.*</param>
</targetClasses>
<targetTests>
<param>com.acme.edu.*</param>
</targetTests>
<verbose>true</verbose>
</configuration>
<executions>
<execution>
<id>mutation-coverage</id>
<goals>
<goal>mutationCoverage</goal>
</goals>
</execution>
<execution>
<id>mutation-report</id>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>

<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
Expand All @@ -38,5 +103,11 @@
<version>1.4</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
47 changes: 47 additions & 0 deletions src/main/java/com/acme/edu/Controller.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package com.acme.edu;


import com.acme.edu.messages.Message;

public class Controller {
private Message currentState;
private boolean start = true;
private Printer printer;

public Controller(Printer printer) {
this.printer = printer;
}

public void log(Message message) {
if (message == null) throw new IllegalArgumentException("null message");
if (start) {
currentState = message;
start = false;
} else {
if (!currentState.isSameType(message)) {
flush(message);
} else {
currentState = currentState.accumulate(message);
}
}
}

public void flush(Message message) {
try {
printer.print(currentState.flush());
currentState = message;
} catch (IllegalStringToPrintExeption e) {
throw new LogException("Can't print message!",e);
}
}

public void flush() {
try {
printer.print(currentState.flush());
start = true;
} catch (IllegalStringToPrintExeption e) {
throw new LogException("Can't print message!",e);
}
}

}
12 changes: 12 additions & 0 deletions src/main/java/com/acme/edu/IllegalStringToPrintExeption.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.acme.edu;

public class IllegalStringToPrintExeption extends Exception {

public IllegalStringToPrintExeption(String message) {
super(message);
}

public IllegalStringToPrintExeption(String message, Throwable cause) {
super(message, cause);
}
}
9 changes: 9 additions & 0 deletions src/main/java/com/acme/edu/LogException.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.acme.edu;

public class LogException extends RuntimeException {

public LogException(String message, Throwable cause) {
super(message, cause);
}

}
58 changes: 56 additions & 2 deletions src/main/java/com/acme/edu/Logger.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,65 @@
package com.acme.edu;

import com.acme.edu.messages.*;

public class Logger {
private static Printer printer = new Printer();
private static Controller controller = new Controller(printer);
private static Proxy proxy = new Proxy();

public static void log(String... args) {
for (String arg : args) {
controller.log(new StringMessage(arg));
}
}

public static void log(int... args) {
for (int arg : args) {
controller.log(new IntMessage(arg));
}
}

public static void log(int[][] arr) {
for (int[] args : arr) {
for (int arg : args) {
controller.log(new IntMessage(arg));
}
}
}

public static void log(int message) {
System.out.println("primitive: " + message);
// controller.log(new IntMessage(message));
// proxy.ProxyRequest(String.valueOf(message));
}

public static void log(byte message) {
System.out.println("primitive: " + message);
controller.log(new ByteMessage(message));
}

public static void log(char message) {
controller.log(new CharMessage(message));
}

public static void log(String message) {
controller.log(new StringMessage(message));
}

public static void log(boolean message) {
controller.log(new BooleanMessage(message));
}

public static void log(Object message) {
controller.log(new ObjectMessage(message));
}

public static void flush() {
// controller.flush();
// proxy.ProxyRequest("flush");
}

public static void exit() {
// controller.flush();
// proxy.ProxyRequest("end session");
}

}
12 changes: 12 additions & 0 deletions src/main/java/com/acme/edu/Printer.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package com.acme.edu;

import java.util.Objects;

public class Printer {
public void print(String message) throws IllegalStringToPrintExeption{
if (Objects.equals(message,"")) {
throw new IllegalStringToPrintExeption("Bad message to print!");
}
System.out.println(message);
}
}
35 changes: 35 additions & 0 deletions src/main/java/com/acme/edu/Proxy.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.acme.edu;

import com.acme.edu.messages.Message;

import java.io.*;
import java.net.Socket;
import java.net.UnknownHostException;

public class Proxy {
public static void main(String[] args) {
// public void ProxyRequest(String message){
try(
final Socket socket = new Socket("127.0.0.1", 9999);
final DataOutputStream out = new DataOutputStream(
new BufferedOutputStream(socket.getOutputStream()))
) {

// out.writeUTF(message);
out.writeUTF("1");
out.flush();
out.writeUTF("2");
out.flush();
out.writeUTF("flush");
out.flush();
out.writeUTF("end session");
out.flush();



} catch (IOException e) {
e.printStackTrace();
}
}
}

40 changes: 40 additions & 0 deletions src/main/java/com/acme/edu/Skeleton.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package com.acme.edu;

import com.acme.edu.messages.IntMessage;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;


public class Skeleton {
private static Printer printer = new Printer();
private static Controller controller = new Controller(printer);

public static void main(String[] args) {
try (final ServerSocket listener = new ServerSocket(9999);
final Socket connection = listener.accept();
final DataInputStream input = new DataInputStream(
new BufferedInputStream(connection.getInputStream()));
// final DataOutputStream out = new DataOutputStream(
// new BufferedOutputStream(connection.getOutputStream()));
) {
String read = "";
while (!read.equals("end session")) {
// while (input.available() > 0) {
read = input.readUTF();

if (read.equals("flush")) {
controller.flush();
} else if (!read.equals("end session")) {
controller.log(new IntMessage(Integer.parseInt(read)));
}

// }

}
} catch (IOException e) {
e.printStackTrace();
}
}
}
34 changes: 34 additions & 0 deletions src/main/java/com/acme/edu/messages/BooleanMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.acme.edu.messages;

public class BooleanMessage implements Message {
private boolean messageBody;

public BooleanMessage(boolean message) {
this.messageBody = message;
}

@Override
public Message accumulate(Message message) {
return message;
}

@Override
public boolean isSameType(Message message) {
return message instanceof BooleanMessage;
}

@Override
public String getBody() {
String messagePrefix = "primitive: ";
return messagePrefix + messageBody;
}

@Override
public String flush() {
return (getBody());
}

@Override
public void init() {
}
}
23 changes: 23 additions & 0 deletions src/main/java/com/acme/edu/messages/ByteMessage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.acme.edu.messages;

public class ByteMessage extends IntAndByteMessage implements Message {
public ByteMessage(int message) {
super(message);
}

@Override
protected Message instanceOfThisClass(int bufferSum) {
return new ByteMessage(bufferSum);
}

@Override
protected int maxValueOfThisType() {
return Byte.MAX_VALUE;
}

@Override
public boolean isSameType(Message message) {
return message instanceof ByteMessage;
}
}

Loading