Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions server/.idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions server/.idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions server/docker/jsp-Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@ COPY pom.xml mvnw ./
COPY .mvn .mvn

# copy source code
COPY src src
COPY validator-api validator-api
COPY server server
RUN ./mvnw clean package

FROM quay.io/wildfly/wildfly:latest-jdk17
WORKDIR server
COPY --from=build ./target/server-1.0.war /opt/jboss/wildfly/standalone/deployments/ROOT.war
COPY --from=build ./server/target/server-1.0.war /opt/jboss/wildfly/standalone/deployments/ROOT.war
35 changes: 6 additions & 29 deletions server/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,41 +5,18 @@
<modelVersion>4.0.0</modelVersion>

<groupId>org.web2</groupId>
<artifactId>server</artifactId>
<artifactId>web2</artifactId>
<version>1.0</version>
<packaging>war</packaging>
<packaging>pom</packaging>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.1.0</version>
<scope>provided</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.42</version>
</dependency>
</dependencies>

<build>
<plugins>
<!-- Plugin for WAR build -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
</plugin>
</plugins>
</build>
<modules>
<module>validator-api</module>
<module>server</module>
</modules>
</project>
61 changes: 61 additions & 0 deletions server/server/pom.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<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>org.web2</groupId>
<artifactId>server</artifactId>
<version>1.0</version>
<packaging>war</packaging>

<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>

<dependencies>
<!-- https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api -->
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.1.0</version>
<scope>provided</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.42</version>
</dependency>

<dependency>
<groupId>org.web2</groupId>
<artifactId>validator-api</artifactId>
<version>1.0</version>
</dependency>
</dependencies>

<build>
<sourceDirectory>src</sourceDirectory>
<resources>
<resource>
<directory>resources</directory>
</resource>
</resources>

<plugins>
<!-- Plugin for WAR build -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>3.4.0</version>
<configuration>
<warSourceDirectory>webapp</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.web2.controllers.services;


import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
Expand All @@ -13,8 +12,8 @@
import org.web2.model.ResultBean;

import java.io.IOException;
import java.util.ArrayDeque;
import java.util.Date;
import java.util.ArrayList;

@WebServlet("/check")
public class AreaCheckServlet extends HttpServlet {
Expand All @@ -33,7 +32,7 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se
req.getParameter("R")
);

