Skip to content
Snippets Groups Projects
Verified Commit 20b97507 authored by Jan Kožusznik's avatar Jan Kožusznik
Browse files

Extract server

parent fd4a3330
No related merge requests found
Pipeline #98 failed with stages
in 0 seconds
......@@ -5,22 +5,21 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<modelVersion>4.0.0</modelVersion>
<groupId>java2-koz01</groupId>
<artifactId>lab12</artifactId>
<artifactId>rest-server</artifactId>
<version>1.0.0-SNAPSHOT</version>
<properties>
<compiler-plugin.version>3.8.1</compiler-plugin.version>
<compiler-plugin.version>3.11.0</compiler-plugin.version>
<maven.compiler.parameters>true</maven.compiler.parameters>
<maven.compiler.source>14</maven.compiler.source>
<maven.compiler.target>14</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<quarkus-plugin.version>1.13.2.Final</quarkus-plugin.version>
<quarkus.platform.artifact-id>quarkus-bom</quarkus.platform.artifact-id>
<quarkus.platform.group-id>io.quarkus.platform</quarkus.platform.group-id>
<quarkus.platform.version>2.8.0.Final</quarkus.platform.version>
<surefire-plugin.version>3.0.0-M5</surefire-plugin.version>
<lombok.version>1.18.24</lombok.version>
<log4j.version>2.17.2</log4j.version>
<quarkus.platform.version>2.16.5.Final</quarkus.platform.version>
<surefire-plugin.version>3.0.0</surefire-plugin.version>
<lombok.version>1.18.26</lombok.version>
<log4j.version>2.20.0</log4j.version>
</properties>
<dependencyManagement>
<dependencies>
......@@ -37,12 +36,12 @@
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>14</version>
<version>17.0.2</version>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>14</version>
<version>17.0.2</version>
</dependency>
<dependency>
......@@ -88,12 +87,7 @@
<artifactId>quarkus-config-yaml</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/io.quarkus/quarkus-jackson -->
<!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.jaxrs/jackson-jaxrs-json-provider -->
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
......@@ -111,12 +105,8 @@
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-rs-client -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-rs-client</artifactId>
<version>3.5.2</version>
</dependency>
</dependencies>
<build>
<plugins>
......
package java2.lab12.client;
public class AppJavaFX {
public static void main(String[] args) {
TableViewSample.main(args);
}
}
package java2.lab12.client;
import javax.xml.bind.annotation.XmlRootElement;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@XmlRootElement
@ToString
public class Course {
@Setter
@Getter
private Long id;
@Getter
@Setter
private String name;
@Getter
@Setter
private String description;
@Getter
@Setter
private String credits;
@Getter
@Setter
private String semester;
}
package java2.lab12.client;
import java.util.Collection;
import java.util.Collections;
import javafx.application.Application;
import javafx.beans.property.ReadOnlyObjectWrapper;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TableCell;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableColumn.CellEditEvent;
import javafx.scene.control.TableView;
import javafx.scene.control.TextField;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.stage.Stage;
import javafx.stage.WindowEvent;
public class TableViewSample extends Application {
private TableView<Course> table = new TableView<>();
private final ObservableList<Course> data;
final HBox hb = new HBox();
private TextField addName;
private TextField addDescription;
private TextField addCredits;
private TextField addSemester;
public static void main(String[] args) {
launch(args);
}
public TableViewSample() {
data = FXCollections.observableArrayList(getCourses());
}
@SuppressWarnings("unchecked")
@Override
public void start(Stage stage) {
Scene scene = new Scene(new Group());
stage.setTitle("RESTfull Webservice - Course Book");
stage.setWidth(500);
stage.setHeight(550);
final Label label = new Label("Course Book");
label.setFont(new Font("Arial", 20));
table.setEditable(true);
table.setItems(data);
TableColumn<Course, String> nameCol = constructColumn("Name",
"name", this::handleOnEditCommitName);
TableColumn<Course, String> desriptionCol = constructColumn("Description",
"description", this::handleOnEditCommitDescription);
TableColumn<Course, String> creditsCol = constructColumn("Credits",
"credits", this::handleOnEditCommitCredits);
TableColumn<Course, String> semesterCol = constructColumn("Semester",
"semester", this::handleOnEditCommitSemester);
TableColumn<Course, Course> actionCol = new TableColumn<>("");
actionCol.setCellValueFactory(param -> new ReadOnlyObjectWrapper<>(
param.getValue()));
actionCol.setCellFactory(param -> new TableCell<>() {
private final Button deleteButton = new Button("Delete");
@Override
protected void updateItem(Course course, boolean empty) {
super.updateItem(course, empty);
if (course == null) {
setGraphic(null);
return;
}
setGraphic(deleteButton);
deleteButton.setOnAction(event -> handleOnDelete(event, course));
}
});
table.getColumns().addAll(nameCol, desriptionCol, creditsCol,
semesterCol, actionCol);
addName = constructTextField(nameCol, "Name");
addDescription = constructTextField(desriptionCol, "Description");
addCredits = constructTextField(creditsCol, "Credits");
addSemester = constructTextField(creditsCol, "Semester");
final Button addButton = new Button("Add");
addButton.setOnAction(this::handleOnAdd);
hb.getChildren().addAll(addName, addDescription, addCredits,
addSemester, addButton);
hb.setSpacing(3);
final VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setPadding(new Insets(10, 0, 0, 10));
vbox.getChildren().addAll(label, table, hb);
((Group) scene.getRoot()).getChildren().addAll(vbox);
stage.setScene(scene);
stage.show();
stage.setOnCloseRequest(this::exitProgram);
}
private TextField constructTextField(TableColumn<Course, String> column,
String string)
{
TextField result = new TextField();
result.setPromptText(string);
result.setMaxWidth(column.getPrefWidth());
return result;
}
private TableColumn<Course, String> constructColumn(String name,
String propertyName, EventHandler<CellEditEvent<Course, String>> callback)
{
TableColumn<Course, String> col = new TableColumn<>(name);
col.setMinWidth(100);
col.setCellValueFactory(new PropertyValueFactory<>(propertyName));
col.setCellFactory(TextFieldTableCell.forTableColumn());
col.setOnEditCommit(callback);
return col;
}
private void handleOnAdd(@SuppressWarnings("unused") ActionEvent e) {
Course p = new Course();
p.setName(addName.getText());
p.setDescription(addDescription.getText());
p.setCredits(addCredits.getText());
p.setSemester(addSemester.getText());
data.add(p);
createCourse(p);
addName.clear();
addDescription.clear();
addCredits.clear();
addSemester.clear();
}
private void handleOnDelete(@SuppressWarnings("unused") ActionEvent event,
Course course)
{
data.remove(course);
removeCourse(course);
}
private void handleOnEditCommitName(CellEditEvent<Course, String> t) {
Course p = t.getTableView().getItems().get(t.getTablePosition().getRow());
p.setName(t.getNewValue());
updateCourse(p);
}
private void handleOnEditCommitDescription(CellEditEvent<Course, String> t) {
Course p = t.getTableView().getItems().get(t.getTablePosition().getRow());
p.setDescription(t.getNewValue());
updateCourse(p);
}
private void handleOnEditCommitCredits(CellEditEvent<Course, String> t) {
Course p = t.getTableView().getItems().get(t.getTablePosition().getRow());
p.setCredits(t.getNewValue());
updateCourse(p);
}
private void handleOnEditCommitSemester(CellEditEvent<Course, String> t) {
Course p = t.getTableView().getItems().get(t.getTablePosition().getRow());
p.setSemester(t.getNewValue());
updateCourse(p);
}
private void exitProgram(WindowEvent evt) {
System.exit(0);
}
private Collection<Course> getCourses() {
return Collections.emptyList();
}
private void createCourse(Course course) {
// TODO
}
private void updateCourse(Course course) {
// TODO
}
private void removeCourse(Course course) {
// TODO
}
}
\ No newline at end of file
......@@ -5,7 +5,7 @@ quarkus:
datasource:
db-kind: h2
jdbc:
url: jdbc:h2:./output/myDb;create=true
url: jdbc:h2:./output/myDb
hibernate-orm:
log:
sql: true
......
<Configuration>
<Appenders>
<File name="File" fileName="lab11.log">
<File name="File" fileName="output/rest-server.log">
<PatternLayout
pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
</File>
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment