Skip to content

Commit

Permalink
Add type safety to sequence generators
Browse files Browse the repository at this point in the history
  • Loading branch information
barreiro authored Apr 15, 2024
1 parent 34d7d62 commit 120ced7
Show file tree
Hide file tree
Showing 19 changed files with 141 additions and 143 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,24 @@

import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.validation.constraints.NotNull;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
import org.hibernate.annotations.Parameter;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

@Entity(name = "ActionLog")
public class ActionLogDAO extends PersistentLogDAO {

@Id
@GenericGenerator(
name = "actionlog_id_generator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@org.hibernate.annotations.Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "actionlog_id_generator")
@GeneratedValue(strategy = SEQUENCE, generator = "actionlog_id_generator")
public Long id;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package io.hyperfoil.tools.horreum.entity;

import java.util.Collection;
import java.util.List;

import io.hyperfoil.tools.horreum.hibernate.JsonBinaryType;
Expand All @@ -12,7 +11,6 @@
import jakarta.persistence.FetchType;
import jakarta.persistence.ForeignKey;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
Expand All @@ -23,25 +21,25 @@
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import org.hibernate.id.enhanced.SequenceStyleGenerator;

import com.fasterxml.jackson.databind.JsonNode;

import io.hyperfoil.tools.horreum.entity.data.TestDAO;
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.enhanced.SequenceStyleGenerator.INCREMENT_PARAM;

@Entity(name = "ExperimentProfile")
@Table(name = "experiment_profile")
public class ExperimentProfileDAO extends PanacheEntityBase {
@Id
@GenericGenerator(
name = "experimentProfileIdGenerator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "experimentProfileIdGenerator")
@GeneratedValue(strategy = SEQUENCE, generator = "experimentProfileIdGenerator")
public Integer id;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package io.hyperfoil.tools.horreum.entity.alerting;

import com.fasterxml.jackson.databind.node.ObjectNode;
import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import io.hyperfoil.tools.horreum.hibernate.JsonBinaryType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
Expand All @@ -16,24 +16,22 @@
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import org.hibernate.id.enhanced.SequenceStyleGenerator;

import com.fasterxml.jackson.databind.JsonNode;

import io.quarkus.hibernate.orm.panache.PanacheEntityBase;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

@Entity(name = "ChangeDetection")
@JsonIgnoreType
public class ChangeDetectionDAO extends PanacheEntityBase {
@Id
@GenericGenerator(
name = "changeDetectionIdGenerator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "changeDetectionIdGenerator")
@GeneratedValue(strategy = SEQUENCE, generator = "changeDetectionIdGenerator")
public Integer id;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.hyperfoil.tools.horreum.entity.alerting;

import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import jakarta.persistence.*;
import jakarta.validation.constraints.NotNull;

Expand All @@ -8,7 +9,10 @@
import io.hyperfoil.tools.horreum.entity.data.RunDAO;
import io.hyperfoil.tools.horreum.entity.data.TestDAO;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
import org.hibernate.annotations.Parameter;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

/**
* This table is meant to host logged events with relation to {@link DatasetDAO datasets},
Expand All @@ -20,12 +24,10 @@ public class DatasetLogDAO extends PersistentLogDAO {
@Id
@GenericGenerator(
name = "datasetlog_id_generator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@org.hibernate.annotations.Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "datasetlog_id_generator")
@GeneratedValue(strategy = SEQUENCE, generator = "datasetlog_id_generator")
public Long id;

@ManyToOne(fetch = FetchType.LAZY, optional = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
import java.time.Instant;
import java.util.Objects;

import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import io.hyperfoil.tools.horreum.hibernate.JsonBinaryType;
import jakarta.persistence.Column;
import jakarta.persistence.ConstraintMode;
import jakarta.persistence.Entity;
import jakarta.persistence.ForeignKey;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
Expand All @@ -19,13 +19,15 @@
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import org.hibernate.id.enhanced.SequenceStyleGenerator;

import com.fasterxml.jackson.databind.node.ArrayNode;

import io.hyperfoil.tools.horreum.entity.data.TestDAO;
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

// If the test has no dataset matching the rule uploaded for more than this duration (in ms)
// we send a notification about missing regular upload. If the value is non-positive
// no notifications are emitted.
Expand All @@ -35,12 +37,10 @@ public class MissingDataRuleDAO extends PanacheEntityBase {
@Id
@GenericGenerator(
name = "mdrIdGenerator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mdrIdGenerator")
@GeneratedValue(strategy = SEQUENCE, generator = "mdrIdGenerator")
public Integer id;

public String name;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,26 @@
package io.hyperfoil.tools.horreum.entity.alerting;


import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import jakarta.persistence.*;

import io.hyperfoil.tools.horreum.entity.PersistentLogDAO;
import io.hyperfoil.tools.horreum.entity.data.RunDAO;
import io.hyperfoil.tools.horreum.entity.data.TestDAO;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
import org.hibernate.annotations.Parameter;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

@Entity(name = "TransformationLog")
public class TransformationLogDAO extends PersistentLogDAO {
@Id
@GenericGenerator(
name = "transformationlog_id_generator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@org.hibernate.annotations.Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "transformationlog_id_generator")
@GeneratedValue(strategy = SEQUENCE, generator = "transformationlog_id_generator")
public Long id;

@ManyToOne(fetch = FetchType.LAZY, optional = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

import java.util.Set;

import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import io.hyperfoil.tools.horreum.hibernate.JsonBinaryType;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.OneToMany;
import jakarta.validation.constraints.NotNull;
Expand All @@ -19,12 +19,14 @@
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import org.hibernate.id.enhanced.SequenceStyleGenerator;

import com.fasterxml.jackson.databind.JsonNode;

import io.quarkus.hibernate.orm.panache.PanacheEntityBase;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

/**
* Variable emits a single value from the {@link RunDAO#data}
* using {@link LabelDAO labels} and
Expand All @@ -37,12 +39,10 @@ public class VariableDAO extends PanacheEntityBase {
@Id
@GenericGenerator(
name = "variableIdGenerator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "variableIdGenerator")
@GeneratedValue(strategy = SEQUENCE, generator = "variableIdGenerator")
public Integer id;

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

import java.util.List;

import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import jakarta.persistence.ConstraintMode;
import jakarta.persistence.ElementCollection;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.ForeignKey;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.OneToOne;
Expand All @@ -20,11 +20,13 @@
import org.hibernate.annotations.FetchMode;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;
import org.hibernate.id.enhanced.SequenceStyleGenerator;

import io.hyperfoil.tools.horreum.entity.data.TestDAO;
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;

/**
* Records parties interested in new {@link ChangeDAO changes} in given test.
* It's not possible to subscribe to individual {@link VariableDAO}; all variables are watched.
Expand All @@ -35,12 +37,10 @@ public class WatchDAO extends PanacheEntityBase {
@Id
@GenericGenerator(
name = "subscriptionIdGenerator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "subscriptionIdGenerator")
@GeneratedValue(strategy = SEQUENCE, generator = "subscriptionIdGenerator")
public Integer id;

@OneToOne(fetch = FetchType.LAZY, optional = false)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,33 +3,33 @@
import com.fasterxml.jackson.databind.node.ObjectNode;
import io.hyperfoil.tools.horreum.api.data.Access;
import io.hyperfoil.tools.horreum.api.data.datastore.DatastoreType;
import io.hyperfoil.tools.horreum.entity.SeqIdGenerator;
import io.hyperfoil.tools.horreum.hibernate.JsonBinaryType;
import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.validation.constraints.NotNull;
import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.JdbcTypeCode;
import org.hibernate.annotations.Parameter;
import org.hibernate.annotations.Type;
import org.hibernate.id.enhanced.SequenceStyleGenerator;
import org.hibernate.type.SqlTypes;

import static jakarta.persistence.GenerationType.SEQUENCE;
import static org.hibernate.id.OptimizableGenerator.INCREMENT_PARAM;
import static org.hibernate.id.enhanced.SequenceStyleGenerator.SEQUENCE_PARAM;

@Entity(name = "backendconfig")
public class DatastoreConfigDAO extends PanacheEntityBase {
@Id
@GenericGenerator(
name = "datastoreIdGenerator",
strategy = "io.hyperfoil.tools.horreum.entity.SeqIdGenerator",
parameters = {
@Parameter(name = SequenceStyleGenerator.SEQUENCE_PARAM, value = "backend_id_seq"),
@Parameter(name = SequenceStyleGenerator.INCREMENT_PARAM, value = "1"),
}
type = SeqIdGenerator.class,
parameters = { @Parameter(name = SEQUENCE_PARAM, value = "backend_id_seq"), @Parameter(name = INCREMENT_PARAM, value = "1") }
)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "datastoreIdGenerator")
@GeneratedValue(strategy = SEQUENCE, generator = "datastoreIdGenerator")
@Column(name="id")
public Integer id;

Expand Down
Loading

0 comments on commit 120ced7

Please sign in to comment.