major updates, moved to socket client-server connections, added all commands, fs control
16
.idea/compiler.xml
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="CompilerConfiguration">
|
||||||
|
<annotationProcessing>
|
||||||
|
<profile name="Maven default annotation processors profile" enabled="true">
|
||||||
|
<sourceOutputDir name="target/generated-sources/annotations" />
|
||||||
|
<sourceTestOutputDir name="target/generated-test-sources/test-annotations" />
|
||||||
|
<outputRelativeToContentRoot value="true" />
|
||||||
|
<module name="lab5" />
|
||||||
|
</profile>
|
||||||
|
</annotationProcessing>
|
||||||
|
<bytecodeTargetLevel>
|
||||||
|
<module name="itmo-prog-lab-5" target="1.5" />
|
||||||
|
</bytecodeTargetLevel>
|
||||||
|
</component>
|
||||||
|
</project>
|
20
.idea/jarRepositories.xml
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="RemoteRepositoriesConfiguration">
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Central Repository" />
|
||||||
|
<option name="url" value="https://repo.maven.apache.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="central" />
|
||||||
|
<option name="name" value="Maven Central repository" />
|
||||||
|
<option name="url" value="https://repo1.maven.org/maven2" />
|
||||||
|
</remote-repository>
|
||||||
|
<remote-repository>
|
||||||
|
<option name="id" value="jboss.community" />
|
||||||
|
<option name="name" value="JBoss Community repository" />
|
||||||
|
<option name="url" value="https://repository.jboss.org/nexus/content/repositories/public/" />
|
||||||
|
</remote-repository>
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -1,5 +1,13 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
|
<component name="ExternalStorageConfigurationManager" enabled="true" />
|
||||||
|
<component name="MavenProjectsManager">
|
||||||
|
<option name="originalFiles">
|
||||||
|
<list>
|
||||||
|
<option value="$PROJECT_DIR$/pom.xml" />
|
||||||
|
</list>
|
||||||
|
</option>
|
||||||
|
</component>
|
||||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="17" project-jdk-type="JavaSDK">
|
||||||
<output url="file://$PROJECT_DIR$/out" />
|
<output url="file://$PROJECT_DIR$/out" />
|
||||||
</component>
|
</component>
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
<project version="4">
|
|
||||||
<component name="ProjectModuleManager">
|
|
||||||
<modules>
|
|
||||||
<module fileurl="file://$PROJECT_DIR$/itmo-prog-lab-5.iml" filepath="$PROJECT_DIR$/itmo-prog-lab-5.iml" />
|
|
||||||
</modules>
|
|
||||||
</component>
|
|
||||||
</project>
|
|
|
@ -5,13 +5,37 @@
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="4f3a5547-ba17-42ad-9cfe-ccdc381c7dc5" name="Changes" comment="">
|
<list default="true" id="4f3a5547-ba17-42ad-9cfe-ccdc381c7dc5" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/.gitignore" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/.idea/compiler.xml" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/.idea/jarRepositories.xml" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/modules.xml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/main/java/Main.java" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/vcs.xml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/main/java/client/ClientApp.java" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/main/java/common/models/Coordinates.java" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/itmo-prog-lab-5.iml" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/main/java/common/models/Event.java" afterDir="false" />
|
||||||
<change afterPath="$PROJECT_DIR$/src/Main.java" afterDir="false" />
|
<change afterPath="$PROJECT_DIR$/src/main/java/server/CollectionManager.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/main/java/server/FileManager.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/main/java/server/ServerApp.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/main/java/server/commands/Command.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/main/java/server/commands/HelpCommand.java" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/main/java/server/commands/ShowCommand.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/modules.xml" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/itmo-prog-lab-5.iml" beforeDir="false" afterPath="$PROJECT_DIR$/itmo-prog-lab-5.iml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/Main.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/client/ClientApp.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/client/ConsoleManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/client/ConsoleManager.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/common/enums/TicketType.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/common/enums/TicketType.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/common/models/Coordinates.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/common/models/Event.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/common/models/Ticket.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/common/models/Ticket.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/common/utils/TicketComparator.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/common/utils/TicketComparator.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/CollectionManager.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/CommandProcessor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/server/CommandProcessor.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/FileManager.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/ServerApp.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/commands/Command.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/commands/HelpCommand.java" beforeDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/server/commands/ShowCommand.java" beforeDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
|
@ -32,9 +56,9 @@
|
||||||
<component name="MarkdownSettingsMigration">
|
<component name="MarkdownSettingsMigration">
|
||||||
<option name="stateVersion" value="1" />
|
<option name="stateVersion" value="1" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ProjectColorInfo"><![CDATA[{
|
<component name="ProjectColorInfo">{
|
||||||
"associatedIndex": 2
|
"associatedIndex": 2
|
||||||
}]]></component>
|
}</component>
|
||||||
<component name="ProjectId" id="2c0VemoZcpyCQjJpTj6tw8sHgOH" />
|
<component name="ProjectId" id="2c0VemoZcpyCQjJpTj6tw8sHgOH" />
|
||||||
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
<component name="ProjectLevelVcsManager" settingsEditedManually="true" />
|
||||||
<component name="ProjectViewState">
|
<component name="ProjectViewState">
|
||||||
|
@ -46,8 +70,11 @@
|
||||||
"Application.Main.executor": "Run",
|
"Application.Main.executor": "Run",
|
||||||
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
"RunOnceActivity.OpenProjectViewOnStart": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
|
"SHARE_PROJECT_CONFIGURATION_FILES": "true",
|
||||||
|
"WebServerToolWindowFactoryState": "false",
|
||||||
"git-widget-placeholder": "master",
|
"git-widget-placeholder": "master",
|
||||||
"kotlin-language-version-configured": "true",
|
"kotlin-language-version-configured": "true",
|
||||||
|
"last_opened_file_path": "/home/sanspie/Projects/itmo-prog-lab-5",
|
||||||
"node.js.detected.package.eslint": "true",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"node.js.detected.package.tslint": "true",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
|
@ -56,10 +83,15 @@
|
||||||
"project.structure.last.edited": "Project",
|
"project.structure.last.edited": "Project",
|
||||||
"project.structure.proportion": "0.0",
|
"project.structure.proportion": "0.0",
|
||||||
"project.structure.side.proportion": "0.0",
|
"project.structure.side.proportion": "0.0",
|
||||||
"settings.editor.selected.configurable": "preferences.lookFeel",
|
"settings.editor.selected.configurable": "preferences.pluginManager",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}]]></component>
|
}]]></component>
|
||||||
|
<component name="RecentsManager">
|
||||||
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
|
<recent name="$PROJECT_DIR$/src/main/java" />
|
||||||
|
</key>
|
||||||
|
</component>
|
||||||
<component name="RunManager">
|
<component name="RunManager">
|
||||||
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
<configuration name="Main" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||||
<option name="MAIN_CLASS_NAME" value="Main" />
|
<option name="MAIN_CLASS_NAME" value="Main" />
|
||||||
|
@ -91,6 +123,9 @@
|
||||||
<option name="presentableId" value="Default" />
|
<option name="presentableId" value="Default" />
|
||||||
<updated>1707248583469</updated>
|
<updated>1707248583469</updated>
|
||||||
<workItem from="1707248584490" duration="9894000" />
|
<workItem from="1707248584490" duration="9894000" />
|
||||||
|
<workItem from="1707302524450" duration="5396000" />
|
||||||
|
<workItem from="1707309325271" duration="459000" />
|
||||||
|
<workItem from="1707309800749" duration="3973000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|
|
@ -1,11 +1,8 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module type="JAVA_MODULE" version="4">
|
<module type="JAVA_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
<component name="AdditionalModuleElements">
|
||||||
<exclude-output />
|
<content url="file://$MODULE_DIR$" dumb="true">
|
||||||
<content url="file://$MODULE_DIR$">
|
|
||||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||||
</content>
|
</content>
|
||||||
<orderEntry type="inheritedJdk" />
|
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
59
pom.xml
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<groupId>ru.akarpov.lab5</groupId>
|
||||||
|
<artifactId>lab5</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>javax.xml.bind</groupId>
|
||||||
|
<artifactId>jaxb-api</artifactId>
|
||||||
|
<version>2.3.1</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
<build>
|
||||||
|
<plugins>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
|
<artifactId>maven-compiler-plugin</artifactId>
|
||||||
|
<version>3.8.1</version>
|
||||||
|
<configuration>
|
||||||
|
<source>15</source>
|
||||||
|
<target>15</target>
|
||||||
|
</configuration>
|
||||||
|
</plugin>
|
||||||
|
<plugin>
|
||||||
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
|
<artifactId>exec-maven-plugin</artifactId>
|
||||||
|
<version>3.0.0</version>
|
||||||
|
<executions>
|
||||||
|
<execution>
|
||||||
|
<id>exec-java-server</id>
|
||||||
|
<goals>
|
||||||
|
<goal>java</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>Main</mainClass>
|
||||||
|
<arguments>
|
||||||
|
<argument>server</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>exec-java-client</id>
|
||||||
|
<goals>
|
||||||
|
<goal>java</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<mainClass>Main</mainClass>
|
||||||
|
<arguments>
|
||||||
|
<argument>client</argument>
|
||||||
|
</arguments>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
</executions>
|
||||||
|
</plugin>
|
||||||
|
</plugins>
|
||||||
|
</build>
|
||||||
|
</project>
|
|
@ -1,10 +0,0 @@
|
||||||
import client.ClientApp;
|
|
||||||
import server.ServerApp;
|
|
||||||
|
|
||||||
public class Main {
|
|
||||||
public static void main(String[] args) {
|
|
||||||
ServerApp serverApp = new ServerApp();
|
|
||||||
ClientApp clientApp = new ClientApp(serverApp);
|
|
||||||
clientApp.start();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,46 +0,0 @@
|
||||||
package client;
|
|
||||||
|
|
||||||
import server.ServerApp;
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class ClientApp {
|
|
||||||
private ServerApp serverApp;
|
|
||||||
private Scanner scanner;
|
|
||||||
|
|
||||||
public ClientApp(ServerApp serverApp) {
|
|
||||||
this.serverApp = serverApp;
|
|
||||||
this.scanner = new Scanner(System.in);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void start() {
|
|
||||||
System.out.println("Клиент запущен. Введите 'exit' для выхода.");
|
|
||||||
while (true) {
|
|
||||||
System.out.print("Введите команду: ");
|
|
||||||
if (!scanner.hasNextLine()) { // Проверка на EOF
|
|
||||||
System.out.println("Клиент завершает работу из-за отсутствия входных данных.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
String input = scanner.nextLine();
|
|
||||||
if ("exit".equalsIgnoreCase(input)) {
|
|
||||||
System.out.println("Клиент завершает работу.");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
String[] parts = input.split(" ", 2);
|
|
||||||
String commandName = parts[0];
|
|
||||||
String[] args = parts.length > 1 ? new String[]{parts[1]} : new String[]{};
|
|
||||||
String response = sendCommand(commandName, args);
|
|
||||||
System.out.println(response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String sendCommand(String commandName, String[] args) {
|
|
||||||
return serverApp.executeCommand(commandName, args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(String[] args) {
|
|
||||||
ServerApp serverApp = new ServerApp();
|
|
||||||
ClientApp clientApp = new ClientApp(serverApp);
|
|
||||||
clientApp.start();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package client;
|
|
||||||
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class ConsoleManager {
|
|
||||||
private final ClientApp clientApp;
|
|
||||||
private final Scanner scanner;
|
|
||||||
|
|
||||||
public ConsoleManager(ClientApp clientApp) {
|
|
||||||
this.clientApp = clientApp;
|
|
||||||
this.scanner = new Scanner(System.in);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void run() {
|
|
||||||
while (true) {
|
|
||||||
System.out.print("Введите команду: ");
|
|
||||||
String input = scanner.nextLine();
|
|
||||||
if ("exit".equalsIgnoreCase(input)) break;
|
|
||||||
String[] parts = input.split(" ", 2);
|
|
||||||
String commandName = parts[0];
|
|
||||||
String[] args = parts.length > 1 ? new String[]{parts[1]} : new String[]{};
|
|
||||||
String response = clientApp.sendCommand(commandName, args);
|
|
||||||
System.out.println(response);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
package common.models;
|
|
||||||
|
|
||||||
public class Coordinates {
|
|
||||||
private double x;
|
|
||||||
private float y;
|
|
||||||
|
|
||||||
// Конструктор
|
|
||||||
public Coordinates(double x, float y) {
|
|
||||||
this.x = x;
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Геттеры и сеттеры
|
|
||||||
public double getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setX(double x) {
|
|
||||||
this.x = x;
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getY() {
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setY(float y) {
|
|
||||||
this.y = y;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
package common.models;
|
|
||||||
|
|
||||||
public class Event {
|
|
||||||
private long id;
|
|
||||||
private String name;
|
|
||||||
private int ticketCount;
|
|
||||||
|
|
||||||
public Event(long id, String name, int ticketCount) {
|
|
||||||
this.id = id;
|
|
||||||
this.name = name;
|
|
||||||
this.ticketCount = ticketCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setId(long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getName() {
|
|
||||||
return name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setName(String name) {
|
|
||||||
this.name = name;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTicketCount() {
|
|
||||||
return ticketCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTicketCount(int ticketCount) {
|
|
||||||
this.ticketCount = ticketCount;
|
|
||||||
}
|
|
||||||
}
|
|
31
src/main/java/Main.java
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
import client.ClientApp;
|
||||||
|
import server.ServerApp;
|
||||||
|
public class Main {
|
||||||
|
public static void main(String[] args) {
|
||||||
|
if (args.length > 0) {
|
||||||
|
switch (args[0]) {
|
||||||
|
case "server" -> startServer();
|
||||||
|
case "client" -> {
|
||||||
|
if (args.length >= 3) {
|
||||||
|
startClient(args[1], Integer.parseInt(args[2]));
|
||||||
|
} else {
|
||||||
|
System.out.println("Необходимо указать адрес сервера и порт для клиента. Например: client localhost 4444");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default -> System.out.println("Неизвестный режим: " + args[0]);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
System.out.println("Необходимо указать режим работы: server или client");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void startServer() {
|
||||||
|
ServerApp server = new ServerApp(4444);
|
||||||
|
server.start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void startClient(String host, int port) {
|
||||||
|
ClientApp client = new ClientApp(host, port);
|
||||||
|
client.main(new String[]{});
|
||||||
|
}
|
||||||
|
}
|
35
src/main/java/client/ClientApp.java
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
package client;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class ClientApp {
|
||||||
|
private String host;
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
public ClientApp(String host, int port) {
|
||||||
|
this.host = host;
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
public void main(String[] args) {
|
||||||
|
try (Socket socket = new Socket(host, port);
|
||||||
|
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||||
|
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in))) {
|
||||||
|
System.out.println("Подключен к серверу " + host + " на порту " + port);
|
||||||
|
|
||||||
|
String userInput;
|
||||||
|
System.out.println("Введите 'exit' для выхода.");
|
||||||
|
while ((userInput = stdIn.readLine()) != null) {
|
||||||
|
out.println(userInput);
|
||||||
|
System.out.println("Ответ сервера: " + in.readLine());
|
||||||
|
|
||||||
|
if ("exit".equalsIgnoreCase(userInput)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Не удалось подключиться к серверу " + host + " на порту " + port + ": " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
63
src/main/java/client/ConsoleManager.java
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
package client;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class ConsoleManager {
|
||||||
|
private final Socket socket;
|
||||||
|
private final PrintWriter out;
|
||||||
|
private final BufferedReader in;
|
||||||
|
private final BufferedReader consoleReader;
|
||||||
|
|
||||||
|
public ConsoleManager(String host, int port) throws IOException {
|
||||||
|
this.socket = new Socket(host, port);
|
||||||
|
this.out = new PrintWriter(socket.getOutputStream(), true);
|
||||||
|
this.in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
|
||||||
|
this.consoleReader = new BufferedReader(new InputStreamReader(System.in));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void run() {
|
||||||
|
System.out.println("Клиент запущен. Введите команду (введите 'exit' для выхода):");
|
||||||
|
|
||||||
|
try {
|
||||||
|
while (true) {
|
||||||
|
String userInput = consoleReader.readLine();
|
||||||
|
|
||||||
|
if (userInput != null && !userInput.isEmpty()) {
|
||||||
|
out.println(userInput); // Отправляем команду на сервер
|
||||||
|
|
||||||
|
if ("exit".equalsIgnoreCase(userInput)) {
|
||||||
|
// Клиент закрыл соединение, но сервер должен продолжать работать
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
String response = in.readLine(); // Читаем ответ от сервера
|
||||||
|
System.out.println("Ответ сервера: " + response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Ошибка при общении с сервером: " + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
socket.close();
|
||||||
|
out.close();
|
||||||
|
in.close();
|
||||||
|
consoleReader.close();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Ошибка при закрытии ресурсов: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void main(String[] args) {
|
||||||
|
try {
|
||||||
|
ConsoleManager consoleManager = new ConsoleManager("localhost", 4444);
|
||||||
|
consoleManager.run();
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Не удалось подключиться к серверу: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
39
src/main/java/common/Protocol.java
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
package common;
|
||||||
|
|
||||||
|
import common.enums.TicketType;
|
||||||
|
import common.models.Coordinates;
|
||||||
|
import common.models.Ticket;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
|
||||||
|
public class Protocol {
|
||||||
|
public String processInput(String input) {
|
||||||
|
return "Processed input: " + input;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String createTicket(String input, PrintWriter out, BufferedReader in) throws IOException {
|
||||||
|
// Псевдокод для демонстрации запроса данных у клиента
|
||||||
|
String name = askClient("Введите название билета:", out, in);
|
||||||
|
String xStr = askClient("Введите координату X:", out, in);
|
||||||
|
int x = Integer.parseInt(xStr);
|
||||||
|
// Дополнительные поля аналогично
|
||||||
|
|
||||||
|
// Создаем объект Ticket после получения всех необходимых данных
|
||||||
|
Ticket ticket = new Ticket(
|
||||||
|
name,
|
||||||
|
new Coordinates(x, 0), // TODO: handle y
|
||||||
|
new Long(10000),
|
||||||
|
new Long(100),
|
||||||
|
TicketType.CHEAP,
|
||||||
|
null
|
||||||
|
);
|
||||||
|
return "Билет создан успешно.";
|
||||||
|
}
|
||||||
|
|
||||||
|
private String askClient(String question, PrintWriter out, BufferedReader in) throws IOException {
|
||||||
|
out.println(question); // Отправляем запрос клиенту
|
||||||
|
return in.readLine(); // Ждем ответ от клиента
|
||||||
|
}
|
||||||
|
}
|
8
src/main/java/common/enums/EventType.java
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
package common.enums;
|
||||||
|
|
||||||
|
public enum EventType {
|
||||||
|
E_SPORTS,
|
||||||
|
FOOTBALL,
|
||||||
|
BASEBALL,
|
||||||
|
EXPOSITION;
|
||||||
|
}
|
29
src/main/java/common/models/Coordinates.java
Normal file
|
@ -0,0 +1,29 @@
|
||||||
|
package common.models;
|
||||||
|
|
||||||
|
public class Coordinates {
|
||||||
|
private int x; // Максимальное значение поля: 794
|
||||||
|
private int y;
|
||||||
|
|
||||||
|
public Coordinates(int x, int y) {
|
||||||
|
this.x = Math.min(x, 794); // Обеспечиваем, что x не превышает 794
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Геттеры
|
||||||
|
public int getX() {
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getY() {
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Сеттеры
|
||||||
|
public void setX(int x) {
|
||||||
|
this.x = Math.min(x, 794);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setY(int y) {
|
||||||
|
this.y = y;
|
||||||
|
}
|
||||||
|
}
|
60
src/main/java/common/models/Event.java
Normal file
|
@ -0,0 +1,60 @@
|
||||||
|
package common.models;
|
||||||
|
|
||||||
|
import common.enums.EventType;
|
||||||
|
|
||||||
|
public class Event {
|
||||||
|
private int id; // Уникальное значение, генерируется автоматически
|
||||||
|
private String name;
|
||||||
|
private long ticketsCount;
|
||||||
|
private String description;
|
||||||
|
private EventType eventType;
|
||||||
|
|
||||||
|
public Event(int id, String name, long ticketsCount, String description, EventType eventType) {
|
||||||
|
this.id = id;
|
||||||
|
this.name = name;
|
||||||
|
this.ticketsCount = ticketsCount;
|
||||||
|
this.description = description;
|
||||||
|
this.eventType = eventType;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Геттеры и сеттеры
|
||||||
|
public int getId() {
|
||||||
|
return id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setId(int id) {
|
||||||
|
this.id = id;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setName(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getTicketsCount() {
|
||||||
|
return ticketsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTicketsCount(long ticketsCount) {
|
||||||
|
this.ticketsCount = ticketsCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescription() {
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDescription(String description) {
|
||||||
|
this.description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public EventType getEventType() {
|
||||||
|
return eventType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setEventType(EventType eventType) {
|
||||||
|
this.eventType = eventType;
|
||||||
|
}
|
||||||
|
}
|
|
@ -5,21 +5,21 @@ import common.enums.TicketType;
|
||||||
import java.time.LocalDate;
|
import java.time.LocalDate;
|
||||||
|
|
||||||
public class Ticket implements Comparable<Ticket> {
|
public class Ticket implements Comparable<Ticket> {
|
||||||
private static long nextId = 1;
|
private long id;
|
||||||
private final long id;
|
|
||||||
private String name;
|
private String name;
|
||||||
private Coordinates coordinates;
|
private Coordinates coordinates;
|
||||||
private final LocalDate creationDate;
|
private LocalDate creationDate;
|
||||||
private Long price;
|
private Long price;
|
||||||
private Long discount;
|
private Long discount;
|
||||||
private TicketType type;
|
private TicketType type;
|
||||||
private Event event;
|
private Event event; // Предположим, что класс Event также определен
|
||||||
|
|
||||||
|
// Конструктор
|
||||||
public Ticket(String name, Coordinates coordinates, Long price, Long discount, TicketType type, Event event) {
|
public Ticket(String name, Coordinates coordinates, Long price, Long discount, TicketType type, Event event) {
|
||||||
this.id = nextId++;
|
this.id = 1; // TODO: generate automatically
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.coordinates = coordinates;
|
this.coordinates = coordinates;
|
||||||
this.creationDate = LocalDate.now();
|
this.creationDate = LocalDate.now(); // Дата создания
|
||||||
this.price = price;
|
this.price = price;
|
||||||
this.discount = discount;
|
this.discount = discount;
|
||||||
this.type = type;
|
this.type = type;
|
44
src/main/java/server/ClientHandler.java
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
// ClientHandler.java
|
||||||
|
package server;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.PrintWriter;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class ClientHandler implements Runnable {
|
||||||
|
private Socket clientSocket;
|
||||||
|
|
||||||
|
public ClientHandler(Socket clientSocket) {
|
||||||
|
this.clientSocket = clientSocket;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try (
|
||||||
|
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
|
||||||
|
BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))
|
||||||
|
) {
|
||||||
|
String inputLine;
|
||||||
|
while ((inputLine = in.readLine()) != null) {
|
||||||
|
System.out.println("Получено от клиента: " + inputLine);
|
||||||
|
out.println("Сервер получил: " + inputLine);
|
||||||
|
|
||||||
|
// Если клиент отключился, выходим из цикла
|
||||||
|
if (inputLine.equalsIgnoreCase("exit")) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Ошибка при обработке клиента: " + e.getMessage());
|
||||||
|
} finally {
|
||||||
|
try {
|
||||||
|
clientSocket.close();
|
||||||
|
System.out.println("Клиент отключен");
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
173
src/main/java/server/CollectionManager.java
Normal file
|
@ -0,0 +1,173 @@
|
||||||
|
package server;
|
||||||
|
|
||||||
|
import common.enums.EventType;
|
||||||
|
import common.models.Coordinates;
|
||||||
|
import common.models.Event;
|
||||||
|
import common.models.Ticket;
|
||||||
|
import common.enums.TicketType;
|
||||||
|
|
||||||
|
import java.util.ArrayDeque;
|
||||||
|
import java.util.Comparator;
|
||||||
|
import java.util.Scanner;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
|
public class CollectionManager {
|
||||||
|
private ArrayDeque<Ticket> tickets;
|
||||||
|
private FileManager fileManager;
|
||||||
|
private Scanner scanner = new Scanner(System.in);
|
||||||
|
|
||||||
|
public CollectionManager(FileManager fileManager) {
|
||||||
|
this.fileManager = fileManager;
|
||||||
|
this.tickets = fileManager.loadCollection();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String addTicket(Ticket ticket) {
|
||||||
|
tickets.add(ticket);
|
||||||
|
return "Ticket added successfully.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String updateTicketById(long id, Ticket newTicket) {
|
||||||
|
for (Ticket ticket : tickets) {
|
||||||
|
if (ticket.getId() == id) {
|
||||||
|
tickets.remove(ticket);
|
||||||
|
tickets.add(newTicket);
|
||||||
|
return "Ticket updated successfully.";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "Ticket with ID " + id + " not found.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String removeTicketById(long id) {
|
||||||
|
if (tickets.removeIf(ticket -> ticket.getId() == id)) {
|
||||||
|
return "Ticket removed successfully.";
|
||||||
|
}
|
||||||
|
return "Ticket with ID " + id + " not found.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String clear() {
|
||||||
|
tickets.clear();
|
||||||
|
return "Collection cleared.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String show() {
|
||||||
|
return tickets.stream()
|
||||||
|
.map(Ticket::toString)
|
||||||
|
.collect(Collectors.joining("\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getInfo() {
|
||||||
|
return "Collection type: " + tickets.getClass() + "\n" +
|
||||||
|
"Initialization date: " + /* initialization date here */ "\n" +
|
||||||
|
"Number of elements: " + tickets.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
public String saveCollection() {
|
||||||
|
fileManager.saveCollection(tickets);
|
||||||
|
return "Collection saved.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String removeHead() {
|
||||||
|
if (tickets.isEmpty()) return "Collection is empty.";
|
||||||
|
Ticket first = tickets.poll();
|
||||||
|
return (first != null) ? first.toString() : "Collection is empty.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String addIfMin(Ticket newTicket) {
|
||||||
|
Ticket min = tickets.stream().min(Comparator.naturalOrder()).orElse(null);
|
||||||
|
if (min == null || newTicket.compareTo(min) < 0) {
|
||||||
|
tickets.add(newTicket);
|
||||||
|
return "Ticket added successfully.";
|
||||||
|
}
|
||||||
|
return "New ticket is not less than the smallest ticket in the collection.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String removeGreater(Ticket ticket) {
|
||||||
|
int initialSize = tickets.size();
|
||||||
|
tickets.removeIf(t -> t.compareTo(ticket) > 0);
|
||||||
|
return "Removed " + (initialSize - tickets.size()) + " tickets.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String groupCountingByType() {
|
||||||
|
return tickets.stream()
|
||||||
|
.collect(Collectors.groupingBy(Ticket::getType, Collectors.counting()))
|
||||||
|
.entrySet().stream()
|
||||||
|
.map(entry -> entry.getKey() + ": " + entry.getValue())
|
||||||
|
.collect(Collectors.joining("\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String filterByEvent(String eventName) {
|
||||||
|
return tickets.stream()
|
||||||
|
.filter(ticket -> ticket.getEvent() != null && ticket.getEvent().getName().equals(eventName))
|
||||||
|
.map(Ticket::toString)
|
||||||
|
.collect(Collectors.joining("\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public String filterLessThanType(String typeStr) {
|
||||||
|
TicketType type;
|
||||||
|
try {
|
||||||
|
type = TicketType.valueOf(typeStr.toUpperCase());
|
||||||
|
} catch (IllegalArgumentException e) {
|
||||||
|
return "Invalid ticket type: " + typeStr;
|
||||||
|
}
|
||||||
|
return tickets.stream()
|
||||||
|
.filter(ticket -> ticket.getType() != null && ticket.getType().compareTo(type) < 0)
|
||||||
|
.map(Ticket::toString)
|
||||||
|
.collect(Collectors.joining("\n"));
|
||||||
|
}
|
||||||
|
|
||||||
|
public Ticket createTicket() {
|
||||||
|
System.out.println("Введите название билета:");
|
||||||
|
String name = scanner.nextLine().trim();
|
||||||
|
while (name.isEmpty()) {
|
||||||
|
System.out.println("Название не может быть пустым. Пожалуйста, введите название билета:");
|
||||||
|
name = scanner.nextLine().trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Введите координату x (целое число <= 794):");
|
||||||
|
int x = scanner.nextInt();
|
||||||
|
while (x > 794) {
|
||||||
|
System.out.println("Координата x должна быть <= 794. Пожалуйста, введите координату x:");
|
||||||
|
x = scanner.nextInt();
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("Введите координату y (целое число):");
|
||||||
|
int y = scanner.nextInt();
|
||||||
|
|
||||||
|
scanner.nextLine(); // очистка буфера
|
||||||
|
|
||||||
|
System.out.println("Введите цену билета (положительное число или оставьте пустым):");
|
||||||
|
String priceInput = scanner.nextLine().trim();
|
||||||
|
Long price = priceInput.isEmpty() ? null : Long.parseLong(priceInput);
|
||||||
|
|
||||||
|
System.out.println("Введите скидку на билет (от 0 до 100 или оставьте пустым):");
|
||||||
|
String discountInput = scanner.nextLine().trim();
|
||||||
|
Long discount = discountInput.isEmpty() ? null : Long.parseLong(discountInput);
|
||||||
|
|
||||||
|
System.out.println("Выберите тип билета (VIP, USUAL, BUDGETARY, CHEAP или оставьте пустым):");
|
||||||
|
TicketType type = null;
|
||||||
|
String typeStr = scanner.nextLine().trim().toUpperCase();
|
||||||
|
if (!typeStr.isEmpty()) {
|
||||||
|
type = TicketType.valueOf(typeStr);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Для Event и EventType можно добавить аналогичный процесс ввода
|
||||||
|
// Предполагаем, что для Event нужно ввести дополнительные данные, например, название события
|
||||||
|
System.out.println("Введите название события (или оставьте пустым):");
|
||||||
|
String eventName = scanner.nextLine().trim();
|
||||||
|
Event event = null;
|
||||||
|
if (!eventName.isEmpty()) {
|
||||||
|
// Здесь должна быть логика создания объекта Event на основе введенных данных
|
||||||
|
event = new Event(
|
||||||
|
1, // TODO: сгенерировать ID автоматически
|
||||||
|
eventName,
|
||||||
|
1000,
|
||||||
|
"Some event",
|
||||||
|
EventType.BASEBALL
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Предполагается, что ID генерируется автоматически
|
||||||
|
// Дата создания устанавливается текущей датой
|
||||||
|
return new Ticket(name, new Coordinates(x, y), price, discount, type, event);
|
||||||
|
}
|
||||||
|
}
|
66
src/main/java/server/FileManager.java
Normal file
|
@ -0,0 +1,66 @@
|
||||||
|
package server;
|
||||||
|
|
||||||
|
import javax.xml.bind.JAXBContext;
|
||||||
|
import javax.xml.bind.JAXBException;
|
||||||
|
import javax.xml.bind.Marshaller;
|
||||||
|
import javax.xml.bind.Unmarshaller;
|
||||||
|
import javax.xml.bind.annotation.XmlElement;
|
||||||
|
import javax.xml.bind.annotation.XmlRootElement;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileReader;
|
||||||
|
import java.io.FileWriter;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayDeque;
|
||||||
|
import common.models.Ticket;
|
||||||
|
|
||||||
|
public class FileManager {
|
||||||
|
private String fileName;
|
||||||
|
|
||||||
|
public FileManager(String fileName) {
|
||||||
|
this.fileName = fileName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayDeque<Ticket> loadCollection() {
|
||||||
|
ArrayDeque<Ticket> tickets = new ArrayDeque<>();
|
||||||
|
try {
|
||||||
|
File file = new File(fileName);
|
||||||
|
if (file.exists()) {
|
||||||
|
JAXBContext jaxbContext = JAXBContext.newInstance(TicketsCollectionWrapper.class);
|
||||||
|
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
|
||||||
|
TicketsCollectionWrapper wrapper = (TicketsCollectionWrapper) unmarshaller.unmarshal(new FileReader(fileName));
|
||||||
|
tickets.addAll(wrapper.getTickets());
|
||||||
|
}
|
||||||
|
} catch (JAXBException | IOException e) {
|
||||||
|
System.err.println("Ошибка при загрузке коллекции из файла: " + e.getMessage());
|
||||||
|
}
|
||||||
|
return tickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void saveCollection(ArrayDeque<Ticket> tickets) {
|
||||||
|
try {
|
||||||
|
JAXBContext jaxbContext = JAXBContext.newInstance(TicketsCollectionWrapper.class);
|
||||||
|
Marshaller marshaller = jaxbContext.createMarshaller();
|
||||||
|
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
|
||||||
|
TicketsCollectionWrapper wrapper = new TicketsCollectionWrapper();
|
||||||
|
wrapper.setTickets(new ArrayDeque<>(tickets));
|
||||||
|
marshaller.marshal(wrapper, new FileWriter(fileName));
|
||||||
|
} catch (JAXBException | IOException e) {
|
||||||
|
System.err.println("Ошибка при сохранении коллекции в файл: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Вспомогательный класс для обертки коллекции Ticket для JAXB
|
||||||
|
@XmlRootElement(name = "tickets")
|
||||||
|
public static class TicketsCollectionWrapper {
|
||||||
|
private ArrayDeque<Ticket> tickets;
|
||||||
|
|
||||||
|
@XmlElement(name = "ticket")
|
||||||
|
public ArrayDeque<Ticket> getTickets() {
|
||||||
|
return tickets;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTickets(ArrayDeque<Ticket> tickets) {
|
||||||
|
this.tickets = tickets;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
32
src/main/java/server/ServerApp.java
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package server;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.net.ServerSocket;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class ServerApp {
|
||||||
|
private int port;
|
||||||
|
|
||||||
|
public ServerApp(int port) {
|
||||||
|
this.port = port;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void start() {
|
||||||
|
try (ServerSocket serverSocket = new ServerSocket(port)) {
|
||||||
|
System.out.println("Сервер запущен на порту " + port);
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
Socket clientSocket = serverSocket.accept();
|
||||||
|
System.out.println("Подключился клиент: " + clientSocket);
|
||||||
|
|
||||||
|
// Создаем новый поток для обработки подключения клиента
|
||||||
|
ClientHandler clientHandler = new ClientHandler(clientSocket);
|
||||||
|
Thread thread = new Thread(clientHandler);
|
||||||
|
thread.start();
|
||||||
|
}
|
||||||
|
} catch (IOException e) {
|
||||||
|
System.out.println("Ошибка при запуске сервера: " + e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
18
src/main/java/server/commands/AddCommand.java
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import common.models.Ticket;
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class AddCommand extends Command {
|
||||||
|
public AddCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
// Допустим, что аргументы уже предварительно обработаны и переданы в нужном формате
|
||||||
|
Ticket ticket = collectionManager.createTicket(); // предполагается метод createTicket, который создает и возвращает объект Ticket
|
||||||
|
collectionManager.addTicket(ticket);
|
||||||
|
return "Элемент добавлен в коллекцию.";
|
||||||
|
}
|
||||||
|
}
|
16
src/main/java/server/commands/AddIfMinCommand.java
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import common.models.Ticket;
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class AddIfMinCommand extends Command {
|
||||||
|
public AddIfMinCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
Ticket ticket = collectionManager.createTicket(); // TODO: handle args
|
||||||
|
return collectionManager.addIfMin(ticket);
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/server/commands/ClearCommand.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class ClearCommand extends Command {
|
||||||
|
public ClearCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
collectionManager.clear();
|
||||||
|
return "Коллекция очищена.";
|
||||||
|
}
|
||||||
|
}
|
31
src/main/java/server/commands/Command.java
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public abstract class Command {
|
||||||
|
protected String[] args;
|
||||||
|
protected CollectionManager collectionManager;
|
||||||
|
|
||||||
|
public Command(String[] args, CollectionManager collectionManager) {
|
||||||
|
this.args = args;
|
||||||
|
this.collectionManager = collectionManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract String execute();
|
||||||
|
|
||||||
|
public boolean validate() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean requiresArguments() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getResult() {
|
||||||
|
return "Команда выполнена.";
|
||||||
|
}
|
||||||
|
|
||||||
|
public void call() {
|
||||||
|
execute();
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/server/commands/ExecuteScriptCommand.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class ExecuteScriptCommand extends Command {
|
||||||
|
public ExecuteScriptCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
// Логика выполнения скрипта из файла
|
||||||
|
return "Скрипт выполнен.";
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/server/commands/ExitCommand.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class ExitCommand extends Command {
|
||||||
|
public ExitCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
// Логика завершения работы программы
|
||||||
|
return "Программа завершена.";
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/server/commands/FilterByEventCommand.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class FilterByEventCommand extends Command {
|
||||||
|
public FilterByEventCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
String event = args[0];
|
||||||
|
return collectionManager.filterByEvent(event);
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/server/commands/FilterLessThanTypeCommand.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class FilterLessThanTypeCommand extends Command {
|
||||||
|
public FilterLessThanTypeCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
String type = args[0];
|
||||||
|
return collectionManager.filterLessThanType(type);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,14 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class GroupCountingByTypeCommand extends Command {
|
||||||
|
public GroupCountingByTypeCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
return collectionManager.groupCountingByType();
|
||||||
|
}
|
||||||
|
}
|
32
src/main/java/server/commands/HelpCommand.java
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class HelpCommand extends Command {
|
||||||
|
public HelpCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
return """
|
||||||
|
Доступные команды:
|
||||||
|
help : вывести справку по доступным командам
|
||||||
|
info : вывести информацию о коллекции
|
||||||
|
show : вывести все элементы коллекции
|
||||||
|
add {element} : добавить новый элемент в коллекцию
|
||||||
|
update id {element} : обновить значение элемента коллекции
|
||||||
|
remove_by_id id : удалить элемент из коллекции по его id
|
||||||
|
clear : очистить коллекцию
|
||||||
|
save : сохранить коллекцию в файл
|
||||||
|
execute_script file_name : выполнить скрипт из файла
|
||||||
|
exit : завершить программу
|
||||||
|
remove_head : вывести и удалить первый элемент коллекции
|
||||||
|
add_if_min {element} : добавить элемент, если он меньше наименьшего
|
||||||
|
remove_greater {element} : удалить элементы, превышающие заданный
|
||||||
|
group_counting_by_type : группировать элементы по типу
|
||||||
|
filter_by_event event : фильтровать элементы по событию
|
||||||
|
filter_less_than_type type : фильтровать элементы, тип которых меньше заданного""";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
14
src/main/java/server/commands/InfoCommand.java
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class InfoCommand extends Command {
|
||||||
|
public InfoCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
return collectionManager.getInfo();
|
||||||
|
}
|
||||||
|
}
|
15
src/main/java/server/commands/RemoveByIdCommand.java
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class RemoveByIdCommand extends Command {
|
||||||
|
public RemoveByIdCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
long id = Long.parseLong(args[0]);
|
||||||
|
return collectionManager.removeTicketById(id);
|
||||||
|
}
|
||||||
|
}
|
16
src/main/java/server/commands/RemoveGreaterCommand.java
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import common.models.Ticket;
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class RemoveGreaterCommand extends Command {
|
||||||
|
public RemoveGreaterCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
Ticket ticket = collectionManager.createTicket();
|
||||||
|
return collectionManager.removeGreater(ticket);
|
||||||
|
}
|
||||||
|
}
|
14
src/main/java/server/commands/RemoveHeadCommand.java
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class RemoveHeadCommand extends Command {
|
||||||
|
public RemoveHeadCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
return collectionManager.removeHead();
|
||||||
|
}
|
||||||
|
}
|
16
src/main/java/server/commands/SaveCommand.java
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class SaveCommand extends Command {
|
||||||
|
public SaveCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
collectionManager.saveCollection();
|
||||||
|
return "Коллекция сохранена в файл.";
|
||||||
|
}
|
||||||
|
}
|
14
src/main/java/server/commands/ShowCommand.java
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class ShowCommand extends Command {
|
||||||
|
public ShowCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
return collectionManager.show();
|
||||||
|
}
|
||||||
|
}
|
17
src/main/java/server/commands/UpdateCommand.java
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
package server.commands;
|
||||||
|
|
||||||
|
import common.models.Ticket;
|
||||||
|
import server.CollectionManager;
|
||||||
|
|
||||||
|
public class UpdateCommand extends Command {
|
||||||
|
public UpdateCommand(String[] args, CollectionManager collectionManager) {
|
||||||
|
super(args, collectionManager);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String execute() {
|
||||||
|
long id = Long.parseLong(args[0]);
|
||||||
|
Ticket newTicket = collectionManager.createTicket(); // TODO: handle args
|
||||||
|
return collectionManager.updateTicketById(id, newTicket);
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,37 +0,0 @@
|
||||||
package server;
|
|
||||||
|
|
||||||
import server.commands.Command;
|
|
||||||
|
|
||||||
import java.lang.reflect.Constructor;
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
|
||||||
|
|
||||||
public class CollectionManager {
|
|
||||||
private static final String CLASS_PATH = "server.commands.%sCommand";
|
|
||||||
private static final String VALIDATION_ERROR_MESSAGE = "Ошибка валидации аргументов команды.";
|
|
||||||
private static final String EXECUTION_ERROR_MESSAGE = "Ошибка выполнения команды: ";
|
|
||||||
|
|
||||||
public String executeCommand(String commandName, String[] args) {
|
|
||||||
try {
|
|
||||||
Command command = createCommand(commandName, args);
|
|
||||||
if (command.validate()) {
|
|
||||||
command.call();
|
|
||||||
return command.getResult();
|
|
||||||
} else {
|
|
||||||
return VALIDATION_ERROR_MESSAGE;
|
|
||||||
}
|
|
||||||
} catch (Exception e) {
|
|
||||||
return EXECUTION_ERROR_MESSAGE + e.getMessage();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Command createCommand(String commandName, String[] args) throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException {
|
|
||||||
Class<?> commandClass = Class.forName(String.format(CLASS_PATH, commandName));
|
|
||||||
Constructor<?> constructor = commandClass.getConstructor(String[].class, CollectionManager.class);
|
|
||||||
return (Command) constructor.newInstance((Object) args, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public String show() {
|
|
||||||
// Your logic to display the collection
|
|
||||||
return "Элементы коллекции: ...";
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,36 +0,0 @@
|
||||||
package server;
|
|
||||||
|
|
||||||
import common.models.Ticket;
|
|
||||||
|
|
||||||
import java.io.*;
|
|
||||||
import java.nio.charset.StandardCharsets;
|
|
||||||
import java.util.ArrayDeque;
|
|
||||||
import java.util.Scanner;
|
|
||||||
|
|
||||||
public class FileManager {
|
|
||||||
private final String fileName;
|
|
||||||
|
|
||||||
public FileManager(String fileName) {
|
|
||||||
this.fileName = fileName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ArrayDeque<Ticket> loadCollection() {
|
|
||||||
ArrayDeque<Ticket> tickets = new ArrayDeque<>();
|
|
||||||
try (Scanner scanner = new Scanner(new File(fileName))) {
|
|
||||||
// Чтение и парсинг XML файла для заполнения коллекции tickets
|
|
||||||
// Примерный код, требуется реализация парсинга XML
|
|
||||||
} catch (FileNotFoundException e) {
|
|
||||||
System.err.println("Файл не найден: " + e.getMessage());
|
|
||||||
}
|
|
||||||
return tickets;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void saveCollection(ArrayDeque<Ticket> tickets) {
|
|
||||||
try (OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(fileName), StandardCharsets.UTF_8)) {
|
|
||||||
// Запись коллекции tickets в файл в формате XML
|
|
||||||
// Примерный код, требуется реализация форматирования и записи XML
|
|
||||||
} catch (IOException e) {
|
|
||||||
System.err.println("Ошибка при записи файла: " + e.getMessage());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,10 +0,0 @@
|
||||||
package server;
|
|
||||||
|
|
||||||
public class ServerApp {
|
|
||||||
private final CollectionManager collectionManager = new CollectionManager();
|
|
||||||
|
|
||||||
public String executeCommand(String command, String[] args) {
|
|
||||||
// Обработка команды и возвращение результата выполнения
|
|
||||||
return CommandProcessor.process(command, collectionManager);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
package server.commands;
|
|
||||||
|
|
||||||
public abstract class Command {
|
|
||||||
protected String[] args;
|
|
||||||
protected String result;
|
|
||||||
|
|
||||||
public Command(String[] args) {
|
|
||||||
this.args = args;
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract boolean validate();
|
|
||||||
public abstract void call();
|
|
||||||
public abstract boolean requiresArguments();
|
|
||||||
|
|
||||||
public String getResult() {
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setArgs(String[] args) {
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
package server.commands;
|
|
||||||
|
|
||||||
import server.CollectionManager;
|
|
||||||
|
|
||||||
public class HelpCommand extends Command {
|
|
||||||
private CollectionManager collectionManager;
|
|
||||||
|
|
||||||
public HelpCommand(CollectionManager collectionManager, String[] args) {
|
|
||||||
super(args);
|
|
||||||
this.collectionManager = collectionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean validate() {
|
|
||||||
return args.length == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void call() {
|
|
||||||
result = "Список доступных команд: ...";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean requiresArguments() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,26 +0,0 @@
|
||||||
package server.commands;
|
|
||||||
|
|
||||||
import server.CollectionManager;
|
|
||||||
|
|
||||||
public class ShowCommand extends Command {
|
|
||||||
private CollectionManager collectionManager;
|
|
||||||
|
|
||||||
public ShowCommand(CollectionManager collectionManager, String[] args) {
|
|
||||||
super(args);
|
|
||||||
this.collectionManager = collectionManager;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean validate() {
|
|
||||||
return args.length == 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void call() {
|
|
||||||
result = collectionManager.show();
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean requiresArguments() {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
BIN
target/classes/Main.class
Normal file
BIN
target/classes/client/ClientApp.class
Normal file
BIN
target/classes/client/ConsoleManager.class
Normal file
BIN
target/classes/common/Protocol.class
Normal file
BIN
target/classes/common/enums/EventType.class
Normal file
BIN
target/classes/common/enums/TicketType.class
Normal file
BIN
target/classes/common/models/Coordinates.class
Normal file
BIN
target/classes/common/models/Event.class
Normal file
BIN
target/classes/common/models/Ticket.class
Normal file
BIN
target/classes/common/utils/TicketComparator.class
Normal file
BIN
target/classes/server/CollectionManager.class
Normal file
BIN
target/classes/server/CommandProcessor.class
Normal file
BIN
target/classes/server/FileManager$TicketsCollectionWrapper.class
Normal file
BIN
target/classes/server/FileManager.class
Normal file
BIN
target/classes/server/ServerApp.class
Normal file
BIN
target/classes/server/commands/AddCommand.class
Normal file
BIN
target/classes/server/commands/AddIfMinCommand.class
Normal file
BIN
target/classes/server/commands/ClearCommand.class
Normal file
BIN
target/classes/server/commands/Command.class
Normal file
BIN
target/classes/server/commands/ExecuteScriptCommand.class
Normal file
BIN
target/classes/server/commands/ExitCommand.class
Normal file
BIN
target/classes/server/commands/FilterByEventCommand.class
Normal file
BIN
target/classes/server/commands/FilterLessThanTypeCommand.class
Normal file
BIN
target/classes/server/commands/GroupCountingByTypeCommand.class
Normal file
BIN
target/classes/server/commands/HelpCommand.class
Normal file
BIN
target/classes/server/commands/InfoCommand.class
Normal file
BIN
target/classes/server/commands/RemoveByIdCommand.class
Normal file
BIN
target/classes/server/commands/RemoveGreaterCommand.class
Normal file
BIN
target/classes/server/commands/RemoveHeadCommand.class
Normal file
BIN
target/classes/server/commands/SaveCommand.class
Normal file
BIN
target/classes/server/commands/ShowCommand.class
Normal file
BIN
target/classes/server/commands/UpdateCommand.class
Normal file
BIN
target/lab5-1.0-SNAPSHOT.jar
Normal file
3
target/maven-archiver/pom.properties
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
artifactId=lab5
|
||||||
|
groupId=ru.akarpov.lab5
|
||||||
|
version=1.0-SNAPSHOT
|
|
@ -0,0 +1,32 @@
|
||||||
|
server/commands/Command.class
|
||||||
|
common/utils/TicketComparator.class
|
||||||
|
server/commands/RemoveHeadCommand.class
|
||||||
|
server/commands/ClearCommand.class
|
||||||
|
server/commands/FilterByEventCommand.class
|
||||||
|
server/commands/RemoveByIdCommand.class
|
||||||
|
server/commands/AddIfMinCommand.class
|
||||||
|
Main.class
|
||||||
|
server/commands/AddCommand.class
|
||||||
|
server/commands/ShowCommand.class
|
||||||
|
server/FileManager$TicketsCollectionWrapper.class
|
||||||
|
server/commands/FilterLessThanTypeCommand.class
|
||||||
|
client/ClientApp.class
|
||||||
|
server/commands/UpdateCommand.class
|
||||||
|
common/models/Ticket.class
|
||||||
|
common/models/Event.class
|
||||||
|
common/enums/TicketType.class
|
||||||
|
client/ConsoleManager.class
|
||||||
|
server/CollectionManager.class
|
||||||
|
server/CommandProcessor.class
|
||||||
|
server/commands/SaveCommand.class
|
||||||
|
server/FileManager.class
|
||||||
|
server/ServerApp.class
|
||||||
|
server/commands/HelpCommand.class
|
||||||
|
server/commands/ExecuteScriptCommand.class
|
||||||
|
server/commands/GroupCountingByTypeCommand.class
|
||||||
|
common/models/Coordinates.class
|
||||||
|
common/enums/EventType.class
|
||||||
|
common/Protocol.class
|
||||||
|
server/commands/InfoCommand.class
|
||||||
|
server/commands/RemoveGreaterCommand.class
|
||||||
|
server/commands/ExitCommand.class
|
|
@ -0,0 +1,31 @@
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/AddIfMinCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/FilterLessThanTypeCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/GroupCountingByTypeCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/UpdateCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/models/Event.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/ShowCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/enums/TicketType.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/client/ConsoleManager.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/ClearCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/Protocol.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/SaveCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/RemoveHeadCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/models/Coordinates.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/models/Ticket.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/FileManager.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/ServerApp.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/ExitCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/FilterByEventCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/ExecuteScriptCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/Command.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/CollectionManager.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/enums/EventType.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/InfoCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/HelpCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/RemoveByIdCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/Main.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/client/ClientApp.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/RemoveGreaterCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/commands/AddCommand.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/server/CommandProcessor.java
|
||||||
|
/home/sanspie/Projects/itmo-prog-lab-5/src/main/java/common/utils/TicketComparator.java
|
168
target/site/css/maven-base.css
Normal file
|
@ -0,0 +1,168 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
table {
|
||||||
|
padding:0px;
|
||||||
|
width: 100%;
|
||||||
|
margin-left: -2px;
|
||||||
|
margin-right: -2px;
|
||||||
|
}
|
||||||
|
acronym {
|
||||||
|
cursor: help;
|
||||||
|
border-bottom: 1px dotted #feb;
|
||||||
|
}
|
||||||
|
table.bodyTable th, table.bodyTable td {
|
||||||
|
padding: 2px 4px 2px 4px;
|
||||||
|
vertical-align: top;
|
||||||
|
}
|
||||||
|
div.clear {
|
||||||
|
clear:both;
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
|
div.clear hr {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
#bannerLeft, #bannerRight {
|
||||||
|
font-size: xx-large;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
#bannerLeft img, #bannerRight img {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
.xleft, #bannerLeft img {
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
.xright, #bannerRight {
|
||||||
|
float:right;
|
||||||
|
}
|
||||||
|
#banner {
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
#breadcrumbs {
|
||||||
|
padding: 3px 10px 3px 10px;
|
||||||
|
}
|
||||||
|
#leftColumn {
|
||||||
|
width: 170px;
|
||||||
|
float:left;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
#bodyColumn {
|
||||||
|
margin-right: 1.5em;
|
||||||
|
margin-left: 197px;
|
||||||
|
}
|
||||||
|
#legend {
|
||||||
|
padding: 8px 0 8px 0;
|
||||||
|
}
|
||||||
|
#navcolumn {
|
||||||
|
padding: 8px 4px 0 8px;
|
||||||
|
}
|
||||||
|
#navcolumn h5 {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
#navcolumn ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
#navcolumn li {
|
||||||
|
list-style-type: none;
|
||||||
|
background-image: none;
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: 0 0.4em;
|
||||||
|
padding-left: 16px;
|
||||||
|
list-style-position: outside;
|
||||||
|
line-height: 1.2em;
|
||||||
|
font-size: smaller;
|
||||||
|
}
|
||||||
|
#navcolumn li.expanded {
|
||||||
|
background-image: url(../images/expanded.gif);
|
||||||
|
}
|
||||||
|
#navcolumn li.collapsed {
|
||||||
|
background-image: url(../images/collapsed.gif);
|
||||||
|
}
|
||||||
|
#navcolumn li.none {
|
||||||
|
text-indent: -1em;
|
||||||
|
margin-left: 1em;
|
||||||
|
}
|
||||||
|
#poweredBy {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
#navcolumn img {
|
||||||
|
margin-top: 10px;
|
||||||
|
margin-bottom: 3px;
|
||||||
|
}
|
||||||
|
#poweredBy img {
|
||||||
|
display:block;
|
||||||
|
margin: 20px 0 20px 17px;
|
||||||
|
}
|
||||||
|
#search img {
|
||||||
|
margin: 0px;
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
#search #q, #search #btnG {
|
||||||
|
border: 1px solid #999;
|
||||||
|
margin-bottom:10px;
|
||||||
|
}
|
||||||
|
#search form {
|
||||||
|
margin: 0px;
|
||||||
|
}
|
||||||
|
#lastPublished {
|
||||||
|
font-size: x-small;
|
||||||
|
}
|
||||||
|
.navSection {
|
||||||
|
margin-bottom: 2px;
|
||||||
|
padding: 8px;
|
||||||
|
}
|
||||||
|
.navSectionHead {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: x-small;
|
||||||
|
}
|
||||||
|
.section {
|
||||||
|
padding: 4px;
|
||||||
|
}
|
||||||
|
#footer {
|
||||||
|
padding: 3px 10px 3px 10px;
|
||||||
|
font-size: x-small;
|
||||||
|
}
|
||||||
|
#breadcrumbs {
|
||||||
|
font-size: x-small;
|
||||||
|
margin: 0pt;
|
||||||
|
}
|
||||||
|
.source {
|
||||||
|
padding: 12px;
|
||||||
|
margin: 1em 7px 1em 7px;
|
||||||
|
}
|
||||||
|
.source pre {
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
#navcolumn img.imageLink, .imageLink {
|
||||||
|
padding-left: 0px;
|
||||||
|
padding-bottom: 0px;
|
||||||
|
padding-top: 0px;
|
||||||
|
padding-right: 2px;
|
||||||
|
border: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
}
|
161
target/site/css/maven-theme.css
Normal file
|
@ -0,0 +1,161 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
body {
|
||||||
|
padding: 0px 0px 10px 0px;
|
||||||
|
}
|
||||||
|
body, td, select, input, li{
|
||||||
|
font-family: Verdana, Helvetica, Arial, sans-serif;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
code{
|
||||||
|
font-family: Courier, monospace;
|
||||||
|
font-size: 13px;
|
||||||
|
}
|
||||||
|
a {
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
a:link {
|
||||||
|
color:#36a;
|
||||||
|
}
|
||||||
|
a:visited {
|
||||||
|
color:#47a;
|
||||||
|
}
|
||||||
|
a:active, a:hover {
|
||||||
|
color:#69c;
|
||||||
|
}
|
||||||
|
#legend li.externalLink {
|
||||||
|
background: url(../images/external.png) left top no-repeat;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
a.externalLink, a.externalLink:link, a.externalLink:visited, a.externalLink:active, a.externalLink:hover {
|
||||||
|
background: url(../images/external.png) right center no-repeat;
|
||||||
|
padding-right: 18px;
|
||||||
|
}
|
||||||
|
#legend li.newWindow {
|
||||||
|
background: url(../images/newwindow.png) left top no-repeat;
|
||||||
|
padding-left: 18px;
|
||||||
|
}
|
||||||
|
a.newWindow, a.newWindow:link, a.newWindow:visited, a.newWindow:active, a.newWindow:hover {
|
||||||
|
background: url(../images/newwindow.png) right center no-repeat;
|
||||||
|
padding-right: 18px;
|
||||||
|
}
|
||||||
|
h2 {
|
||||||
|
padding: 4px 4px 4px 6px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
color: #900;
|
||||||
|
background-color: #ddd;
|
||||||
|
font-weight:900;
|
||||||
|
font-size: x-large;
|
||||||
|
}
|
||||||
|
h3 {
|
||||||
|
padding: 4px 4px 4px 6px;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
color: #900;
|
||||||
|
background-color: #eee;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: large;
|
||||||
|
}
|
||||||
|
h4 {
|
||||||
|
padding: 4px 4px 4px 6px;
|
||||||
|
border: 1px solid #bbb;
|
||||||
|
color: #900;
|
||||||
|
background-color: #fff;
|
||||||
|
font-weight: normal;
|
||||||
|
font-size: large;
|
||||||
|
}
|
||||||
|
h5 {
|
||||||
|
padding: 4px 4px 4px 6px;
|
||||||
|
color: #900;
|
||||||
|
font-size: medium;
|
||||||
|
}
|
||||||
|
p {
|
||||||
|
line-height: 1.3em;
|
||||||
|
font-size: small;
|
||||||
|
}
|
||||||
|
#breadcrumbs {
|
||||||
|
border-top: 1px solid #aaa;
|
||||||
|
border-bottom: 1px solid #aaa;
|
||||||
|
background-color: #ccc;
|
||||||
|
}
|
||||||
|
#leftColumn {
|
||||||
|
margin: 10px 0 0 5px;
|
||||||
|
border: 1px solid #999;
|
||||||
|
background-color: #eee;
|
||||||
|
padding-bottom: 3px; /* IE-9 scrollbar-fix */
|
||||||
|
}
|
||||||
|
#navcolumn h5 {
|
||||||
|
font-size: smaller;
|
||||||
|
border-bottom: 1px solid #aaaaaa;
|
||||||
|
padding-top: 2px;
|
||||||
|
color: #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.bodyTable th {
|
||||||
|
color: white;
|
||||||
|
background-color: #bbb;
|
||||||
|
text-align: left;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.bodyTable th, table.bodyTable td {
|
||||||
|
font-size: 1em;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.bodyTable tr.a {
|
||||||
|
background-color: #ddd;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.bodyTable tr.b {
|
||||||
|
background-color: #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
.source {
|
||||||
|
border: 1px solid #999;
|
||||||
|
}
|
||||||
|
dl {
|
||||||
|
padding: 4px 4px 4px 6px;
|
||||||
|
border: 1px solid #aaa;
|
||||||
|
background-color: #ffc;
|
||||||
|
}
|
||||||
|
dt {
|
||||||
|
color: #900;
|
||||||
|
}
|
||||||
|
#organizationLogo img, #projectLogo img, #projectLogo span{
|
||||||
|
margin: 8px;
|
||||||
|
}
|
||||||
|
#banner {
|
||||||
|
border-bottom: 1px solid #fff;
|
||||||
|
}
|
||||||
|
.errormark, .warningmark, .donemark, .infomark {
|
||||||
|
background: url(../images/icon_error_sml.gif) no-repeat;
|
||||||
|
}
|
||||||
|
|
||||||
|
.warningmark {
|
||||||
|
background-image: url(../images/icon_warning_sml.gif);
|
||||||
|
}
|
||||||
|
|
||||||
|
.donemark {
|
||||||
|
background-image: url(../images/icon_success_sml.gif);
|
||||||
|
}
|
||||||
|
|
||||||
|
.infomark {
|
||||||
|
background-image: url(../images/icon_info_sml.gif);
|
||||||
|
}
|
||||||
|
|
26
target/site/css/print.css
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
/*
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {
|
||||||
|
display: none !important;
|
||||||
|
}
|
||||||
|
#bodyColumn, body.docs div.docs {
|
||||||
|
margin: 0 !important;
|
||||||
|
border: none !important
|
||||||
|
}
|
1
target/site/css/site.css
Normal file
|
@ -0,0 +1 @@
|
||||||
|
/* You can override this file with your own styles */
|
208
target/site/dependencies.html
Normal file
|
@ -0,0 +1,208 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--
|
||||||
|
| Generated by Apache Maven Doxia Site Renderer 1.11.1 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.5.0:dependencies at 2024-02-07
|
||||||
|
|
||||||
|
| Rendered using Apache Maven Default Skin
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
|
||||||
|
<title>lab5 – Project Dependencies</title>
|
||||||
|
<link rel="stylesheet" href="./css/maven-base.css" />
|
||||||
|
<link rel="stylesheet" href="./css/maven-theme.css" />
|
||||||
|
<link rel="stylesheet" href="./css/site.css" />
|
||||||
|
<link rel="stylesheet" href="./css/print.css" media="print" />
|
||||||
|
</head>
|
||||||
|
<body class="composite">
|
||||||
|
<div id="banner">
|
||||||
|
<div id="bannerLeft">lab5
|
||||||
|
</div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="breadcrumbs">
|
||||||
|
<div class="xleft">
|
||||||
|
<span id="publishDate">Last Published: 2024-02-07</span>
|
||||||
|
| <span id="projectVersion">Version: 1.0-SNAPSHOT</span>
|
||||||
|
</div>
|
||||||
|
<div class="xright"><a href="${project.url}" title="lab5">lab5</a> </div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="leftColumn">
|
||||||
|
<div id="navcolumn">
|
||||||
|
<h5>Project Documentation</h5>
|
||||||
|
<ul>
|
||||||
|
<li class="expanded"><a href="project-info.html" title="Project Information">Project Information</a>
|
||||||
|
<ul>
|
||||||
|
<li class="none"><strong>Dependencies</strong></li>
|
||||||
|
<li class="none"><a href="dependency-info.html" title="Dependency Information">Dependency Information</a></li>
|
||||||
|
<li class="none"><a href="index.html" title="About">About</a></li>
|
||||||
|
<li class="none"><a href="plugin-management.html" title="Plugin Management">Plugin Management</a></li>
|
||||||
|
<li class="none"><a href="plugins.html" title="Plugins">Plugins</a></li>
|
||||||
|
<li class="none"><a href="summary.html" title="Summary">Summary</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
|
||||||
|
<img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="bodyColumn">
|
||||||
|
<div id="contentBox">
|
||||||
|
<a name="Project_Dependencies"></a><section>
|
||||||
|
<h2><a name="Project_Dependencies"></a>Project Dependencies</h2><a name="Project_Dependencies_compile"></a><section>
|
||||||
|
<h3><a name="compile"></a>compile</h3>
|
||||||
|
<p>The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:</p>
|
||||||
|
<table border="0" class="bodyTable">
|
||||||
|
<tr class="a">
|
||||||
|
<th>GroupId</th>
|
||||||
|
<th>ArtifactId</th>
|
||||||
|
<th>Version</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Licenses</th></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="left">javax.xml.bind</td>
|
||||||
|
<td><a class="externalLink" href="https://github.com/javaee/jaxb-spec/jaxb-api">jaxb-api</a></td>
|
||||||
|
<td>2.3.1</td>
|
||||||
|
<td>jar</td>
|
||||||
|
<td><a class="externalLink" href="https://oss.oracle.com/licenses/CDDL+GPL-1.1">CDDL 1.1</a><a class="externalLink" href="https://oss.oracle.com/licenses/CDDL+GPL-1.1">GPL2 w/ CPE</a></td></tr></table></section></section><a name="Project_Transitive_Dependencies"></a><section>
|
||||||
|
<h2><a name="Project_Transitive_Dependencies"></a>Project Transitive Dependencies</h2>
|
||||||
|
<p>The following is a list of transitive dependencies for this project. Transitive dependencies are the dependencies of the project dependencies.</p><a name="Project_Transitive_Dependencies_compile"></a><section>
|
||||||
|
<h3><a name="compile"></a>compile</h3>
|
||||||
|
<p>The following is a list of compile dependencies for this project. These dependencies are required to compile and run the application:</p>
|
||||||
|
<table border="0" class="bodyTable">
|
||||||
|
<tr class="a">
|
||||||
|
<th>GroupId</th>
|
||||||
|
<th>ArtifactId</th>
|
||||||
|
<th>Version</th>
|
||||||
|
<th>Type</th>
|
||||||
|
<th>Licenses</th></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="left">javax.activation</td>
|
||||||
|
<td><a class="externalLink" href="http://java.net/all/javax.activation-api/">javax.activation-api</a></td>
|
||||||
|
<td>1.2.0</td>
|
||||||
|
<td>jar</td>
|
||||||
|
<td><a class="externalLink" href="https://github.com/javaee/activation/blob/master/LICENSE.txt">CDDL/GPLv2+CE</a></td></tr></table></section></section><a name="Project_Dependency_Graph"></a><section>
|
||||||
|
<h2><a name="Project_Dependency_Graph"></a>Project Dependency Graph</h2><script type="text/javascript">
|
||||||
|
function toggleDependencyDetails( divId, imgId )
|
||||||
|
{
|
||||||
|
var div = document.getElementById( divId );
|
||||||
|
var img = document.getElementById( imgId );
|
||||||
|
if( div.style.display == '' )
|
||||||
|
{
|
||||||
|
div.style.display = 'none';
|
||||||
|
img.src='./images/icon_info_sml.gif';
|
||||||
|
img.alt='[Information]';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
div.style.display = '';
|
||||||
|
img.src='./images/close.gif';
|
||||||
|
img.alt='[Close]';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script><a name="Dependency_Tree"></a><section>
|
||||||
|
<h3><a name="Dependency_Tree"></a>Dependency Tree</h3>
|
||||||
|
<ul>
|
||||||
|
<li>ru.akarpov.lab5:lab5:jar:1.0-SNAPSHOT <img id="_img1" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep0', '_img1' );" style="cursor: pointer; vertical-align: text-bottom;" /><div id="_dep0" style="display:none">
|
||||||
|
<table border="0" class="bodyTable">
|
||||||
|
<tr class="a">
|
||||||
|
<th>lab5</th></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="left">
|
||||||
|
<p><b>Description: </b>There is currently no description associated with this project.</p>
|
||||||
|
<p><b>Project Licenses: </b>No licenses are defined for this project.</p></td></tr></table></div>
|
||||||
|
<ul>
|
||||||
|
<li>javax.xml.bind:jaxb-api:jar:2.3.1 (compile) <img id="_img3" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep2', '_img3' );" style="cursor: pointer; vertical-align: text-bottom;" /><div id="_dep2" style="display:none">
|
||||||
|
<table border="0" class="bodyTable">
|
||||||
|
<tr class="a">
|
||||||
|
<th>jaxb-api</th></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="left">
|
||||||
|
<p><b>Description: </b>JAXB (JSR 222) API</p>
|
||||||
|
<p><b>URL: </b><a class="externalLink" href="https://github.com/javaee/jaxb-spec/jaxb-api">https://github.com/javaee/jaxb-spec/jaxb-api</a></p>
|
||||||
|
<p><b>Project Licenses: </b><a class="externalLink" href="https://oss.oracle.com/licenses/CDDL+GPL-1.1">CDDL 1.1</a>, <a class="externalLink" href="https://oss.oracle.com/licenses/CDDL+GPL-1.1">GPL2 w/ CPE</a></p></td></tr></table></div>
|
||||||
|
<ul>
|
||||||
|
<li>javax.activation:javax.activation-api:jar:1.2.0 (compile) <img id="_img5" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep4', '_img5' );" style="cursor: pointer; vertical-align: text-bottom;" /><div id="_dep4" style="display:none">
|
||||||
|
<table border="0" class="bodyTable">
|
||||||
|
<tr class="a">
|
||||||
|
<th>JavaBeans Activation Framework API jar</th></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="left">
|
||||||
|
<p><b>Description: </b>JavaBeans Activation Framework API jar</p>
|
||||||
|
<p><b>URL: </b><a class="externalLink" href="http://java.net/all/javax.activation-api/">http://java.net/all/javax.activation-api/</a></p>
|
||||||
|
<p><b>Project Licenses: </b><a class="externalLink" href="https://github.com/javaee/activation/blob/master/LICENSE.txt">CDDL/GPLv2+CE</a></p></td></tr></table></div></li></ul></li></ul></li></ul></section></section><a name="Licenses"></a><section>
|
||||||
|
<h2><a name="Licenses"></a>Licenses</h2>
|
||||||
|
<p><b>CDDL/GPLv2+CE: </b>JavaBeans Activation Framework API jar</p>
|
||||||
|
<p><b>CDDL 1.1: </b>jaxb-api</p>
|
||||||
|
<p><b>Unknown: </b>lab5</p>
|
||||||
|
<p><b>GPL2 w/ CPE: </b>jaxb-api</p></section><a name="Dependency_File_Details"></a><section>
|
||||||
|
<h2><a name="Dependency_File_Details"></a>Dependency File Details</h2>
|
||||||
|
<table border="0" class="bodyTable">
|
||||||
|
<tr class="a">
|
||||||
|
<th>Filename</th>
|
||||||
|
<th>Size</th>
|
||||||
|
<th>Entries</th>
|
||||||
|
<th>Classes</th>
|
||||||
|
<th>Packages</th>
|
||||||
|
<th>Java Version</th>
|
||||||
|
<th title="Indicates whether these dependencies have been compiled with debug information.">Debug Information</th></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="left">javax.activation-api-1.2.0.jar</td>
|
||||||
|
<td align="right">56.7 kB</td>
|
||||||
|
<td align="right">41</td>
|
||||||
|
<td align="right">31</td>
|
||||||
|
<td align="right">1</td>
|
||||||
|
<td align="center">1.5</td>
|
||||||
|
<td align="center">Yes</td></tr>
|
||||||
|
<tr class="a">
|
||||||
|
<td align="left">jaxb-api-2.3.1.jar</td>
|
||||||
|
<td align="right">128.1 kB</td>
|
||||||
|
<td align="right">136</td>
|
||||||
|
<td align="right">111</td>
|
||||||
|
<td align="right">7</td>
|
||||||
|
<td align="center">9</td>
|
||||||
|
<td align="center">Yes</td></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<th>Total</th>
|
||||||
|
<th>Size</th>
|
||||||
|
<th>Entries</th>
|
||||||
|
<th>Classes</th>
|
||||||
|
<th>Packages</th>
|
||||||
|
<th>Java Version</th>
|
||||||
|
<th>Debug Information</th></tr>
|
||||||
|
<tr class="a">
|
||||||
|
<td align="right">2</td>
|
||||||
|
<td align="right">184.8 kB</td>
|
||||||
|
<td align="right">177</td>
|
||||||
|
<td align="right">142</td>
|
||||||
|
<td align="right">8</td>
|
||||||
|
<td align="center">9</td>
|
||||||
|
<td align="right">2</td></tr>
|
||||||
|
<tr class="b">
|
||||||
|
<td align="right">compile: 2</td>
|
||||||
|
<td align="right">compile: 184.8 kB</td>
|
||||||
|
<td align="right">compile: 177</td>
|
||||||
|
<td align="right">compile: 142</td>
|
||||||
|
<td align="right">compile: 8</td>
|
||||||
|
<td align="center">9</td>
|
||||||
|
<td align="right">compile: 2</td></tr></table></section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
<div class="xright">
|
||||||
|
Copyright © 2024.. </div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
98
target/site/dependency-info.html
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<!--
|
||||||
|
| Generated by Apache Maven Doxia Site Renderer 1.11.1 from org.apache.maven.plugins:maven-project-info-reports-plugin:3.5.0:dependency-info at 2024-02-07
|
||||||
|
|
||||||
|
| Rendered using Apache Maven Default Skin
|
||||||
|
-->
|
||||||
|
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<meta name="generator" content="Apache Maven Doxia Site Renderer 1.11.1" />
|
||||||
|
<title>lab5 – Dependency Information</title>
|
||||||
|
<link rel="stylesheet" href="./css/maven-base.css" />
|
||||||
|
<link rel="stylesheet" href="./css/maven-theme.css" />
|
||||||
|
<link rel="stylesheet" href="./css/site.css" />
|
||||||
|
<link rel="stylesheet" href="./css/print.css" media="print" />
|
||||||
|
</head>
|
||||||
|
<body class="composite">
|
||||||
|
<div id="banner">
|
||||||
|
<div id="bannerLeft">lab5
|
||||||
|
</div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="breadcrumbs">
|
||||||
|
<div class="xleft">
|
||||||
|
<span id="publishDate">Last Published: 2024-02-07</span>
|
||||||
|
| <span id="projectVersion">Version: 1.0-SNAPSHOT</span>
|
||||||
|
</div>
|
||||||
|
<div class="xright"><a href="${project.url}" title="lab5">lab5</a> </div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="leftColumn">
|
||||||
|
<div id="navcolumn">
|
||||||
|
<h5>Project Documentation</h5>
|
||||||
|
<ul>
|
||||||
|
<li class="expanded"><a href="project-info.html" title="Project Information">Project Information</a>
|
||||||
|
<ul>
|
||||||
|
<li class="none"><a href="dependencies.html" title="Dependencies">Dependencies</a></li>
|
||||||
|
<li class="none"><strong>Dependency Information</strong></li>
|
||||||
|
<li class="none"><a href="index.html" title="About">About</a></li>
|
||||||
|
<li class="none"><a href="plugin-management.html" title="Plugin Management">Plugin Management</a></li>
|
||||||
|
<li class="none"><a href="plugins.html" title="Plugins">Plugins</a></li>
|
||||||
|
<li class="none"><a href="summary.html" title="Summary">Summary</a></li>
|
||||||
|
</ul></li>
|
||||||
|
</ul>
|
||||||
|
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
|
||||||
|
<img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div id="bodyColumn">
|
||||||
|
<div id="contentBox">
|
||||||
|
<section>
|
||||||
|
<h2><a name="Dependency_Information"></a>Dependency Information</h2><a name="Dependency_Information"></a><section>
|
||||||
|
<h3><a name="Apache_Maven"></a>Apache Maven</h3><a name="Apache_Maven"></a>
|
||||||
|
<div>
|
||||||
|
<pre><dependency>
|
||||||
|
<groupId>ru.akarpov.lab5</groupId>
|
||||||
|
<artifactId>lab5</artifactId>
|
||||||
|
<version>1.0-SNAPSHOT</version>
|
||||||
|
</dependency></pre></div></section><section>
|
||||||
|
<h3><a name="Apache_Ivy"></a>Apache Ivy</h3><a name="Apache_Ivy"></a>
|
||||||
|
<div>
|
||||||
|
<pre><dependency org="ru.akarpov.lab5" name="lab5" rev="1.0-SNAPSHOT">
|
||||||
|
<artifact name="lab5" type="jar" />
|
||||||
|
</dependency></pre></div></section><section>
|
||||||
|
<h3><a name="Groovy_Grape"></a>Groovy Grape</h3><a name="Groovy_Grape"></a>
|
||||||
|
<div>
|
||||||
|
<pre>@Grapes(
|
||||||
|
@Grab(group='ru.akarpov.lab5', module='lab5', version='1.0-SNAPSHOT')
|
||||||
|
)</pre></div></section><section>
|
||||||
|
<h3><a name="Gradle.2FGrails"></a>Gradle/Grails</h3><a name="Gradle.2FGrails"></a>
|
||||||
|
<div>
|
||||||
|
<pre>implementation 'ru.akarpov.lab5:lab5:1.0-SNAPSHOT'</pre></div></section><section>
|
||||||
|
<h3><a name="Scala_SBT"></a>Scala SBT</h3><a name="Scala_SBT"></a>
|
||||||
|
<div>
|
||||||
|
<pre>libraryDependencies += "ru.akarpov.lab5" % "lab5" % "1.0-SNAPSHOT"</pre></div></section><section>
|
||||||
|
<h3><a name="Leiningen"></a>Leiningen</h3><a name="Leiningen"></a>
|
||||||
|
<div>
|
||||||
|
<pre>[ru.akarpov.lab5/lab5 "1.0-SNAPSHOT"]</pre></div></section></section>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
<div id="footer">
|
||||||
|
<div class="xright">
|
||||||
|
Copyright © 2024.. </div>
|
||||||
|
<div class="clear">
|
||||||
|
<hr/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
BIN
target/site/images/close.gif
Normal file
After Width: | Height: | Size: 279 B |
BIN
target/site/images/collapsed.gif
Normal file
After Width: | Height: | Size: 53 B |
BIN
target/site/images/expanded.gif
Normal file
After Width: | Height: | Size: 52 B |
BIN
target/site/images/external.png
Normal file
After Width: | Height: | Size: 230 B |
BIN
target/site/images/icon_error_sml.gif
Normal file
After Width: | Height: | Size: 1010 B |
BIN
target/site/images/icon_info_sml.gif
Normal file
After Width: | Height: | Size: 606 B |
BIN
target/site/images/icon_success_sml.gif
Normal file
After Width: | Height: | Size: 990 B |
BIN
target/site/images/icon_warning_sml.gif
Normal file
After Width: | Height: | Size: 576 B |