Skip to content
Snippets Groups Projects
Commit 9fd2f101 authored by jez04's avatar jez04
Browse files

feat: :tada: solution

parent 8495cebe
No related merge requests found
......@@ -16,6 +16,19 @@
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/jakarta.persistence/jakarta.persistence-api -->
<dependency>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>3.2.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-core -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>6.6.11.Final</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
......@@ -23,16 +36,14 @@
<scope>provided</scope>
</dependency>
<!--
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.24.3</version>
</dependency>
<!--
https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-api -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
......
......@@ -2,16 +2,25 @@ package lab.data;
import java.util.Random;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
@Entity
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
@EqualsAndHashCode
@ToString
@Builder(toBuilder = true)
......@@ -19,9 +28,12 @@ public class Score {
private static final Random RANDOM = new Random();
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
private int points;
@Enumerated(EnumType.STRING)
private Level level;
......
package lab.storage;
import java.util.Collections;
import java.util.List;
import java.util.function.Consumer;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
import lab.data.Score;
public class JpaConnector implements ScoreStorageInterface {
private EntityManagerFactory emf;
private EntityManager em;
public JpaConnector() {
emf = Persistence.createEntityManagerFactory("java2");
em = emf.createEntityManager();
}
@Override
public List<Score> getAll() {
return Collections.emptyList();
return em.createQuery("select s from Score s", Score.class).getResultList();
}
@Override
public List<Score> getFirstTen() {
return Collections.emptyList();
return em.createQuery("select s from Score s order by s.points DESC", Score.class).setMaxResults(10)
.getResultList();
}
@Override
......@@ -28,27 +35,47 @@ public class JpaConnector implements ScoreStorageInterface {
@Override
public Score save(Score score) {
return null;
Score result;
em.getTransaction().begin();
if (score.getId() == null || score.getId() == 0) {
em.persist(score);
result = score;
} else {
result = em.merge(score);
}
em.getTransaction().commit();
return result;
}
@Override
public void delete(List<Score> scores) {
em.getTransaction().begin();
for (Score score : scores) {
em.remove(score);
}
em.getTransaction().commit();
}
@Override
public void stop() {
em.close();
emf.close();
}
public Object getEntityManager() {
//return entity manager. Type Object is there because of compilation of empty task assignment
return null;
return em;
}
public Score find(long id) {
return null;
return em.find(Score.class, id);
}
public void modifyNoPersistOrMerge(long id, Consumer<Score> motificator) {
em.getTransaction().begin();
Score score = em.find(Score.class, id);
motificator.accept(score);
em.getTransaction().commit();
}
}
......@@ -5,10 +5,12 @@ module cz.vsb.fei.java2.lab05_module {
requires java.sql;
requires org.apache.logging.log4j;
requires static lombok;
requires jakarta.persistence;
requires com.h2database;
requires org.hibernate.orm.core;
opens lab.gui to javafx.fxml;
opens lab.data to javafx.base;
opens lab.data;
exports lab.gui to javafx.fxml, javafx.graphics;
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="3.0"
xmlns="https://jakarta.ee/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
https://jakarta.ee/xml/ns/persistence
https://jakarta.ee/xml/ns/persistence/persistence_3_0.xsd">
<persistence-unit name="java2"
transaction-type="RESOURCE_LOCAL">
<!-- If you are running in a production environment, add a managed data
source, this example data source is just for development and testing! -->
<properties>
<property name="jakarta.persistence.jdbc.url"
value="jdbc:h2:file:./db/java2" />
<!-- In memory DB no store to disk
<property name="jakarta.persistence.jdbc.url" value="jdbc:h2:mem:java2" />
-->
<property name="jakarta.persistence.jdbc.driver"
value="org.h2.Driver" />
<property name="jakarta.persistence.jdbc.user" value="app" />
<property name="jakarta.persistence.jdbc.password"
value="app" />
<property
name="jakarta.persistence.schema-generation.database.action"
value="create"></property>
<!-- Properties for Hibernate -->
<property name="hibernate.show_sql" value="false" />
<property name="hibernate.format_sql" value="true" />
<!--
<property name="hibernate.hbm2ddl.auto" value="update" />
-->
</properties>
</persistence-unit>
</persistence>
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment