blob: f5ec1d94d95df8bac515a7013fa942469f4c426f [file] [log] [blame]
/*
* Copyright 2017 The Mifos Initiative.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.mifos.deposit.service.internal.repository;
import io.mifos.core.mariadb.util.LocalDateTimeConverter;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Convert;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import java.time.LocalDateTime;
import java.util.List;
@Entity
@Table(name = "shed_product_definitions")
public class ProductDefinitionEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id", nullable = false)
private Long id;
@Column(name = "a_type", nullable = false)
private String type;
@Column(name = "identifier", nullable = false, unique = true, length = 32)
private String identifier;
@Column(name = "a_name", nullable = false, length = 256)
private String name;
@Column(name = "description", nullable = true, length = 4096)
private String description;
@OneToOne(mappedBy = "productDefinition", cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
private CurrencyEntity currency;
@Column(name = "minimum_balance", nullable = true)
private Double minimumBalance;
@Column(name = "equity_ledger_identifier", nullable = false)
private String equityLedgerIdentifier;
@Column(name = "expense_account_identifier", nullable = false)
private String expenseAccountIdentifier;
@Column(name = "interest", nullable = true)
private Double interest;
@OneToOne(mappedBy = "productDefinition", cascade = CascadeType.ALL, optional = false, fetch = FetchType.EAGER)
private TermEntity term;
@OneToMany(mappedBy = "productDefinition", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private List<ChargeEntity> charges;
@Column(name = "is_flexible", nullable = false)
private Boolean flexible;
@Column(name = "is_active", nullable = false)
private Boolean active;
@Column(name = "created_by", nullable = false, length = 32)
private String createdBy;
@Convert(converter = LocalDateTimeConverter.class)
@Column(name = "created_on", nullable = false)
private LocalDateTime createdOn;
@Column(name = "last_modified_by", nullable = false, length = 32)
private String lastModifiedBy;
@Convert(converter = LocalDateTimeConverter.class)
@Column(name = "last_modified_on", nullable = false)
private LocalDateTime lastModifiedOn;
public ProductDefinitionEntity() {
super();
}
public Long getId() {
return this.id;
}
public void setId(final Long id) {
this.id = id;
}
public String getType() {
return this.type;
}
public void setType(final String type) {
this.type = type;
}
public String getIdentifier() {
return this.identifier;
}
public void setIdentifier(final String identifier) {
this.identifier = identifier;
}
public String getName() {
return this.name;
}
public void setName(final String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(final String description) {
this.description = description;
}
public CurrencyEntity getCurrency() {
return this.currency;
}
public void setCurrency(final CurrencyEntity currency) {
this.currency = currency;
this.currency.setProductDefinition(this);
}
public Double getMinimumBalance() {
return this.minimumBalance;
}
public void setMinimumBalance(final Double minimumBalance) {
this.minimumBalance = minimumBalance;
}
public String getEquityLedgerIdentifier() {
return this.equityLedgerIdentifier;
}
public void setEquityLedgerIdentifier(final String equityLedgerIdentifier) {
this.equityLedgerIdentifier = equityLedgerIdentifier;
}
public String getExpenseAccountIdentifier() {
return this.expenseAccountIdentifier;
}
public void setExpenseAccountIdentifier(final String expenseAccountIdentifier) {
this.expenseAccountIdentifier = expenseAccountIdentifier;
}
public Double getInterest() {
return this.interest;
}
public void setInterest(final Double interest) {
this.interest = interest;
}
public TermEntity getTerm() {
return this.term;
}
public void setTerm(final TermEntity term) {
this.term = term;
this.term.setProductDefinition(this);
}
public List<ChargeEntity> getCharges() {
return this.charges;
}
public void setCharges(final List<ChargeEntity> charges) {
this.charges = charges;
charges.forEach(chargeEntity -> chargeEntity.setProductDefinition(this));
}
public Boolean getFlexible() {
return this.flexible;
}
public void setFlexible(final Boolean flexible) {
this.flexible = flexible;
}
public Boolean getActive() {
return this.active;
}
public void setActive(final Boolean active) {
this.active = active;
}
public String getCreatedBy() {
return this.createdBy;
}
public void setCreatedBy(final String createdBy) {
this.createdBy = createdBy;
}
public LocalDateTime getCreatedOn() {
return this.createdOn;
}
public void setCreatedOn(final LocalDateTime createdOn) {
this.createdOn = createdOn;
}
public String getLastModifiedBy() {
return this.lastModifiedBy;
}
public void setLastModifiedBy(final String lastModifiedBy) {
this.lastModifiedBy = lastModifiedBy;
}
public LocalDateTime getLastModifiedOn() {
return this.lastModifiedOn;
}
public void setLastModifiedOn(final LocalDateTime lastModifiedOn) {
this.lastModifiedOn = lastModifiedOn;
}
}