Skip to content

Commit 07fe7a9

Browse files
committed
It is a start 🤷‍♂️
1 parent 0264f11 commit 07fe7a9

15 files changed

+329
-305
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,4 @@ local.properties
6363

6464
# Code Recommenders
6565
.recommenders/
66+
frontend/generated

pom.xml

+68-88
Original file line numberDiff line numberDiff line change
@@ -1,101 +1,84 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<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">
2+
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
34
<modelVersion>4.0.0</modelVersion>
4-
<groupId>org.vaadin</groupId>
5-
<artifactId>spatial-spring-boot-app</artifactId>
6-
<version>0.0.1-SNAPSHOT</version>
7-
<packaging>jar</packaging>
8-
<name>spatial-spring-boot-app</name>
9-
<description>Demo project for Spring Boot, Hibernate Spatial extensions, Vaadin and V-Leaflet</description>
105
<parent>
116
<groupId>org.springframework.boot</groupId>
127
<artifactId>spring-boot-starter-parent</artifactId>
13-
<version>2.1.2.RELEASE</version>
14-
<relativePath/>
15-
<!-- lookup parent from repository -->
8+
<version>3.2.3</version>
9+
<relativePath/> <!-- lookup parent from repository -->
1610
</parent>
11+
<groupId>org.vaadin</groupId>
12+
<artifactId>spatial-spring-boot-app</artifactId>
13+
<version>0.0.1-SNAPSHOT</version>
14+
<name>spatial-spring-boot-app</name>
15+
<description>Spatial example</description>
1716
<properties>
18-
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
19-
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
20-
<java.version>1.8</java.version>
21-
<vaadin.version>8.7.0</vaadin.version>
22-
<vaadin.widgetset.mode>local</vaadin.widgetset.mode>
23-
<hibernate.version>5.4.1.Final</hibernate.version>
17+
<java.version>17</java.version>
18+
<vaadin.version>24.3.5</vaadin.version>
2419
</properties>
2520
<dependencies>
2621
<dependency>
2722
<groupId>org.springframework.boot</groupId>
2823
<artifactId>spring-boot-starter-data-jpa</artifactId>
29-
<exclusions>
30-
<exclusion>
31-
<groupId>ch.qos.logback</groupId>
32-
<artifactId>logback-classic</artifactId>
33-
</exclusion>
34-
</exclusions>
3524
</dependency>
25+
3626
<dependency>
37-
<groupId>org.hibernate</groupId>
27+
<groupId>org.hibernate.orm</groupId>
3828
<artifactId>hibernate-spatial</artifactId>
3929
</dependency>
30+
31+
<dependency>
32+
<groupId>org.springframework.boot</groupId>
33+
<artifactId>spring-boot-starter-validation</artifactId>
34+
</dependency>
4035
<dependency>
4136
<groupId>com.vaadin</groupId>
4237
<artifactId>vaadin-spring-boot-starter</artifactId>
4338
</dependency>
39+
4440
<dependency>
45-
<groupId>org.springframework.boot</groupId>
46-
<artifactId>spring-boot-starter-validation</artifactId>
41+
<groupId>org.parttio</groupId>
42+
<artifactId>maplibre</artifactId>
43+
<version>0.0.4-SNAPSHOT</version>
4744
</dependency>
45+
4846
<dependency>
49-
<groupId>org.springframework.boot</groupId>
50-
<artifactId>spring-boot-devtools</artifactId>
51-
<scope>runtime</scope>
52-
<optional>true</optional>
47+
<groupId>in.virit</groupId>
48+
<artifactId>viritin</artifactId>
49+
<version>2.7.3</version>
5350
</dependency>
54-
51+
5552
<dependency>
56-
<groupId>org.opengeo</groupId>
57-
<artifactId>geodb</artifactId>
58-
<version>0.9</version>
53+
<groupId>com.mysql</groupId>
54+
<artifactId>mysql-connector-j</artifactId>
5955
<scope>runtime</scope>
60-
<exclusions>
61-
<!-- Use the newer version coming from Hibernate spatial -->
62-
<exclusion>
63-
<groupId>org.locationtech.jts</groupId>
64-
<artifactId>jts-core</artifactId>
65-
</exclusion>
66-
</exclusions>
6756
</dependency>
68-
69-
<!-- <dependency>
70-
<groupId>mysql</groupId>
71-
<artifactId>mysql-connector-java</artifactId>
72-
<scope>runtime</scope>
73-
</dependency>-->
74-
7557
<dependency>
7658
<groupId>org.springframework.boot</groupId>
7759
<artifactId>spring-boot-starter-test</artifactId>
7860
<scope>test</scope>
7961
</dependency>
8062
<dependency>
8163
<groupId>org.springframework.boot</groupId>
82-
<artifactId>spring-boot-configuration-processor</artifactId>
83-
<optional>true</optional>
64+
<artifactId>spring-boot-testcontainers</artifactId>
65+
<scope>test</scope>
8466
</dependency>
8567
<dependency>
86-
<groupId>org.vaadin</groupId>
87-
<artifactId>viritin</artifactId>
88-
<version>2.8</version>
89-
<type>jar</type>
68+
<groupId>org.testcontainers</groupId>
69+
<artifactId>junit-jupiter</artifactId>
70+
<scope>test</scope>
9071
</dependency>
9172
<dependency>
92-
<groupId>com.vaadin</groupId>
93-
<artifactId>vaadin-context-menu</artifactId>
73+
<groupId>org.testcontainers</groupId>
74+
<artifactId>mysql</artifactId>
75+
<scope>test</scope>
9476
</dependency>
9577
<dependency>
96-
<groupId>org.vaadin.addon</groupId>
97-
<artifactId>v-leaflet-editable</artifactId>
98-
<version>3.0.0</version>
78+
<groupId>org.springframework.boot</groupId>
79+
<artifactId>spring-boot-devtools</artifactId>
80+
<version>3.2.2</version>
81+
<scope>test</scope>
9982
</dependency>
10083
</dependencies>
10184
<dependencyManagement>
@@ -109,42 +92,39 @@
10992
</dependency>
11093
</dependencies>
11194
</dependencyManagement>
95+
11296
<build>
11397
<plugins>
11498
<plugin>
11599
<groupId>org.springframework.boot</groupId>
116100
<artifactId>spring-boot-maven-plugin</artifactId>
117101
</plugin>
118-
<plugin>
119-
<groupId>com.vaadin</groupId>
120-
<artifactId>vaadin-maven-plugin</artifactId>
121-
<version>${vaadin.version}</version>
122-
<executions>
123-
<execution>
124-
<goals>
125-
<goal>update-widgetset</goal>
126-
<goal>compile</goal>
127-
</goals>
128-
</execution>
129-
</executions>
130-
</plugin>
131102
</plugins>
132103
</build>
133-
<repositories>
134-
<repository>
135-
<!-- Needed for geodb -->
136-
<id>boundless</id>
137-
<url>http://repo.boundlessgeo.com/main/</url>
138-
</repository>
139-
<repository>
140-
<id>vaadin-addons</id>
141-
<url>http://maven.vaadin.com/vaadin-addons</url>
142-
</repository>
143-
<repository>
144-
<!-- Needed for geotools -->
145-
<id>osgeo</id>
146-
<name>Open Source Geospatial Foundation Repository</name>
147-
<url>http://download.osgeo.org/webdav/geotools/</url>
148-
</repository>
149-
</repositories>
104+
105+
<profiles>
106+
<profile>
107+
<id>production</id>
108+
<build>
109+
<plugins>
110+
<plugin>
111+
<groupId>com.vaadin</groupId>
112+
<artifactId>vaadin-maven-plugin</artifactId>
113+
<version>${vaadin.version}</version>
114+
<executions>
115+
<execution>
116+
<id>frontend</id>
117+
<phase>compile</phase>
118+
<goals>
119+
<goal>prepare-frontend</goal>
120+
<goal>build-frontend</goal>
121+
</goals>
122+
</execution>
123+
</executions>
124+
</plugin>
125+
</plugins>
126+
</build>
127+
</profile>
128+
</profiles>
129+
150130
</project>

