diff --git a/backend/pom.xml b/backend/pom.xml
index 1a01f33..ce8dd20 100644
--- a/backend/pom.xml
+++ b/backend/pom.xml
@@ -21,16 +21,7 @@
io.quarkus
- quarkus-hibernate-orm-panache
-
-
- io.quarkus
- quarkus-scheduler
-
-
- io.quarkiverse.jdbc
- quarkus-jdbc-sqlite4j
- ${sqlite4j.version}
+ quarkus-arc
io.quarkus
diff --git a/persistence/pom.xml b/persistence/pom.xml
new file mode 100644
index 0000000..d67db43
--- /dev/null
+++ b/persistence/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+
+ net.laprun.sustainability
+ power-server-parent
+ 0.3.0-SNAPSHOT
+
+
+ power-server-persistence
+ power-server : persistence
+ Output measures to a database
+
+
+
+ net.laprun.sustainability
+ power-server-metadata
+ ${project.version}
+
+
+ io.quarkus
+ quarkus-hibernate-orm-panache
+
+
+ io.quarkus
+ quarkus-scheduler
+
+
+ io.quarkiverse.jdbc
+ quarkus-jdbc-sqlite4j
+ ${sqlite4j.version}
+
+
+
+
+
+
+ net.revelc.code.formatter
+ formatter-maven-plugin
+
+ ../contributing/eclipse-format.xml
+
+
+
+
+
+
diff --git a/backend/src/main/java/net/laprun/sustainability/power/persistence/Measure.java b/persistence/src/main/java/net/laprun/sustainability/power/persistence/Measure.java
similarity index 100%
rename from backend/src/main/java/net/laprun/sustainability/power/persistence/Measure.java
rename to persistence/src/main/java/net/laprun/sustainability/power/persistence/Measure.java
diff --git a/backend/src/main/java/net/laprun/sustainability/power/persistence/Persistence.java b/persistence/src/main/java/net/laprun/sustainability/power/persistence/Persistence.java
similarity index 100%
rename from backend/src/main/java/net/laprun/sustainability/power/persistence/Persistence.java
rename to persistence/src/main/java/net/laprun/sustainability/power/persistence/Persistence.java
diff --git a/backend/src/main/java/net/laprun/sustainability/power/persistence/SQLiteFilePersister.java b/persistence/src/main/java/net/laprun/sustainability/power/persistence/SQLiteFilePersister.java
similarity index 96%
rename from backend/src/main/java/net/laprun/sustainability/power/persistence/SQLiteFilePersister.java
rename to persistence/src/main/java/net/laprun/sustainability/power/persistence/SQLiteFilePersister.java
index 7e6e26d..c0e48ad 100644
--- a/backend/src/main/java/net/laprun/sustainability/power/persistence/SQLiteFilePersister.java
+++ b/persistence/src/main/java/net/laprun/sustainability/power/persistence/SQLiteFilePersister.java
@@ -25,7 +25,7 @@
@Singleton
public class SQLiteFilePersister {
private final AtomicBoolean executing = new AtomicBoolean(false);
- @ConfigProperty(name = "power-server.db.backup.location")
+ @ConfigProperty(name = "power-server.db.backup.location", defaultValue = "power-server-db.sqlite")
String dbFilelocation;
@Inject
DataSource dataSource;
diff --git a/persistence/src/main/resources/META-INF/beans.xml b/persistence/src/main/resources/META-INF/beans.xml
new file mode 100644
index 0000000..e69de29
diff --git a/pom.xml b/pom.xml
index c53cb3b..84bea56 100644
--- a/pom.xml
+++ b/pom.xml
@@ -76,6 +76,7 @@
server
cli
if-manifest-export
+ persistence
diff --git a/server/pom.xml b/server/pom.xml
index da6e094..c62a04a 100644
--- a/server/pom.xml
+++ b/server/pom.xml
@@ -19,6 +19,11 @@
power-server-backend
${project.version}
+
+ net.laprun.sustainability
+ power-server-persistence
+ ${project.version}
+
io.quarkus
quarkus-rest-jackson
diff --git a/server/src/main/java/net/laprun/sustainability/power/PowerMeasurer.java b/server/src/main/java/net/laprun/sustainability/power/PowerMeasurer.java
index 649325b..9bc5834 100644
--- a/server/src/main/java/net/laprun/sustainability/power/PowerMeasurer.java
+++ b/server/src/main/java/net/laprun/sustainability/power/PowerMeasurer.java
@@ -9,8 +9,6 @@
import io.smallrye.mutiny.Multi;
import io.smallrye.mutiny.infrastructure.Infrastructure;
-import io.smallrye.mutiny.subscription.Cancellable;
-import net.laprun.sustainability.power.persistence.Persistence;
import net.laprun.sustainability.power.sensors.Measures;
import net.laprun.sustainability.power.sensors.PowerSensor;
import net.laprun.sustainability.power.sensors.RegisteredPID;
@@ -22,9 +20,6 @@ public class PowerMeasurer {
@Inject
PowerSensor sensor;
- @Inject
- Persistence persistence;
-
@ConfigProperty(name = "net.laprun.sustainability.power.sampling-period", defaultValue = DEFAULT_SAMPLING_PERIOD)
Duration samplingPeriod;
@@ -40,14 +35,6 @@ public Multi uncheckedStream(long pid) throws Exception {
return periodicSensorCheck.map(measures -> measures.getOrDefault(registeredPID));
}
- public Cancellable startTrackingApp(String appName, long pid) throws Exception {
- return uncheckedStream(pid).subscribe().with(m -> persistence.save(m, appName));
- }
-
- public Cancellable startTrackingProcess(Process process) throws Exception {
- return startTrackingApp(process.info().commandLine().orElseThrow(), process.pid());
- }
-
private RegisteredPID track(long pid) throws Exception {
if (!sensor.isStarted()) {
sensor.start(samplingPeriod.toMillis());
@@ -79,8 +66,4 @@ public SensorMetadata metadata() {
public Duration getSamplingPeriod() {
return samplingPeriod;
}
-
- public Persistence persistence() {
- return persistence;
- }
}
diff --git a/server/src/main/java/net/laprun/sustainability/power/PowerResource.java b/server/src/main/java/net/laprun/sustainability/power/PowerResource.java
index 37dd641..3dc1bf6 100644
--- a/server/src/main/java/net/laprun/sustainability/power/PowerResource.java
+++ b/server/src/main/java/net/laprun/sustainability/power/PowerResource.java
@@ -18,12 +18,16 @@
import io.quarkus.runtime.StartupEvent;
import io.smallrye.mutiny.Multi;
import net.laprun.sustainability.power.persistence.Measure;
+import net.laprun.sustainability.power.persistence.Persistence;
@Path("/power")
public class PowerResource {
@Inject
PowerMeasurer measurer;
+ @Inject
+ Persistence persistence;
+
public void onStartup(@Observes StartupEvent event) {
Log.info("\nConfigured sampling period: " + samplingPeriod() +
"\nDetected metadata:\n" + metadata());
@@ -44,7 +48,7 @@ public Multi streamMeasuresFor(@PathParam("pid") String pid) thro
@Path("start/{appName}/{pid}")
public void startMeasure(@PathParam("appName") String appName, @PathParam("pid") String pid) throws Exception {
try {
- measurer.startTrackingApp(appName, measurer.validPIDOrFail(pid));
+ measurer.uncheckedStream(measurer.validPIDOrFail(pid)).subscribe().with(m -> persistence.save(m, appName));
} catch (IllegalArgumentException e) {
throw new NotFoundException("Unknown process: " + pid);
}