2891 Upgrade Hibernate and Jersey

This commit is contained in:
Andreas Svanberg 2022-09-30 16:30:59 +02:00
parent 820365bf14
commit 1826ab5aa8
267 changed files with 931 additions and 601 deletions
core
pom.xml
src/main/java
modules
se/su/dsv/scipro
DataInitializer.java
activityplan
checklist
daisyExternal/http
file
finalseminar
finalthesis
firstmeeting
forum
forummail
generalsystemsettings
grading
group
integration
mail
match

@ -78,36 +78,23 @@
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<classifier>jakarta</classifier>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-core</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
<scope>provided</scope>
<classifier>jpa</classifier>
</dependency>
<!-- JPA -->
<!-- Hibernate impl -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<groupId>org.hibernate.orm</groupId>
<artifactId>hibernate-core</artifactId>
<scope>runtime</scope>
<exclusions>
<exclusion>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--Additional stuff-->
@ -140,12 +127,12 @@
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.3</version>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
<version>2.3.2</version>
<version>3.0.2</version>
<scope>runtime</scope>
</dependency>
@ -197,9 +184,29 @@
</testResources>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>jaxb2-maven-plugin</artifactId>
<version>2.5.0</version>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
<classifier>jakarta</classifier>
</path>
<path>
<groupId>jakarta.persistence</groupId>
<artifactId>jakarta.persistence-api</artifactId>
<version>${jakarta.persistence-api.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<groupId>com.evolvedbinary.maven.mojohaus</groupId>
<artifactId>jaxb-maven-plugin</artifactId>
<version>3.0.0</version>
<executions>
<execution>
<id>xjc</id>

@ -0,0 +1,142 @@
package modules;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
import com.google.inject.persist.UnitOfWork;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityTransaction;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import java.lang.reflect.Method;
class JakartaLocalTxnInterceptor implements MethodInterceptor {
@Inject
private JakartaPersistService emProvider = null;
@Inject
private UnitOfWork unitOfWork = null;
@Transactional
private static class Internal {
}
// Tracks if the unit of work was begun implicitly by this transaction.
private final ThreadLocal<Boolean> didWeStartWork = new ThreadLocal<>();
@Override
public Object invoke(MethodInvocation methodInvocation) throws Throwable {
// Should we start a unit of work?
if (!emProvider.isWorking()) {
emProvider.begin();
didWeStartWork.set(true);
}
Transactional transactional = readTransactionMetadata(methodInvocation);
EntityManager em = this.emProvider.get();
// Allow 'joining' of transactions if there is an enclosing @Transactional method.
if (em.getTransaction().isActive()) {
return methodInvocation.proceed();
}
final EntityTransaction txn = em.getTransaction();
txn.begin();
Object result;
try {
result = methodInvocation.proceed();
} catch (Exception e) {
//commit transaction only if rollback didnt occur
if (rollbackIfNecessary(transactional, e, txn)) {
txn.commit();
}
//propagate whatever exception is thrown anyway
throw e;
} finally {
// Close the em if necessary (guarded so this code doesn't run unless catch fired).
if (null != didWeStartWork.get() && !txn.isActive()) {
didWeStartWork.remove();
unitOfWork.end();
}
}
//everything was normal so commit the txn (do not move into try block above as it
// interferes with the advised method's throwing semantics)
try {
txn.commit();
} finally {
//close the em if necessary
if (null != didWeStartWork.get()) {
didWeStartWork.remove();
unitOfWork.end();
}
}
//or return result
return result;
}
private Transactional readTransactionMetadata(MethodInvocation methodInvocation) {
Transactional transactional;
Method method = methodInvocation.getMethod();
Class<?> targetClass = methodInvocation.getThis().getClass();
transactional = method.getAnnotation(Transactional.class);
if (null == transactional) {
// If none on method, try the class.
transactional = targetClass.getAnnotation(Transactional.class);
}
if (null == transactional) {
// If there is no transactional annotation present, use the default
transactional = Internal.class.getAnnotation(Transactional.class);
}
return transactional;
}
/**
* Returns True if rollback DID NOT HAPPEN (i.e. if commit should continue).
*
* @param transactional The metadata annotaiton of the method
* @param e The exception to test for rollback
* @param txn A JPA Transaction to issue rollbacks on
*/
private boolean rollbackIfNecessary(
Transactional transactional, Exception e, EntityTransaction txn)
{
boolean commit = true;
//check rollback clauses
for (Class<? extends Exception> rollBackOn : transactional.rollbackOn()) {
//if one matched, try to perform a rollback
if (rollBackOn.isInstance(e)) {
commit = false;
//check ignore clauses (supercedes rollback clause)
for (Class<? extends Exception> exceptOn : transactional.ignore()) {
//An exception to the rollback clause was found, DON'T rollback
// (i.e. commit and throw anyway)
if (exceptOn.isInstance(e)) {
commit = true;
break;
}
}
//rollback only if nothing matched the ignore check
if (!commit) {
txn.rollback();
}
//otherwise continue to commit
break;
}
}
return commit;
}
}

@ -0,0 +1,42 @@
package modules;
import com.google.inject.Singleton;
import com.google.inject.persist.PersistModule;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.UnitOfWork;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import org.aopalliance.intercept.MethodInterceptor;
import java.util.Objects;
public class JakartaPersistModule extends PersistModule {
private final String jpaUnit;
public JakartaPersistModule(String jpaUnit) {
this.jpaUnit = Objects.requireNonNull(jpaUnit, "JPA unit name must be a non-empty string.");
}
private MethodInterceptor transactionInterceptor;
@Override
protected void configurePersistence() {
bindConstant().annotatedWith(Jpa.class).to(jpaUnit);
bind(JakartaPersistService.class).in(Singleton.class);
bind(PersistService.class).to(JakartaPersistService.class);
bind(UnitOfWork.class).to(JakartaPersistService.class);
bind(EntityManager.class).toProvider(JakartaPersistService.class);
bind(EntityManagerFactory.class)
.toProvider(JakartaPersistService.EntityManagerFactoryProvider.class);
transactionInterceptor = new JakartaLocalTxnInterceptor();
requestInjection(transactionInterceptor);
}
@Override
protected MethodInterceptor getTransactionInterceptor() {
return transactionInterceptor;
}
}

@ -0,0 +1,99 @@
package modules;
import com.google.common.base.Preconditions;
import com.google.inject.Inject;
import com.google.inject.Provider;
import com.google.inject.Singleton;
import com.google.inject.persist.PersistService;
import com.google.inject.persist.UnitOfWork;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
@Singleton
class JakartaPersistService implements Provider<EntityManager>, UnitOfWork, PersistService {
private final ThreadLocal<EntityManager> entityManager = new ThreadLocal<>();
private final String persistenceUnitName;
@Inject
public JakartaPersistService(@Jpa String persistenceUnitName) {
this.persistenceUnitName = persistenceUnitName;
}
@Override
public EntityManager get() {
if (!isWorking()) {
begin();
}
EntityManager em = entityManager.get();
Preconditions.checkState(
null != em,
"Requested EntityManager outside work unit. "
+ "Try calling UnitOfWork.begin() first, or use a PersistFilter if you "
+ "are inside a servlet environment.");
return em;
}
public boolean isWorking() {
return entityManager.get() != null;
}
@Override
public void begin() {
Preconditions.checkState(
null == entityManager.get(),
"Work already begun on this thread. Looks like you have called UnitOfWork.begin() twice"
+ " without a balancing call to end() in between.");
entityManager.set(emFactory.createEntityManager());
}
@Override
public void end() {
EntityManager em = entityManager.get();
// Let's not penalize users for calling end() multiple times.
if (null == em) {
return;
}
try {
em.close();
} finally {
entityManager.remove();
}
}
private volatile EntityManagerFactory emFactory;
@Override
public synchronized void start() {
Preconditions.checkState(null == emFactory, "Persistence service was already initialized.");
this.emFactory = Persistence.createEntityManagerFactory(persistenceUnitName);
}
@Override
public synchronized void stop() {
Preconditions.checkState(emFactory.isOpen(), "Persistence service was already shut down.");
emFactory.close();
}
@Singleton
public static class EntityManagerFactoryProvider implements Provider<EntityManagerFactory> {
private final JakartaPersistService emProvider;
@Inject
public EntityManagerFactoryProvider(JakartaPersistService emProvider) {
this.emProvider = emProvider;
}
@Override
public EntityManagerFactory get() {
assert null != emProvider.emFactory;
return emProvider.emFactory;
}
}
}

@ -0,0 +1,11 @@
package modules;
import com.google.inject.BindingAnnotation;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
@BindingAnnotation
public @interface Jpa {
}

@ -17,7 +17,7 @@ import se.su.dsv.scipro.system.*;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.time.LocalDate;
import java.time.LocalTime;
import java.util.*;

@ -1,21 +1,22 @@
package se.su.dsv.scipro.activityplan;
import com.querydsl.core.annotations.QueryInit;
import jakarta.persistence.GenerationType;
import se.su.dsv.scipro.checklist.Checklist;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.system.LazyDeletableDomainObject;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import jakarta.persistence.Cacheable;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToOne;
import java.io.Serializable;
import java.util.*;
@ -23,7 +24,7 @@ import java.util.*;
@Cacheable(true)
public class Activity extends LazyDeletableDomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional=false)

