Skip to content

Commit 747330c

Browse files
committed
more changes
1 parent 5bf7f59 commit 747330c

File tree

16 files changed

+391
-5
lines changed

16 files changed

+391
-5
lines changed

hibernate/ifinances/src/main/java/com/rakeshv/ifinances/models/Account.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import javax.persistence.CascadeType;
1010
import javax.persistence.Column;
1111
import javax.persistence.Entity;
12+
import javax.persistence.EnumType;
13+
import javax.persistence.Enumerated;
1214
import javax.persistence.GeneratedValue;
1315
import javax.persistence.GenerationType;
1416
import javax.persistence.Id;
@@ -43,6 +45,10 @@ public class Account {
4345
@Column(name = "ACCOUNT_ID")
4446
private Long accountId;
4547

48+
@Column(name = "ACCOUNT_TYPE")
49+
@Enumerated(value = EnumType.STRING)
50+
private AccountTypeEnum accountTypeEnum;
51+
4652
@ManyToMany(cascade= CascadeType.ALL)
4753
@JoinTable(name="USER_ACCOUNT", joinColumns=@JoinColumn(name="ACCOUNT_ID"),
4854
inverseJoinColumns=@JoinColumn(name="USER_ID"))
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
public enum AccountTypeEnum {
4+
SAVINGS,
5+
CHECKING,
6+
LOAN
7+
;
8+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
import lombok.NoArgsConstructor;
8+
9+
import javax.persistence.Column;
10+
import javax.persistence.DiscriminatorValue;
11+
import javax.persistence.Entity;
12+
import javax.persistence.GeneratedValue;
13+
import javax.persistence.Id;
14+
import javax.persistence.Table;
15+
import javax.persistence.Temporal;
16+
import javax.persistence.TemporalType;
17+
import java.math.BigDecimal;
18+
import java.util.Date;
19+
20+
@EqualsAndHashCode(callSuper = true)
21+
@Data
22+
@AllArgsConstructor
23+
@NoArgsConstructor
24+
@Builder
25+
@Entity
26+
@DiscriminatorValue("BOND")
27+
public class Bond extends Investment{
28+
29+
@Column(name = "VALUE")
30+
private BigDecimal value;
31+
32+
@Column(name = "INTEREST_RATE")
33+
private BigDecimal interestRate;
34+
35+
@Temporal(value = TemporalType.DATE)
36+
@Column(name = "MATURITY_DATE")
37+
private Date maturityDate;
38+
39+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import javax.persistence.Column;
9+
import javax.persistence.Entity;
10+
import javax.persistence.Id;
11+
import javax.persistence.IdClass;
12+
import javax.persistence.Table;
13+
14+
@Data
15+
@AllArgsConstructor
16+
@NoArgsConstructor
17+
@Builder
18+
@Entity
19+
@Table(name = "currency")
20+
@IdClass(CurrencyId.class)
21+
public class Currency {
22+
23+
@Id
24+
@Column(name = "NAME")
25+
private String name;
26+
27+
@Id
28+
@Column(name = "COUNTRY_NAME")
29+
private String countryName;
30+
31+
@Column(name = "SYMBOL")
32+
private String symbol;
33+
34+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import java.io.Serializable;
9+
10+
@Data
11+
@AllArgsConstructor
12+
@NoArgsConstructor
13+
@Builder
14+
public class CurrencyId implements Serializable {
15+
private String name;
16+
private String countryName;
17+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import javax.persistence.CascadeType;
9+
import javax.persistence.Column;
10+
import javax.persistence.DiscriminatorColumn;
11+
import javax.persistence.Entity;
12+
import javax.persistence.GeneratedValue;
13+
import javax.persistence.GenerationType;
14+
import javax.persistence.Id;
15+
import javax.persistence.Inheritance;
16+
import javax.persistence.InheritanceType;
17+
import javax.persistence.JoinColumn;
18+
import javax.persistence.ManyToOne;
19+
import javax.persistence.Table;
20+
import javax.persistence.TableGenerator;
21+
import java.util.Date;
22+
23+
@Data
24+
@AllArgsConstructor
25+
@NoArgsConstructor
26+
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
27+
@DiscriminatorColumn(name = "INVESTMENT_TYPE")
28+
@Entity
29+
@Table(name = "investment")
30+
public abstract class Investment {
31+
32+
@Id
33+
@GeneratedValue(generator = "key_generator", strategy = GenerationType.TABLE)
34+
@TableGenerator(table = "ifinances_keys", pkColumnName = "PK_NAME", pkColumnValue = "PK_VALUE", name = "key_generator")
35+
@Column(name = "INVESTMENT_ID")
36+
private Long investmentId;
37+
38+
@ManyToOne(cascade = CascadeType.ALL)
39+
@JoinColumn(name = "PORTFOLIO_ID")
40+
private Portfolio portfolio;
41+
42+
@Column(name = "NAME")
43+
protected String name;
44+
45+
@Column(name = "ISSUER")
46+
protected String issuer;
47+
48+
@Column(name = "PURCHASE_DATE")
49+
protected Date purchaseDate;
50+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import javax.persistence.CascadeType;
9+
import javax.persistence.Column;
10+
import javax.persistence.Entity;
11+
import javax.persistence.GeneratedValue;
12+
import javax.persistence.Id;
13+
import javax.persistence.JoinColumn;
14+
import javax.persistence.JoinColumns;
15+
import javax.persistence.ManyToOne;
16+
import javax.persistence.Table;
17+
18+
@Data
19+
@AllArgsConstructor
20+
@NoArgsConstructor
21+
@Builder
22+
@Entity
23+
@Table(name = "market")
24+
public class Market {
25+
@Id
26+
@GeneratedValue
27+
@Column(name = "MARKET_ID")
28+
private Long marketId;
29+
30+
@ManyToOne(cascade = CascadeType.ALL)
31+
@JoinColumns({
32+
@JoinColumn(name = "CURRENCY_NAME", referencedColumnName = "NAME"),
33+
@JoinColumn(name = "COUNTRY_NAME", referencedColumnName = "COUNTRY_NAME")
34+
})
35+
private Currency currency;
36+
37+
@Column(name = "MARKET_NAME")
38+
private String marketName;
39+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.NoArgsConstructor;
7+
8+
import javax.persistence.Column;
9+
import javax.persistence.Entity;
10+
import javax.persistence.GeneratedValue;
11+
import javax.persistence.Id;
12+
import javax.persistence.OneToMany;
13+
import javax.persistence.Table;
14+
import java.util.ArrayList;
15+
import java.util.List;
16+
17+
@Data
18+
@AllArgsConstructor
19+
@NoArgsConstructor
20+
@Builder
21+
@Entity
22+
@Table(name = "portfolio")
23+
public class Portfolio {
24+
@Id
25+
@GeneratedValue
26+
@Column(name = "PORTFOLIO_ID")
27+
private Long portfolioId;
28+
29+
@Column(name = "NAME")
30+
private String name;
31+
32+
@OneToMany(mappedBy = "portfolio")
33+
private List<Investment> investments = new ArrayList<>();
34+
35+
public List<Investment> getInvestments() {
36+
if (investments == null)
37+
investments = new ArrayList<>();
38+
return investments;
39+
}
40+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.rakeshv.ifinances.models;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Builder;
5+
import lombok.Data;
6+
import lombok.EqualsAndHashCode;
7+
import lombok.NoArgsConstructor;
8+
9+
import javax.persistence.Column;
10+
import javax.persistence.DiscriminatorValue;
11+
import javax.persistence.Entity;
12+
import java.math.BigDecimal;
13+
14+
@EqualsAndHashCode(callSuper = true)
15+
@Data
16+
@AllArgsConstructor
17+
@NoArgsConstructor
18+
@Builder
19+
@Entity
20+
@DiscriminatorValue("ST")
21+
public class Stock extends Investment {
22+
23+
@Column(name = "SHARE_PRICE")
24+
private BigDecimal sharePrice;
25+
26+
@Column(name = "QUANTITY")
27+
private BigDecimal quantity;
28+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.rakeshv.ifinances.repositories;
2+
3+
import com.rakeshv.ifinances.models.Bond;
4+
import org.springframework.data.jpa.repository.JpaRepository;
5+
import org.springframework.stereotype.Repository;
6+
7+
@Repository
8+
public interface BondRepository extends JpaRepository<Bond, Long> {
9+
}

0 commit comments

Comments
 (0)