Skip to content
This repository has been archived by the owner on Jul 11, 2024. It is now read-only.

DRAFT: Chore/bump to 2024 #29

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion lab/00-rewards-common/build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
apply plugin: 'java-library'

dependencies {
api "org.hibernate:hibernate-entitymanager"
api "org.hibernate.orm:hibernate-core"
api "com.fasterxml.jackson.core:jackson-annotations"
}
Original file line number Diff line number Diff line change
@@ -1,21 +1,4 @@
package common.datetime;

public class DateInterval {

private SimpleDate start;

private SimpleDate end;

public DateInterval(SimpleDate start, SimpleDate end) {
this.start = start;
this.end = end;
}

public SimpleDate getStart() {
return start;
}

public SimpleDate getEnd() {
return end;
}
public record DateInterval(SimpleDate start, SimpleDate end) {
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package common.datetime;

import java.io.Serial;
import java.io.Serializable;
import java.util.Calendar;
import java.util.Date;
Expand All @@ -11,6 +12,7 @@
*/
public class SimpleDate implements Serializable {

@Serial
private static final long serialVersionUID = 2285962420279644602L;

private GregorianCalendar base;
Expand Down Expand Up @@ -57,7 +59,7 @@ public Date asDate() {

/**
* Returns this date in milliseconds since 1970.
* @return
* @return this date in milliseconds since 1970
*/
public long inMilliseconds() {
return asDate().getTime();
Expand All @@ -69,11 +71,10 @@ public int compareTo(Object date) {
}

public boolean equals(Object day) {
if (!(day instanceof SimpleDate)) {
if (!(day instanceof SimpleDate other)) {
return false;
}
SimpleDate other = (SimpleDate) day;
return (base.equals(other.base));
return (base.equals(other.base));
}

public int hashCode() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
*/
public class SimpleDateEditor extends PropertyEditorSupport {

private DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, Locale.ENGLISH);
private final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.LONG, Locale.ENGLISH);

@Override
public String getAsText() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,21 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import javax.persistence.Embeddable;
import jakarta.persistence.Embeddable;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;

/**
* A representation of money.
*
* A value object. Immutable.
*/
@Embeddable
public class MonetaryAmount implements Serializable {

@Serial
private static final long serialVersionUID = -3734467432803577280L;

private BigDecimal value;
Expand All @@ -38,7 +40,7 @@ public MonetaryAmount(double value) {
}

@SuppressWarnings("unused")
private MonetaryAmount() {
public MonetaryAmount() {
}

private void initValue(BigDecimal value) {
Expand All @@ -51,7 +53,7 @@ private void initValue(BigDecimal value) {
* @return the monetary amount object
*/
public static MonetaryAmount valueOf(String string) {
if (string == null || string.length() == 0) {
if (string == null || string.isEmpty()) {
throw new IllegalArgumentException("The monetary amount value is required");
}
if (string.startsWith("$")) {
Expand Down
15 changes: 8 additions & 7 deletions lab/00-rewards-common/src/main/java/common/money/Percentage.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,20 @@
import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;

import javax.persistence.Embeddable;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import jakarta.persistence.Embeddable;

/**
* A percentage. Represented as a decimal value with scale 2 between 0.00 and 1.00.
*
* A value object. Immutable.
*/
@Embeddable
public class Percentage implements Serializable {

@Serial
private static final long serialVersionUID = 8077279865855620752L;

private BigDecimal value;
Expand All @@ -24,7 +25,7 @@ public class Percentage implements Serializable {
* Create a new percentage from the specified value. Value must be between 0 and 1. For example, value .45
* represents 45%. If the value has more than two digits past the decimal point it will be rounded up. For example,
* value .24555 rounds up to .25.
* @param the percentage value
* @param value the percentage value
* @throws IllegalArgumentException if the value is not between 0 and 1
*/
@JsonCreator
Expand All @@ -36,20 +37,20 @@ public Percentage(BigDecimal value) {
* Create a new percentage from the specified double value. Converts it to a BigDecimal with exact precision. Value
* must be between 0 and 1. For example, value .45 represents 45%. If the value has more than two digits past the
* decimal point it will be rounded up. For example, value .24555 rounds up to .25.
* @param the percentage value as a double
* @param value the percentage value as a double
* @throws IllegalArgumentException if the value is not between 0 and 1
*/
public Percentage(double value) {
initValue(BigDecimal.valueOf(value));
}

@SuppressWarnings("unused")
private Percentage() {
public Percentage() {
}

private void initValue(BigDecimal value) {
value = value.setScale(2, RoundingMode.HALF_UP);
if (value.compareTo(BigDecimal.ZERO) == -1 || value.compareTo(BigDecimal.ONE) == 1) {
if (value.compareTo(BigDecimal.ZERO) < 0 || value.compareTo(BigDecimal.ONE) > 0) {
throw new IllegalArgumentException("Percentage value must be between 0 and 1; your value was " + value);
}
this.value = value;
Expand All @@ -61,7 +62,7 @@ private void initValue(BigDecimal value) {
* @return the percentage object
*/
public static Percentage valueOf(String string) {
if (string == null || string.length() == 0) {
if (string == null || string.isEmpty()) {
throw new IllegalArgumentException("The percentage value is required");
}
boolean percent = string.endsWith("%");
Expand Down
191 changes: 116 additions & 75 deletions lab/00-rewards-common/src/main/resources/rewards/testdb/data.sql
Original file line number Diff line number Diff line change
@@ -1,78 +1,119 @@
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456789', 'Keith and Keri Donald');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456001', 'Dollie R. Adams');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456002', 'Cornelia J. Andresen');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456003', 'Coral Villareal Betancourt');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456004', 'Chad I. Cobbs');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456005', 'Michael C. Feller');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456006', 'Michael J. Grover');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456007', 'John C. Howard');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456008', 'Ida Ketterer');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456009', 'Laina Ochoa Lucero');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456010', 'Wesley M. Mayo');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456011', 'Leslie F. Mcclary');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456012', 'John D. Mudra');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456013', 'Pietronella J. Nielsen');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456014', 'John S. Oleary');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456015', 'Glenda D. Smith');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456016', 'Willemina O. Thygesen');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456017', 'Antje Vogt');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456018', 'Julia Weber');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456019', 'Mark T. Williams');
insert into T_ACCOUNT (NUMBER, NAME)
values ('123456020', 'Christine J. Wilson');

insert into T_ACCOUNT (NUMBER, NAME) values ('123456789', 'Keith and Keri Donald');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456001', 'Dollie R. Adams');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456002', 'Cornelia J. Andresen');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456003', 'Coral Villareal Betancourt');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456004', 'Chad I. Cobbs');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456005', 'Michael C. Feller');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456006', 'Michael J. Grover');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456007', 'John C. Howard');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456008', 'Ida Ketterer');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456009', 'Laina Ochoa Lucero');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456010', 'Wesley M. Mayo');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456011', 'Leslie F. Mcclary');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456012', 'John D. Mudra');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456013', 'Pietronella J. Nielsen');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456014', 'John S. Oleary');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456015', 'Glenda D. Smith');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456016', 'Willemina O. Thygesen');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456017', 'Antje Vogt');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456018', 'Julia Weber');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456019', 'Mark T. Williams');
insert into T_ACCOUNT (NUMBER, NAME) values ('123456020', 'Christine J. Wilson');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (0, '1234123412341234');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (1, '1234123412340001');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (2, '1234123412340002');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (3, '1234123412340003');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (4, '1234123412340004');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (5, '1234123412340005');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (6, '1234123412340006');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (7, '1234123412340007');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (8, '1234123412340008');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (9, '1234123412340009');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (10, '1234123412340010');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (11, '1234123412340011');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (12, '1234123412340012');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (13, '1234123412340013');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (14, '1234123412340014');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (15, '1234123412340015');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (16, '1234123412340016');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (17, '1234123412340017');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (18, '1234123412340018');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (19, '1234123412340019');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER)
values (20, '1234123412340020');

insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (0, '1234123412341234');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (1, '1234123412340001');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (2, '1234123412340002');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (3, '1234123412340003');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (4, '1234123412340004');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (5, '1234123412340005');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (6, '1234123412340006');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (7, '1234123412340007');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (8, '1234123412340008');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (9, '1234123412340009');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (10, '1234123412340010');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (11, '1234123412340011');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (12, '1234123412340012');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (13, '1234123412340013');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (14, '1234123412340014');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (15, '1234123412340015');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (16, '1234123412340016');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (17, '1234123412340017');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (18, '1234123412340018');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (19, '1234123412340019');
insert into T_ACCOUNT_CREDIT_CARD (ACCOUNT_ID, NUMBER) values (20, '1234123412340020');
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (0, 'Annabelle', .5, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (0, 'Corgan', .5, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Antolin', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Argus', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Gian', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Argeo', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (8, 'Kai', .33, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (8, 'Kasper', .33, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (8, 'Ernst', .34, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (12, 'Brian', .75, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (12, 'Shelby', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (15, 'Charles', .50, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (15, 'Thomas', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (15, 'Neil', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (17, 'Daniel', 1.0, 0.00);

insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (0, 'Annabelle', .5, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (0, 'Corgan', .5, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Antolin', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Argus', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Gian', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (3, 'Argeo', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (8, 'Kai', .33, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (8, 'Kasper', .33, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (8, 'Ernst', .34, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (12, 'Brian', .75, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (12, 'Shelby', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (15, 'Charles', .50, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (15, 'Thomas', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (15, 'Neil', .25, 0.00);
insert into T_ACCOUNT_BENEFICIARY (ACCOUNT_ID, NAME, ALLOCATION_PERCENTAGE, SAVINGS)
values (17, 'Daniel', 1.0, 0.00);

insert into T_RESTAURANT (MERCHANT_NUMBER, NAME, BENEFIT_PERCENTAGE, BENEFIT_AVAILABILITY_POLICY)
values ('1234567890', 'AppleBees', .08, 'A');
insert into T_RESTAURANT (MERCHANT_NUMBER, NAME, BENEFIT_PERCENTAGE, BENEFIT_AVAILABILITY_POLICY)
values ('1234567890', 'AppleBees', .08, 'A');
Loading