@ -3,7 +3,7 @@ package se.su.dsv.scipro.activityplan;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Date;
import java.util.Objects;
import java.util.Set;
@ -13,7 +13,7 @@ import java.util.TreeSet;
@Cacheable(true)
public class ActivityPlan extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy= "activityPlan",cascade=CascadeType.PERSIST, orphanRemoval = true)

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ActivityPlanServiceImpl extends AbstractServiceImpl<ActivityPlan,Long> implements ActivityPlanService {
@Inject

@ -3,7 +3,7 @@ package se.su.dsv.scipro.activityplan;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.*;
@Entity
@ -11,7 +11,7 @@ import java.util.*;
public class ActivityPlanTemplate extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OrderColumn(name = "numberInOrder")

@ -8,7 +8,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ActivityServiceImpl extends AbstractServiceImpl<Activity, Long> implements ActivityService {

@ -3,14 +3,14 @@ package se.su.dsv.scipro.activityplan;
import se.su.dsv.scipro.checklist.ChecklistTemplate;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
public class ActivityTemplate extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)

@ -5,7 +5,7 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.*;
@Entity
@ -14,7 +14,7 @@ import java.util.*;
public class Checklist extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)

@ -3,14 +3,14 @@ package se.su.dsv.scipro.checklist;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@Table(name = "checklist_answer")
public class ChecklistAnswer extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ChecklistAnswerServiceImpl extends AbstractServiceImpl<ChecklistAnswer, Long> implements ChecklistAnswerService {

@ -5,7 +5,7 @@ package se.su.dsv.scipro.checklist;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@ -13,7 +13,7 @@ import java.util.Objects;
@Cacheable(true)
public class ChecklistCategory extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique=true)

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ChecklistCategoryRepoImpl extends GenericRepo<ChecklistCategory, Long> implements ChecklistCategoryRepo {
@Inject

@ -3,7 +3,7 @@ package se.su.dsv.scipro.checklist;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@ -13,7 +13,7 @@ import java.util.Objects;
@Cacheable(true)
public class ChecklistQuestion extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ChecklistQuestionRepoImpl extends GenericRepo<ChecklistQuestion, Long> implements ChecklistQuestionRepo {
@Inject

@ -7,7 +7,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ChecklistServiceImpl extends AbstractServiceImpl<Checklist, Long> implements ChecklistService {
@Inject

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.*;
@Entity
@ -14,7 +14,7 @@ public class ChecklistTemplate extends DomainObject {
public static final int DEFAULT_TEMPLATE_NUMBER = 999;
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(nullable = false)

@ -8,7 +8,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
import static com.querydsl.core.types.dsl.Expressions.allOf;

@ -2,7 +2,7 @@ package se.su.dsv.scipro.daisyExternal.http;
import se.su.dsv.scipro.io.dto.*;
import javax.ws.rs.core.Response;
import jakarta.ws.rs.core.Response;
import java.io.InputStream;
import java.util.Date;
import java.util.List;

@ -22,20 +22,20 @@ import se.su.dsv.scipro.io.dto.UserName;
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.NotFoundException;
import javax.ws.rs.ProcessingException;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import jakarta.ws.rs.NotFoundException;
import jakarta.ws.rs.ProcessingException;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.client.WebTarget;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.MediaType;
import jakarta.ws.rs.core.Response;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.*;
import static javax.ws.rs.client.Entity.xml;
import static jakarta.ws.rs.client.Entity.xml;
public class DaisyAPIImpl implements DaisyAPI {

@ -5,7 +5,7 @@ import org.slf4j.LoggerFactory;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.FileSystems;
@ -34,7 +34,7 @@ public class FileDescription extends DomainObject {
public static final String FILE_ROOT = "/scipro-files";
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class FileDescriptionRepoImpl extends GenericRepo<FileDescription, Long> implements FileDescriptionRepo {
@Inject

@ -1,12 +1,13 @@
package se.su.dsv.scipro.file;
import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.io.Serializable;
import java.util.*;
@ -24,7 +25,7 @@ import java.util.*;
@Table(name = "file_reference")
public class FileReference implements Serializable {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(cascade = CascadeType.PERSIST)

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.AbstractRepository;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
class FileReferenceRepositoryImpl extends AbstractRepository implements FileReferenceRepository {

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.io.InputStream;
public class FileServiceImpl extends AbstractServiceImpl<FileDescription, Long> implements FileService {

@ -3,7 +3,7 @@ package se.su.dsv.scipro.file;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@ -11,7 +11,7 @@ import java.util.Objects;
public class ProjectFile extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne

@ -8,7 +8,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.*;
public class ProjectFileRepositoryImpl extends AbstractServiceImpl<ProjectFile, Long> implements ProjectFileRepository {

@ -10,7 +10,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
import java.util.Optional;

@ -1,6 +1,7 @@
package se.su.dsv.scipro.finalseminar;
import com.querydsl.core.annotations.QueryInit;
import jakarta.persistence.GenerationType;
import se.su.dsv.scipro.data.dataobjects.Member;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.project.Project;
@ -9,19 +10,19 @@ import se.su.dsv.scipro.system.LazyDeletableDomainObject;
import se.su.dsv.scipro.system.ProjectType;
import se.su.dsv.scipro.system.User;
import javax.persistence.Basic;
import javax.persistence.Cacheable;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import jakarta.persistence.Basic;
import jakarta.persistence.Cacheable;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToMany;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import java.util.*;
@Entity
@ -35,7 +36,7 @@ public class FinalSeminar extends LazyDeletableDomainObject {
public static final String FINAL_SEMINAR = "finalSeminar";
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(optional = false)

@ -2,10 +2,10 @@ package se.su.dsv.scipro.finalseminar;
import se.su.dsv.scipro.project.Project;
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import jakarta.persistence.Cacheable;
import jakarta.persistence.Entity;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.util.Objects;
@Entity

@ -6,7 +6,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.*;
public class FinalSeminarActiveParticipationRepositoryImpl extends AbstractRepository implements FinalSeminarActiveParticipationRepository {

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class FinalSeminarActiveParticipationServiceImpl extends AbstractServiceImpl<FinalSeminarActiveParticipation, Long> implements FinalSeminarActiveParticipationService {

@ -5,14 +5,14 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.report.OppositionReport;
import se.su.dsv.scipro.system.ProjectType;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import jakarta.persistence.Basic;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToOne;
import jakarta.persistence.Table;
import java.util.*;
@Entity

@ -6,7 +6,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.*;
public class FinalSeminarOppositionRepoImpl extends GenericRepo<FinalSeminarOpposition,Long> implements FinalSeminarOppositionRepo {

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class FinalSeminarOppositionServiceImpl extends AbstractServiceImpl<FinalSeminarOpposition, Long> implements FinalSeminarOppositionService {
@Inject

@ -3,14 +3,14 @@ package se.su.dsv.scipro.finalseminar;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@MappedSuperclass
public abstract class FinalSeminarParticipation extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false)

@ -3,9 +3,9 @@ package se.su.dsv.scipro.finalseminar;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.User;
import javax.persistence.Cacheable;
import javax.persistence.Entity;
import javax.persistence.Table;
import jakarta.persistence.Cacheable;
import jakarta.persistence.Entity;
import jakarta.persistence.Table;
@Entity
@Cacheable(true)

@ -6,7 +6,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;

@ -20,7 +20,7 @@ import se.su.dsv.scipro.util.Either;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.time.Instant;
import java.time.Period;
import java.util.*;

@ -2,7 +2,7 @@ package se.su.dsv.scipro.finalseminar;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class FinalSeminarSettingsServiceImpl extends AbstractServiceImpl<FinalSeminarSettings,Long> implements FinalSeminarSettingsService {

@ -1,19 +1,20 @@
package se.su.dsv.scipro.finalthesis;
import jakarta.persistence.GenerationType;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.PrePersist;
import javax.persistence.PreUpdate;
import javax.persistence.Table;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.PrePersist;
import jakarta.persistence.PreUpdate;
import jakarta.persistence.Table;
import java.util.*;
@Entity
@ -25,7 +26,7 @@ public class FinalThesis extends DomainObject {
}
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false)

@ -16,7 +16,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.Date;
import java.util.List;

@ -7,7 +7,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.Date;
import java.util.Optional;

@ -4,14 +4,14 @@ import com.querydsl.core.annotations.QueryInit;
import se.su.dsv.scipro.activityplan.Activity;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Date;
@Entity
@Table(name = "project_first_meeting")
public final class ProjectFirstMeeting extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@QueryInit("activityPlan.project")

@ -6,7 +6,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class AbstractThreadRepositoryImpl extends GenericRepo<ForumThread, Long> implements AbstractThreadRepository {

@ -9,7 +9,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import static com.querydsl.core.types.dsl.Expressions.allOf;

@ -1,14 +1,20 @@
package se.su.dsv.scipro.forum;
import se.su.dsv.scipro.forum.dataobjects.*;
import com.querydsl.jpa.impl.JPAQuery;
import jakarta.persistence.EntityManager;
import se.su.dsv.scipro.forum.dataobjects.ForumPost;
import se.su.dsv.scipro.forum.dataobjects.ForumThread;
import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
import se.su.dsv.scipro.forum.dataobjects.QForumPost;
import se.su.dsv.scipro.forum.dataobjects.QForumThread;
import se.su.dsv.scipro.forum.dataobjects.QProjectThread;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.GenericRepo;
import se.su.dsv.scipro.util.Pair;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import java.util.List;
import java.util.*;
import java.util.stream.Collectors;
import static com.querydsl.core.types.dsl.Expressions.allOf;
@ -26,10 +32,11 @@ public class ForumPostRepositoryImpl extends GenericRepo<ForumPost, Long> implem
@Override
public List<Pair<ProjectThread, ForumPost>> latestPost(Project project, int amount) {
return createQuery()
return new JPAQuery<>(em())
.select(QProjectThread.projectThread, QForumPost.forumPost)
.from(QForumPost.forumPost)
.innerJoin(QProjectThread.projectThread).on(QProjectThread.projectThread.forumThread.id.eq(QForumPost.forumPost.forumThread.id))
.from(QProjectThread.projectThread)
.innerJoin(QProjectThread.projectThread.forumThread)
.innerJoin(QForumThread.forumThread.posts, QForumPost.forumPost)
.where(QProjectThread.projectThread.project.eq(project))
.orderBy(QForumPost.forumPost.dateCreated.desc())
.limit(amount)

@ -7,7 +7,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
public class GroupThreadRepositoryImpl extends GenericRepo<GroupThread, Long> implements GroupThreadRepository {

@ -7,7 +7,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
public class ProjectThreadRepositoryImpl extends GenericRepo<ProjectThread, Long> implements ProjectThreadRepository {

@ -1,19 +1,20 @@
package se.su.dsv.scipro.forum.dataobjects;
import jakarta.persistence.GenerationType;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.system.LazyDeletableDomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Lob;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.OneToMany;
import jakarta.persistence.Table;
import java.util.*;
@Entity
@ -21,7 +22,7 @@ import java.util.*;
public class ForumPost extends LazyDeletableDomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Lob

@ -2,7 +2,7 @@ package se.su.dsv.scipro.forum.dataobjects;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
@Entity

@ -2,9 +2,9 @@ package se.su.dsv.scipro.forum.dataobjects;
import se.su.dsv.scipro.system.User;
import javax.persistence.Embeddable;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import jakarta.persistence.Embeddable;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import java.io.Serializable;
import java.util.Objects;

@ -3,7 +3,7 @@ package se.su.dsv.scipro.forum.dataobjects;
import se.su.dsv.scipro.system.LazyDeletableDomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
@ -14,7 +14,7 @@ import java.util.Objects;
public class ForumThread extends LazyDeletableDomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(mappedBy = "forumThread", cascade = CascadeType.ALL)

@ -2,7 +2,7 @@ package se.su.dsv.scipro.forum.dataobjects;
import se.su.dsv.scipro.group.Group;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Objects;
@ -11,7 +11,7 @@ import java.util.Objects;
public class GroupThread implements Serializable {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne

@ -2,7 +2,7 @@ package se.su.dsv.scipro.forum.dataobjects;
import se.su.dsv.scipro.project.Project;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Objects;
@ -10,7 +10,7 @@ import java.util.Objects;
@Table(name = "project_thread")
public class ProjectThread implements Serializable {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(optional = false)

@ -2,7 +2,7 @@ package se.su.dsv.scipro.forum.dataobjects;
import se.su.dsv.scipro.project.Project;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@ -10,7 +10,7 @@ import java.util.Objects;
public class ReviewerThread {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToOne(optional = false)

@ -3,7 +3,7 @@ package se.su.dsv.scipro.forum.notifications;
import se.su.dsv.scipro.forum.dataobjects.ForumPost;
import se.su.dsv.scipro.notifications.dataobject.NotificationEvent;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Objects;

@ -5,7 +5,7 @@ import se.su.dsv.scipro.forum.dataobjects.ForumPost;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.Optional;
public class ForumNotificationRepositoryImpl implements ForumNotificationRepository {

@ -4,7 +4,7 @@ import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@ -12,7 +12,7 @@ import java.util.Objects;
@Inheritance(strategy = InheritanceType.JOINED)
public class ForumMail extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false)

@ -4,10 +4,10 @@ import se.su.dsv.scipro.forum.dataobjects.GroupThread;
import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.system.User;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.util.Objects;
@Entity

@ -4,10 +4,10 @@ import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
import se.su.dsv.scipro.mail.MailEvent;
import se.su.dsv.scipro.system.User;
import javax.persistence.Entity;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import jakarta.persistence.Entity;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.util.Objects;
@Entity

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ForumMailRepositoryImpl extends GenericRepo<ForumMail, Long> implements ForumMailRepository {
@Inject

@ -2,10 +2,10 @@ package se.su.dsv.scipro.forummail;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.Basic;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import jakarta.persistence.Basic;
import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import java.util.Objects;
@Table(name="forum_mail_settings")

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ForumMailSettingsServiceImpl extends AbstractServiceImpl<ForumMailSettings,Long> implements ForumMailSettingsService {

@ -3,7 +3,7 @@ package se.su.dsv.scipro.generalsystemsettings;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.SystemModule;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.*;
@Entity

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class GeneralSystemSettingsServiceImpl extends AbstractServiceImpl<GeneralSystemSettings, Long> implements GeneralSystemSettingsService {

@ -7,12 +7,12 @@ import se.su.dsv.scipro.util.Either;
import javax.inject.Inject;
import javax.inject.Named;
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.GenericType;
import javax.ws.rs.core.Response;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.client.ClientBuilder;
import jakarta.ws.rs.client.Entity;
import jakarta.ws.rs.client.WebTarget;
import jakarta.ws.rs.core.GenericType;
import jakarta.ws.rs.core.Response;
import java.io.InputStream;
import java.time.LocalDate;
import java.util.*;

@ -5,7 +5,7 @@ import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
@ -20,7 +20,7 @@ public class Group extends DomainObject {
public static final int STRING_MAX_LENGTH = 255;
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(length = STRING_MAX_LENGTH)

@ -10,7 +10,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
public class GroupServiceImpl extends AbstractServiceImpl<Group, Long> implements GroupService, FilteredService<Group, Long, GroupService.Filter> {

@ -3,7 +3,7 @@ package se.su.dsv.scipro.integration.activityfinalseminar;
import se.su.dsv.scipro.activityplan.Activity;
import se.su.dsv.scipro.finalseminar.FinalSeminar;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Objects;

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.Optional;
public class ActivityFinalSeminarRepositoryImpl extends GenericRepo<ActivityFinalSeminar, Long> implements ActivityFinalSeminarRepository {

@ -3,7 +3,7 @@ package se.su.dsv.scipro.integration.activityforum;
import se.su.dsv.scipro.activityplan.Activity;
import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Objects;

@ -6,7 +6,7 @@ import se.su.dsv.scipro.forum.dataobjects.ProjectThread;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.Optional;
public class ActivityThreadRepositoryImpl implements ActivityThreadRepository {

@ -1,23 +1,24 @@
package se.su.dsv.scipro.mail;
import jakarta.persistence.GenerationType;
import se.su.dsv.scipro.file.FileReference;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.Basic;
import javax.persistence.Cacheable;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.Lob;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import jakarta.persistence.Basic;
import jakarta.persistence.Cacheable;
import jakarta.persistence.Column;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.JoinTable;
import jakarta.persistence.Lob;
import jakarta.persistence.ManyToMany;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.util.*;
@Entity
@ -26,7 +27,7 @@ import java.util.*;
public class MailEvent extends DomainObject {
public static final int STRING_MAX_LENGTH = 255;
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@JoinTable(

@ -7,7 +7,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
public class MailEventServiceImpl extends AbstractServiceImpl<MailEvent,Long> implements MailEventService {

@ -3,7 +3,7 @@ package se.su.dsv.scipro.match;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.ProjectType;
import javax.persistence.*;
import jakarta.persistence.*;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
@ -15,7 +15,7 @@ import java.util.*;
public class ApplicationPeriod extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "applicationPeriod", cascade=CascadeType.ALL, orphanRemoval=true)

@ -2,7 +2,7 @@ package se.su.dsv.scipro.match;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

@ -1,9 +1,9 @@
package se.su.dsv.scipro.match;
import javax.persistence.Basic;
import javax.persistence.Embeddable;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import jakarta.persistence.Basic;
import jakarta.persistence.Embeddable;
import jakarta.persistence.EnumType;
import jakarta.persistence.Enumerated;
import java.io.Serializable;
import java.util.Objects;

@ -3,10 +3,10 @@ package se.su.dsv.scipro.match;
import se.su.dsv.scipro.activityplan.ActivityPlanTemplate;
import se.su.dsv.scipro.system.ProjectType;
import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;
import jakarta.persistence.EmbeddedId;
import jakarta.persistence.Entity;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.MapsId;
import java.io.Serializable;
@Entity

@ -1,7 +1,7 @@
package se.su.dsv.scipro.match;
import javax.persistence.Basic;
import javax.persistence.Embeddable;
import jakarta.persistence.Basic;
import jakarta.persistence.Embeddable;
import java.io.Serializable;
import java.util.Objects;

@ -6,7 +6,7 @@ import se.su.dsv.scipro.system.ProjectType;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class ApplicationPeriodProjectTypeServiceImpl extends AbstractServiceImpl<ApplicationPeriodProjectType, ApplicationPeriodProjectTypeId> implements ApplicationPeriodProjectTypeService {
@Inject

@ -12,7 +12,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.time.Clock;
import java.time.LocalDate;
import java.time.LocalDateTime;

@ -1,6 +1,6 @@
package se.su.dsv.scipro.match;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
@ -11,7 +11,7 @@ import java.util.Objects;
public class FirstMeeting implements Serializable {
public static final int LENGTH = 1024;
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Basic(optional = false)

@ -4,7 +4,7 @@ import se.su.dsv.scipro.system.GenericRepo;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class FirstMeetingRepositoryImpl extends GenericRepo<FirstMeeting, Long> implements FirstMeetingRepository {
@Inject

@ -5,7 +5,7 @@ import se.su.dsv.scipro.data.dataobjects.Member;
import se.su.dsv.scipro.project.Project;
import se.su.dsv.scipro.system.*;
import javax.persistence.*;
import jakarta.persistence.*;
import java.time.LocalDate;
import java.util.*;
import java.util.stream.Collectors;
@ -19,7 +19,7 @@ public class Idea extends DomainObject {
public static final int PREREQUISITES_LENGTH = 4000;
public static final int TITLE_LENGTH = 1024;
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false)

@ -2,7 +2,7 @@ package se.su.dsv.scipro.match;
import se.su.dsv.scipro.system.DomainObject;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@ -12,7 +12,7 @@ public class IdeaExport extends DomainObject {
public enum Result { FAIL, SUCCESS }
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Enumerated(EnumType.STRING)

@ -3,7 +3,7 @@ package se.su.dsv.scipro.match;
import se.su.dsv.scipro.system.Program;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.io.Serializable;
import java.util.Date;
import java.util.Objects;
@ -24,7 +24,7 @@ public class IdeaParticipation implements Serializable {
}
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne

@ -6,7 +6,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.Set;
public class IdeaRepositoryImpl extends AbstractRepository implements IdeaRepository {

@ -26,7 +26,7 @@ import se.su.dsv.scipro.util.Pair;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.text.MessageFormat;
import java.time.Clock;
import java.time.LocalDate;

@ -3,7 +3,7 @@ package se.su.dsv.scipro.match;
import se.su.dsv.scipro.system.LazyDeletableDomainObject;
import se.su.dsv.scipro.system.ResearchArea;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Objects;
@ -14,7 +14,7 @@ import java.util.Set;
public class Keyword extends LazyDeletableDomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String keyword;

@ -12,7 +12,7 @@ import se.su.dsv.scipro.system.ResearchArea;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
public class KeywordServiceImpl extends AbstractServiceImpl<Keyword,Long> implements KeywordService {

@ -4,7 +4,7 @@ import com.querydsl.core.annotations.QueryInit;
import se.su.dsv.scipro.system.DomainObject;
import se.su.dsv.scipro.system.User;
import javax.persistence.*;
import jakarta.persistence.*;
import java.util.Objects;
@Entity
@ -12,7 +12,7 @@ import java.util.Objects;
@Table(name = "idea_match")
public class Match extends DomainObject {
@Id
@GeneratedValue
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(optional = false)

@ -13,7 +13,7 @@ import se.su.dsv.scipro.system.User;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;

@ -5,7 +5,7 @@ import se.su.dsv.scipro.system.AbstractServiceImpl;
import javax.inject.Inject;
import javax.inject.Provider;
import javax.persistence.EntityManager;
import jakarta.persistence.EntityManager;
public class MatchServiceImpl extends AbstractServiceImpl<Match,Long> implements MatchService {
@Inject

Some files were not shown because too many files have changed in this diff Show More