Skip to content

Commit f425948

Browse files
committed
Switch A52 report to use generic A5X base
1 parent 88d1f23 commit f425948

File tree

5 files changed

+8
-145
lines changed

5 files changed

+8
-145
lines changed

publication/src/main/scala/hmda/publication/reports/aggregate/A52.scala

Lines changed: 7 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -2,67 +2,21 @@ package hmda.publication.reports.aggregate
22

33
import akka.NotUsed
44
import akka.stream.scaladsl.Source
5-
import hmda.model.publication.reports.{ ApplicantIncome, Disposition, MSAReport }
65
import hmda.publication.reports._
7-
import hmda.publication.reports.util.ReportUtil._
8-
import hmda.publication.reports.util.ReportsMetaDataLookup
96
import hmda.query.model.filing.LoanApplicationRegisterQuery
107

118
import scala.concurrent.Future
129

13-
case class A52(
14-
year: Int,
15-
msa: MSAReport,
16-
applicantIncomes: List[ApplicantIncome],
17-
total: List[Disposition],
18-
reportDate: String = formattedCurrentDate,
19-
table: String = A52.metaData.reportTable,
20-
description: String = A52.metaData.description
21-
) extends AggregateReport
22-
2310
object A52 {
24-
val metaData = ReportsMetaDataLookup.values("A52")
25-
val dispositions = metaData.dispositions
2611

27-
// Table filters:
28-
// Loan Type 1
29-
// Property Type 1,2
30-
// Purpose of Loan 1
12+
def filters(lar: LoanApplicationRegisterQuery): Boolean = {
13+
(lar.loanType == 1) &&
14+
(lar.propertyType == 1 || lar.propertyType == 2) &&
15+
(lar.purpose == 1)
16+
}
17+
3118
def generate[ec: EC, mat: MAT, as: AS](
3219
larSource: Source[LoanApplicationRegisterQuery, NotUsed],
3320
fipsCode: Int
34-
): Future[A52] = {
35-
val lars = larSource
36-
.filter(lar => lar.msa != "NA")
37-
.filter(lar => lar.msa.toInt == fipsCode)
38-
.filter { lar =>
39-
(lar.loanType == 1) &&
40-
(lar.propertyType == 1 || lar.propertyType == 2) &&
41-
(lar.purpose == 1)
42-
}
43-
44-
val larsWithIncome = lars.filter(lar => lar.income != "NA")
45-
46-
val msa = msaReport(fipsCode.toString)
47-
48-
val incomeIntervals = calculateMedianIncomeIntervals(fipsCode)
49-
val applicantIncomesF = applicantIncomesWithBorrowerCharacteristics(larsWithIncome, incomeIntervals, dispositions)
50-
51-
val yearF = calculateYear(larSource)
52-
val totalF = calculateDispositions(lars, dispositions)
53-
54-
for {
55-
applicantIncomes <- applicantIncomesF
56-
year <- yearF
57-
total <- totalF
58-
} yield {
59-
60-
A52(
61-
year,
62-
msa,
63-
applicantIncomes,
64-
total
65-
)
66-
}
67-
}
21+
): Future[A5X] = A5X.generate("A52", larSource, fipsCode, filters)
6822
}

publication/src/main/scala/hmda/publication/reports/aggregate/AggregateReports.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import akka.stream.ActorMaterializer
55
import akka.util.Timeout
66
import com.typesafe.config.ConfigFactory
77
import hmda.query.repository.filing.FilingCassandraRepository
8-
import hmda.publication.reports.protocol.aggregate.A52Protocol._
8+
import hmda.publication.reports.protocol.aggregate.A5XProtocol._
99

1010
import scala.concurrent.Future
1111
import scala.concurrent.duration._

publication/src/main/scala/hmda/publication/reports/protocol/aggregate/A52Protocol.scala

Lines changed: 0 additions & 50 deletions
This file was deleted.

publication/src/test/scala/hmda/publication/reports/aggregate/A52ProtocolSpec.scala

Lines changed: 0 additions & 31 deletions
This file was deleted.

publication/src/test/scala/hmda/publication/reports/aggregate/AggregateReportGenerators.scala

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,6 @@ import hmda.publication.reports.util.DateUtil._
77
import org.scalacheck.Gen
88

99
object AggregateReportGenerators {
10-
implicit def a52Gen: Gen[A52] = {
11-
for {
12-
msa <- msaReportGen
13-
year = Calendar.getInstance().get(Calendar.YEAR)
14-
reportDate = formatDate(Calendar.getInstance().toInstant)
15-
applicantIncomes <- Gen.listOfN(5, applicantIncomeGen)
16-
total <- totalDispositionGen
17-
} yield A52(year, msa, applicantIncomes, total, reportDate)
18-
}
19-
2010
implicit def a5XGen: Gen[A5X] = {
2111
for {
2212
msa <- msaReportGen

0 commit comments

Comments
 (0)