From 714d10e379fcf89297cbe5af9a37d5330a558cb4 Mon Sep 17 00:00:00 2001 From: frosch95 Date: Sat, 16 Aug 2014 08:18:37 +0200 Subject: [PATCH] deal with updates --- src/de/geofroggerfx/model/Cache.java | 8 ++++ src/de/geofroggerfx/model/Log.java | 2 + src/de/geofroggerfx/service/CacheService.java | 7 ++++ .../service/CacheServiceImpl.java | 39 ++++++++++++++----- 4 files changed, 47 insertions(+), 9 deletions(-) diff --git a/src/de/geofroggerfx/model/Cache.java b/src/de/geofroggerfx/model/Cache.java index 1ec929d..5487e64 100644 --- a/src/de/geofroggerfx/model/Cache.java +++ b/src/de/geofroggerfx/model/Cache.java @@ -25,6 +25,8 @@ */ package de.geofroggerfx.model; +import javax.persistence.OneToMany; +import javax.persistence.OneToOne; import java.util.List; /** @@ -38,9 +40,12 @@ public class Cache { private boolean found; private String name; private String placedBy; + @OneToOne(orphanRemoval = true) private User owner; + @OneToOne(orphanRemoval = true) private Type type; private String container; + @OneToMany(orphanRemoval = true) private List attributes; private String difficulty; private String terrain; @@ -51,8 +56,11 @@ public class Cache { private String longDescription; private boolean longDescriptionHtml; private String encodedHints; + @OneToMany(orphanRemoval = true) private List logs; + @OneToMany(orphanRemoval = true) private List travelBugs; + @OneToOne(orphanRemoval = true) private Waypoint mainWayPoint; public Waypoint getMainWayPoint() { diff --git a/src/de/geofroggerfx/model/Log.java b/src/de/geofroggerfx/model/Log.java index c2acb07..c369890 100644 --- a/src/de/geofroggerfx/model/Log.java +++ b/src/de/geofroggerfx/model/Log.java @@ -25,6 +25,7 @@ */ package de.geofroggerfx.model; +import javax.persistence.OneToOne; import java.time.LocalDateTime; import java.util.Date; @@ -36,6 +37,7 @@ public class Log { private Long id; private Date date; private String type; + @OneToOne(orphanRemoval = true) private User finder; private boolean textEncoded; private String text; diff --git a/src/de/geofroggerfx/service/CacheService.java b/src/de/geofroggerfx/service/CacheService.java index 3177d45..037b5a8 100644 --- a/src/de/geofroggerfx/service/CacheService.java +++ b/src/de/geofroggerfx/service/CacheService.java @@ -43,6 +43,13 @@ public interface CacheService { */ void storeCaches(List caches); + /** + * find a single cache by id + * @param id id of the cache + * @return single cache + */ + Cache findCacheById(Long id); + /** * Receive all caches from the database * @param sortField sort the list based on the field diff --git a/src/de/geofroggerfx/service/CacheServiceImpl.java b/src/de/geofroggerfx/service/CacheServiceImpl.java index c6e0562..e4fbc91 100644 --- a/src/de/geofroggerfx/service/CacheServiceImpl.java +++ b/src/de/geofroggerfx/service/CacheServiceImpl.java @@ -9,8 +9,7 @@ import com.orientechnologies.orient.core.sql.query.OSQLSynchQuery; import com.orientechnologies.orient.object.db.OObjectDatabaseTx; import de.geofroggerfx.application.ProgressEvent; import de.geofroggerfx.application.ProgressListener; -import de.geofroggerfx.model.Cache; -import de.geofroggerfx.model.CacheList; +import de.geofroggerfx.model.*; import de.geofroggerfx.sql.DatabaseService; import javax.inject.Inject; @@ -22,8 +21,6 @@ import java.util.List; */ public class CacheServiceImpl implements CacheService { - private static final int TRANSACTION_SIZE = 100; - @Inject private DatabaseService dbService; private final List listeners = new ArrayList<>(); @@ -49,23 +46,50 @@ public class CacheServiceImpl implements CacheService { "Save caches to Database " + currentCacheNumber + " / " + numberOfCaches, (double) currentCacheNumber / (double) numberOfCaches)); + Cache existingCache = findCacheById(cache.getId()); + if (existingCache != null) { + database.delete(existingCache); + } database.save(cache); + + } } catch (Exception e) { e.printStackTrace(); } + System.out.println("cache count: " + database.countClass(Cache.class)); + System.out.println("Log count: "+ database.countClass(Log.class)); + System.out.println("Waypoint count: "+ database.countClass(Waypoint.class)); + System.out.println("Attribute count: "+ database.countClass(Attribute.class)); + fireEvent(new ProgressEvent("Database", ProgressEvent.State.FINISHED, "Caches are saved to Database")); } @Override - @SuppressWarnings("unchecked") + public Cache findCacheById(Long id) { + Cache foundCache = null; + + try { + OObjectDatabaseTx database = dbService.getDatabase(); + String query = "select * from Cache where id="+id; + List result = database.query(new OSQLSynchQuery(query)); + if (result != null && result.size() > 0) { + foundCache = result.get(0); + } + } catch (Exception e) { + e.printStackTrace(); + } + return foundCache; + } + + + @Override public List getAllCaches(CacheSortField sortField, SortDirection direction) { List caches = new ArrayList<>(); - try { OObjectDatabaseTx database = dbService.getDatabase(); String query = "select * from Cache order by "+sortField.getFieldName()+" "+direction.toString(); @@ -130,9 +154,6 @@ public class CacheServiceImpl implements CacheService { } } - /** - * {@inheritDoc} - */ @Override public void storeCacheList(CacheList list) { OObjectDatabaseTx database = dbService.getDatabase();