src/main/java/org/vaadin/example/AbstractEntity.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@
22

33
import java.io.Serializable;
44
import java.util.Objects;
5-
import javax.persistence.GeneratedValue;
6-
import javax.persistence.GenerationType;
7-
import javax.persistence.Id;
8-
import javax.persistence.MappedSuperclass;
9-
import javax.persistence.Version;
5+
import jakarta.persistence.GeneratedValue;
6+
import jakarta.persistence.GenerationType;
7+
import jakarta.persistence.Id;
8+
import jakarta.persistence.MappedSuperclass;
9+
import jakarta.persistence.Version;
1010

1111
/**
1212
*
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package org.vaadin.example;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
/**
7+
* This would be the main app for deployment artifact.
8+
* For deployment, you need to configure DB.
9+
* For local testing & development, use TestApp that
10+
* launches MySQL with TestContainers.
11+
*/
12+
@SpringBootApplication
13+
public class Application {
14+
15+
public static void main(String[] args) {
16+
SpringApplication.run(Application.class, args);
17+
}
18+
}

src/main/java/org/vaadin/example/EventEditor.java

+21-20
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,27 @@
11
package org.vaadin.example;
22

3-
import com.vaadin.data.converter.LocalDateToDateConverter;
4-
import org.vaadin.addon.leaflet.util.PointField;
5-
6-
import com.vaadin.ui.Component;
7-
import com.vaadin.ui.DateField;
8-
import com.vaadin.ui.TextField;
9-
import com.vaadin.ui.Window;
10-
import org.vaadin.addon.leaflet.editable.LineStringField;
11-
import org.vaadin.viritin.fields.MTextField;
12-
import org.vaadin.viritin.form.AbstractForm;
13-
import org.vaadin.viritin.layouts.MVerticalLayout;
14-
15-
public class EventEditor extends AbstractForm<SpatialEvent> {
16-
17-
private TextField title = new MTextField("Title");
18-
private DateField date = new DateField("Date");
3+
4+
import com.vaadin.flow.component.Component;
5+
import com.vaadin.flow.component.datepicker.DatePicker;
6+
import com.vaadin.flow.component.textfield.TextField;
7+
import com.vaadin.flow.data.converter.LocalDateToDateConverter;
8+
import org.vaadin.addons.maplibre.LineStringField;
9+
import org.vaadin.addons.maplibre.PointField;
10+
import org.vaadin.firitin.components.dialog.VDialog;
11+
import org.vaadin.firitin.components.orderedlayout.VVerticalLayout;
12+
import org.vaadin.firitin.components.textfield.VTextField;
13+
import org.vaadin.firitin.form.AbstractForm;
14+
15+
public class EventEditor extends AbstractForm<SportEvent> {
16+
17+
private TextField title = new VTextField("Title");
18+
private DatePicker date = new DatePicker("Date");
19+
// TODO fix the constructor parameter to be "field like"
1920
private PointField location = new PointField("Location");
2021
private LineStringField route = new LineStringField("Route");
2122

2223
public EventEditor() {
23-
super(SpatialEvent.class);
24+
super(SportEvent.class);
2425
}
2526

2627
@Override
@@ -29,12 +30,12 @@ protected Component createContent() {
2930
location.setWidth("100%");
3031
route.setHeight("200px");
3132
route.setWidth("100%");
32-
return new MVerticalLayout(title, date, location, route, getToolbar());
33+
return new VVerticalLayout(title, date, location, route, getToolbar());
3334
}
3435

3536
@Override
36-
public Window openInModalPopup() {
37-
Window w = super.openInModalPopup();
37+
public VDialog openInModalPopup() {
38+
var w = super.openInModalPopup();
3839
w.setHeight("95%");
3940
w.setWidth("70%");
4041
return w;
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,48 @@
11
package org.vaadin.example;
22

3-
import com.vaadin.data.HasValue;
4-
import com.vaadin.data.HasValue.ValueChangeListener;
5-
import com.vaadin.shared.ui.ValueChangeMode;
6-
import org.vaadin.viritin.fields.MCheckBox;
7-
import org.vaadin.viritin.fields.MTextField;
8-
import org.vaadin.viritin.layouts.MHorizontalLayout;
9-
10-
import com.vaadin.ui.CustomComponent;
3+
import com.vaadin.flow.component.orderedlayout.VerticalLayout;
114

125
@SuppressWarnings("serial")
13-
public class FilterPanel extends CustomComponent implements ValueChangeListener {
6+
public class FilterPanel extends VerticalLayout {
7+
8+
149

1510
@FunctionalInterface
1611
public static interface FilterPanelObserver {
1712

1813
void onFilterChange();
1914
}
2015

21-
private MCheckBox onlyOnMap = new MCheckBox("Only events in current viewport").withValue(true)
22-
.withValueChangeListener(this);
23-
private MTextField title = new MTextField()
24-
.withPlaceholder("Filter by title")
25-
.withValueChangeMode(ValueChangeMode.LAZY)
26-
.withValueChangeListener(this);
27-
private FilterPanelObserver observer = null;
16+
// private MCheckBox onlyOnMap = new MCheckBox("Only events in current viewport").withValue(true)
17+
// .withValueChangeListener(this);
18+
// private MTextField title = new MTextField()
19+
// .withPlaceholder("Filter by title")
20+
// .withValueChangeMode(ValueChangeMode.LAZY)
21+
// .withValueChangeListener(this);
22+
// private FilterPanelObserver observer = null;
2823

2924
public FilterPanel() {
30-
setCompositionRoot(new MHorizontalLayout(onlyOnMap, title));
25+
add("TODO");
26+
//setCompositionRoot(new MHorizontalLayout(onlyOnMap, title));
3127
}
3228

3329
public boolean isOnlyOnMap() {
34-
return onlyOnMap.getValue();
30+
return true;
31+
// return onlyOnMap.getValue();
3532
}
3633

3734
public String getTitle() {
38-
return title.getValue();
39-
}
40-
41-
public void setObserver(FilterPanelObserver observer) {
42-
this.observer = observer;
43-
}
44-
45-
@Override
46-
public void valueChange(HasValue.ValueChangeEvent event) {
47-
observer.onFilterChange();
35+
return "";
36+
// return title.getValue();
4837
}
38+
//
39+
// public void setObserver(FilterPanelObserver observer) {
40+
// this.observer = observer;
41+
// }
42+
//
43+
// @Override
44+
// public void valueChange(HasValue.ValueChangeEvent event) {
45+
// observer.onFilterChange();
46+
// }
4947

5048
}

0 commit comments

Comments
 (0)