Browse Source

fixed bugs with coords:

argument order is now [lat, lon] everywhere

Signed-off-by: Stephan Richter <s.richter@srsoftware.de>
main
Stephan Richter 4 months ago
parent
commit
d9e5475962
  1. 11
      de.srsoftware.cal.api/src/main/java/de/srsoftware/cal/api/Coords.java
  2. 3
      de.srsoftware.cal.app/src/main/java/de/srsoftware/cal/app/Application.java
  3. 2
      de.srsoftware.cal.base/src/main/java/de/srsoftware/cal/Util.java
  4. 11
      de.srsoftware.cal.db/src/main/java/de/srsoftware/cal/db/MariaDB.java
  5. 7
      de.srsoftware.cal.importer/src/main/java/de/srsoftware/cal/importer/jena/Kassablanca.java
  6. 8
      de.srsoftware.cal.importer/src/main/java/de/srsoftware/cal/importer/jena/Rosenkeller.java

11
de.srsoftware.cal.api/src/main/java/de/srsoftware/cal/api/Coords.java

@ -6,10 +6,10 @@ import org.json.JSONObject; @@ -6,10 +6,10 @@ import org.json.JSONObject;
/**
* cartesian coords
* @param longitude the longitude
* @param latitude the latitude
* @param longitude the longitude
*/
public record Coords(double longitude, double latitude) {
public record Coords(double latitude,double longitude) {
/**
* get a string representing this coords in the ICAL format, see <a href="https://datatracker.ietf.org/doc/html/rfc5545#section-3.8.1.6">iCalendar spec</a>
* @return the formatted coords
@ -23,6 +23,11 @@ public record Coords(double longitude, double latitude) { @@ -23,6 +23,11 @@ public record Coords(double longitude, double latitude) {
* @return the json object
*/
public JSONObject json() {
return new JSONObject(Map.of("lon", longitude, "lat", latitude));
return new JSONObject(Map.of("lat", latitude,"lon", longitude ));
}
@Override
public String toString() {
return "%s, %s".formatted(latitude,longitude);
}
}

3
de.srsoftware.cal.app/src/main/java/de/srsoftware/cal/app/Application.java

@ -64,7 +64,7 @@ public class Application { @@ -64,7 +64,7 @@ public class Application {
server.start();
var jarDir = new File("/tmp/jars");
var jarDir = new File("/home/srichter/workspace/de.srsoftware.cal/de.srsoftware.cal.importer/build/libs");
var autoImport = new AutoImporter(db);
new JarWatchdog()
.setContext(BaseImporter.class.getClassLoader())
@ -75,7 +75,6 @@ public class Application { @@ -75,7 +75,6 @@ public class Application {
.start();
// TODO: add importers
// TODO: add coordinates to importers
}
}

2
de.srsoftware.cal.base/src/main/java/de/srsoftware/cal/Util.java

@ -59,7 +59,7 @@ public class Util { @@ -59,7 +59,7 @@ public class Util {
try {
var lat = Double.parseDouble(parts[0].trim());
var lon = Double.parseDouble(parts[1].trim());
return Payload.of(new Coords(lon, lat));
return Payload.of(new Coords(lat, lon));
} catch (NumberFormatException nfe) {
return error(nfe, "Failed to parse coords from %s", coords);
}

11
de.srsoftware.cal.db/src/main/java/de/srsoftware/cal/db/MariaDB.java

@ -61,8 +61,12 @@ public class MariaDB implements Database { @@ -61,8 +61,12 @@ public class MariaDB implements Database {
@Override
public Result<Appointment> add(Appointment appointment) {
try {
var start = Timestamp.valueOf(appointment.start());
var end = appointment.end().map(Timestamp::valueOf).orElse(null);
var coords = appointment.coords().map(Object::toString).orElse(null);
var location = appointment.location().orElse(null);
ResultSet keys = insertInto(APPOINTMENTS, TITLE, DESCRIPTION, START, END, LOCATION, COORDS) //
.values(appointment.title(), appointment.description(), appointment.start(), appointment.end().orElse(null), appointment.location().orElse(null), appointment.coords().orElse(null))
.values(appointment.title(), appointment.description(), start, end, location, coords)
.execute(connection)
.getGeneratedKeys();
Appointment saved = null;
@ -309,14 +313,17 @@ public class MariaDB implements Database { @@ -309,14 +313,17 @@ public class MariaDB implements Database {
@Override
public Result<Appointment> update(Appointment event) {
var start = Timestamp.valueOf(event.start());
var end = event.end().map(Timestamp::valueOf).orElse(null);
var coords = event.coords().map(Object::toString).orElse(null);
var location = event.location().orElse(null);
try {
Query
.update(APPOINTMENTS) //
.set(TITLE, DESCRIPTION, START, END, LOCATION, COORDS)
.where(AID, equal(event.id()))
.prepare(connection)
.apply(event.title(), event.description(), Timestamp.valueOf(event.start()), end, event.location().orElse(null), event.coords().orElse(null));
.apply(event.title(), event.description(), start, end, location, coords);
// TODO: update links, attachments, tags

7
de.srsoftware.cal.importer/src/main/java/de/srsoftware/cal/importer/jena/Kassablanca.java

@ -6,6 +6,7 @@ import static de.srsoftware.tools.Result.transform; @@ -6,6 +6,7 @@ import static de.srsoftware.tools.Result.transform;
import static de.srsoftware.tools.TagFilter.*;
import de.srsoftware.cal.BaseImporter;
import de.srsoftware.cal.api.Coords;
import de.srsoftware.tools.*;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime;
@ -17,6 +18,7 @@ public class Kassablanca extends BaseImporter { @@ -17,6 +18,7 @@ public class Kassablanca extends BaseImporter {
private static final String APPOINTMENT_TAG_ID = "entry-content";
private static final Pattern START_DATE_PATTERN = Pattern.compile("(\\d+).(\\d+).(\\d+).*Beginn\\s*(\\d+):(\\d+)\\s*Uhr");
private static final String LOCATION = "Kassablanca e.V., Felsenkellerstr. 13a, 07745 Jena";
private static final Coords COORDS = new Coords(50.92093, 11.57788);
public Kassablanca() throws NoSuchAlgorithmException {
super();
@ -27,6 +29,11 @@ public class Kassablanca extends BaseImporter { @@ -27,6 +29,11 @@ public class Kassablanca extends BaseImporter {
return BASE_URL;
}
@Override
protected Result<Coords> extractCoords(Tag eventTag) {
return Payload.of(COORDS);
}
@Override
protected Result<Tag> extractDescriptionTag(Tag eventTag) {
var list = eventTag.find(attributeHas("class", "se-content"));

8
de.srsoftware.cal.importer/src/main/java/de/srsoftware/cal/importer/jena/Rosenkeller.java

@ -7,6 +7,7 @@ import static de.srsoftware.tools.Result.transform; @@ -7,6 +7,7 @@ import static de.srsoftware.tools.Result.transform;
import static de.srsoftware.tools.TagFilter.*;
import de.srsoftware.cal.BaseImporter;
import de.srsoftware.cal.api.Coords;
import de.srsoftware.tools.Payload;
import de.srsoftware.tools.Result;
import de.srsoftware.tools.Tag;
@ -20,7 +21,7 @@ public class Rosenkeller extends BaseImporter { @@ -20,7 +21,7 @@ public class Rosenkeller extends BaseImporter {
private static final String BASE_URL = "https://rosenkeller.org";
private static final Pattern DATE_PATTERN = Pattern.compile("(\\d+) (\\w+)(\\W+(\\d+):(\\d+))?");
private static final String DEFAULT_LOCATION = "Rosenkeller, Johannisstr. 13, 07743 Jena";
private static final Coords COORDS = new Coords(50.92945, 11.58491);
public Rosenkeller() throws NoSuchAlgorithmException {
super();
}
@ -35,6 +36,11 @@ public class Rosenkeller extends BaseImporter { @@ -35,6 +36,11 @@ public class Rosenkeller extends BaseImporter {
return Payload.of(eventTag);
}
@Override
protected Result<Coords> extractCoords(Tag eventTag) {
return Payload.of(COORDS);
}
@Override
protected Result<Tag> extractDescriptionTag(Tag eventTag) {
var opt = eventTag //

Loading…
Cancel
Save