switch from jpa to orientdb
This commit is contained in:
@@ -5,13 +5,15 @@
|
||||
*/
|
||||
package de.geofroggerfx.service;
|
||||
|
||||
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.*;
|
||||
import de.geofroggerfx.model.Cache;
|
||||
import de.geofroggerfx.model.CacheList;
|
||||
import de.geofroggerfx.sql.DatabaseService;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javax.persistence.EntityManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -35,10 +37,9 @@ public class CacheServiceImpl implements CacheService {
|
||||
|
||||
@Override
|
||||
public void storeCaches(List<Cache> caches) {
|
||||
EntityManager em = dbService.getEntityManager();
|
||||
OObjectDatabaseTx database = dbService.getDatabase();
|
||||
|
||||
try {
|
||||
int transactionNumber = 0;
|
||||
int currentCacheNumber = 0;
|
||||
int numberOfCaches = caches.size();
|
||||
for (Cache cache : caches) {
|
||||
@@ -48,42 +49,10 @@ public class CacheServiceImpl implements CacheService {
|
||||
"Save caches to Database " + currentCacheNumber + " / " + numberOfCaches,
|
||||
(double) currentCacheNumber / (double) numberOfCaches));
|
||||
|
||||
// begin transaction if the transaction counter is set to zero
|
||||
if (transactionNumber == 0) { em.getTransaction().begin(); }
|
||||
transactionNumber++;
|
||||
|
||||
em.merge(cache.getOwner());
|
||||
em.merge(cache.getMainWayPoint());
|
||||
|
||||
for (Log log: cache.getLogs()) {
|
||||
em.merge(log);
|
||||
em.merge(log.getFinder());
|
||||
}
|
||||
|
||||
for (Attribute attribute: cache.getAttributes()) {
|
||||
em.merge(attribute);
|
||||
}
|
||||
|
||||
for (TravelBug bug: cache.getTravelBugs()) {
|
||||
em.merge(bug);
|
||||
}
|
||||
|
||||
em.merge(cache);
|
||||
|
||||
// comit every X caches
|
||||
if (transactionNumber == TRANSACTION_SIZE) {
|
||||
em.getTransaction().commit();
|
||||
transactionNumber = 0;
|
||||
}
|
||||
}
|
||||
|
||||
// if there wasn?t a commit right before, commit the rest
|
||||
if (transactionNumber != 0) {
|
||||
em.getTransaction().commit();
|
||||
database.save(cache);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
em.getTransaction().rollback();
|
||||
}
|
||||
|
||||
fireEvent(new ProgressEvent("Database",
|
||||
@@ -98,9 +67,9 @@ public class CacheServiceImpl implements CacheService {
|
||||
List<Cache> caches = new ArrayList<>();
|
||||
|
||||
try {
|
||||
EntityManager em = dbService.getEntityManager();
|
||||
String query = "select c from Cache c order by c."+sortField.getFieldName()+" "+direction.toString();
|
||||
List<Cache> result = em.createQuery(query).getResultList();
|
||||
OObjectDatabaseTx database = dbService.getDatabase();
|
||||
String query = "select * from Cache order by "+sortField.getFieldName()+" "+direction.toString();
|
||||
List<Cache> result = database.query(new OSQLSynchQuery<Cache>(query));
|
||||
if (result != null) {
|
||||
caches = result;
|
||||
}
|
||||
@@ -122,9 +91,9 @@ public class CacheServiceImpl implements CacheService {
|
||||
public List<CacheList> getAllCacheLists() {
|
||||
List<CacheList> lists = new ArrayList<>();
|
||||
try {
|
||||
EntityManager em = dbService.getEntityManager();
|
||||
String query = "select l from CacheList l order by l.name";
|
||||
List<CacheList> result = em.createQuery(query).getResultList();
|
||||
OObjectDatabaseTx database = dbService.getDatabase();
|
||||
String query = "select * from CacheList order by name";
|
||||
List<CacheList> result = database.query(new OSQLSynchQuery<CacheList>(query));
|
||||
if (result != null) {
|
||||
lists = result;
|
||||
}
|
||||
@@ -139,10 +108,12 @@ public class CacheServiceImpl implements CacheService {
|
||||
public boolean doesCacheListNameExist(String name) {
|
||||
boolean doesExist = false;
|
||||
try {
|
||||
EntityManager em = dbService.getEntityManager();
|
||||
String query = "select count(l) from CacheList l where l.name = :name";
|
||||
Long result = (Long)em.createQuery(query).setParameter("name", name).getSingleResult();
|
||||
doesExist = result > 0;
|
||||
OObjectDatabaseTx database = dbService.getDatabase();
|
||||
String query = "select * from CacheList l where l.name = :name";
|
||||
List<CacheList> result = database.query(new OSQLSynchQuery<CacheList>(query));
|
||||
if (result != null) {
|
||||
doesExist = result.size() > 0;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@@ -151,14 +122,11 @@ public class CacheServiceImpl implements CacheService {
|
||||
|
||||
@Override
|
||||
public void deleteCacheList(CacheList cacheList) {
|
||||
EntityManager em = dbService.getEntityManager();
|
||||
OObjectDatabaseTx database = dbService.getDatabase();
|
||||
try {
|
||||
em.getTransaction().begin();
|
||||
em.remove(cacheList);
|
||||
em.getTransaction().commit();
|
||||
database.delete(cacheList);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
em.getTransaction().rollback();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -167,14 +135,11 @@ public class CacheServiceImpl implements CacheService {
|
||||
*/
|
||||
@Override
|
||||
public void storeCacheList(CacheList list) {
|
||||
EntityManager em = dbService.getEntityManager();
|
||||
OObjectDatabaseTx database = dbService.getDatabase();
|
||||
try {
|
||||
em.getTransaction().begin();
|
||||
em.merge(list);
|
||||
em.getTransaction().commit();
|
||||
database.save(list);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
em.getTransaction().rollback();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user