boolean hit = checker.test(
boolean hit = checker.check(
Float.parseFloat(requestData.X()),
Float.parseFloat(requestData.Y()),
Integer.parseInt(requestData.R())
Expand All @@ -50,12 +49,12 @@ protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws Se

HttpSession session = req.getSession();
@SuppressWarnings("unchecked")
ArrayList<ResultBean> results = (ArrayList<ResultBean>) session.getAttribute("results");
ArrayDeque<ResultBean> results = (ArrayDeque<ResultBean>) session.getAttribute("results");
if (results == null) {
results = new ArrayList<>();
results = new ArrayDeque<>();
}

results.add(newResult);
results.addFirst(newResult);
session.setAttribute("results", results);
session.setAttribute("lastResult", newResult);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@
import org.web2.controllers.services.checkers.utils.PlotUtils;

public class Checker implements CheckerFunction{
public boolean test(final float x, final float y, final int r) {
public boolean check(
final float x,
final float y,
final int r
) {
final PlotQuarters quarter = PlotUtils.getQuarter(x, y);

if (quarter == PlotQuarters.FIRST_QUADRANT) return firstQuarterTester(x, y, r);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

@FunctionalInterface
public interface CheckerFunction {
boolean test(float x, float y, int r);
boolean check(float x, float y, int r);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package org.web2.controllers.services.checkers.utils;

public class PlotUtils {
public static PlotQuarters getQuarter(final float x, final float y) {
boolean xSign = x >= 0;
boolean ySign = y >= 0;

if (xSign && ySign) return PlotQuarters.FIRST_QUADRANT;
else if (xSign && !ySign) return PlotQuarters.SECOND_QUADRANT; // читабельность важнее
else if (!xSign && !ySign) return PlotQuarters.THIRD_QUADRANT; // читабельность важнее
return PlotQuarters.FOURTH_QUADRANT;
}
}
39 changes: 25 additions & 14 deletions server/src/main/webapp/index.jsp → server/server/webapp/index.jsp
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
<%@ page contentType="text/html;charset=UTF-8" %>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="u" uri="utils" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>

<!DOCTYPE html>
Expand All @@ -18,9 +17,8 @@
<link rel="stylesheet" type="text/css" href="assets/css/error.css">
<link rel="stylesheet" type="text/css" href="assets/css/history.css">

<script src="./js/plot.js"></script>
<script src="./js/error.js"></script>
<script src="./js/form.js"></script>
<script src="js/plot.js"></script>
<script src="js/common/error.js"></script>
</head>
<body>
<div class="container">
Expand Down Expand Up @@ -171,7 +169,7 @@
<tbody id="historyTableBody">
<c:choose>
<c:when test="${not empty results}">
<c:forEach var="res" items="${u:reverse(results)}">
<c:forEach var="res" items="${results}">
<tr>
<td><fmt:formatDate type="both" value="${ res.time }"/></td>
<td>${ res.elapsedTimeNs } ns</td>
Expand Down Expand Up @@ -200,10 +198,10 @@

<script>
const error = new ErrorFactory("error-message");
const form = new Form("graph-test-form")


// Setting the coordinates of points on plot when page loaded
document.addEventListener("DOMContentLoaded", () => {
const circles = document.getElementById("graph-svg").querySelectorAll("circle").forEach(c => {
document.getElementById("graph-svg").querySelectorAll("circle").forEach(c => {
const x = parseFloat(c.dataset.x);
const y = parseFloat(c.dataset.y);
const r = parseFloat(c.dataset.r);
Expand All @@ -218,9 +216,9 @@

const checkIfFormContainsAllValues = (X,Y,R) => {
return new Promise((resolve, reject) => {
if (isNaN(X)) reject("X отсутствует или имеет неврный формат")
if (isNaN(Y)) reject("Y отсутствует или имеет неврный формат")
if (isNaN(R)) reject("R отсутствует или имеет неврный формат")
if (isNaN(X)) reject("X отсутствует или имеет неверный формат")
if (isNaN(Y)) reject("Y отсутствует или имеет неверный формат")
if (isNaN(R)) reject("R отсутствует или имеет неверный формат")

resolve([X,Y,R]);
})
Expand All @@ -241,7 +239,6 @@

const handleSubmit = (event) => {
event.preventDefault();

const formElem = document.forms["graph-test-form"];

const X = Number(formElem["X"].value);
Expand All @@ -258,10 +255,24 @@
}

const handleSvgClick = (event) => {
handlePlotClick(event).then(
const formElem = document.forms["graph-test-form"];

handlePlotClick(
event,
document.forms["graph-test-form"]["R"].value,
document.getElementById("graph-svg")
).then(
result => {
validateCords(...result).then(
result => form.send(...result),
result => {
const [X,Y,R] = result;

formElem["X"].value = X.toFixed(2);
formElem["Y"].value = Y;
formElem["R"].value = R;

formElem.submit()
},
errorMsg => error.showError(errorMsg)
)
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,10 @@ class ErrorFactory {
showError(message, showTimeMs = 5000){
this.#clearErrors();

// Слздаём элемент
const errorDiv = document.createElement('div');
errorDiv.className = this.#errorBlockClassName;
errorDiv.textContent = message;

// Вставка
document.body.appendChild(errorDiv);

// Убираем по прошествии времени
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,22 +38,19 @@ const findNearest = (target, elemsArray) => {
return closest;
}

// Кликоуловтель 2.1
const handlePlotClick = (event) => {
// Кликоуловтель 2.2
const handlePlotClick = (event, RValue, plotElem) => {
return new Promise((resolve, reject) => {
const R = document.getElementById("graph-test-form")["R"].value;
if (isNaN(RValue)) reject("Сначала выберите радиус R");

if (!R) reject("Сначала выберите радиус R");
const rect = plotElem.getBoundingClientRect();

const plot = document.getElementById("graph-svg");
const rect = plot.getBoundingClientRect();

const [X,Y,] = convertSvgCordsToCheckerCords(
const [X,Y,R] = convertSvgCordsToCheckerCords(
event.clientX, event.clientY,
rect.width/2, rect.height/2,
rect.left, rect.top,
80,
R
RValue
)

resolve(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,6 @@
<link rel="stylesheet" type="text/css" href="assets/css/main.css">
<link rel="stylesheet" type="text/css" href="assets/css/error.css">
<link rel="stylesheet" type="text/css" href="assets/css/history.css">

<script src="./js/error.js"></script>
</head>
<body>
<!-- Config section -->
Expand Down
Loading