Skip to content

Commit a772f50

Browse files
author
Nick Grippin
authored
Merge pull request cfpb#1064 from schbetsy/disclosure
D5-1
2 parents 617fd36 + 34d45a3 commit a772f50

File tree

79 files changed

+2216
-52
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+2216
-52
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ This module is responsible for maintaining the objects used in our platform
5252

5353
This module is responsible for geographic translation (e.g. state number -> state code)
5454

55+
### Publication
56+
57+
This module generates Aggregate and Disclosure reports, as required by HMDA statute.
58+
5559
## Dependencies
5660

5761
### Java 8 SDK

api/src/main/resources/application-dev.conf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ akka {
2626

2727
}
2828

29-
constructr.coordination.nodes = [${?ZOOKEEPER_HOST}":"${?ZOOKEEPER_PORT}]
29+
constructr.coordination.nodes = [${hmda.zookeeperHost}":"${hmda.zookeeperPort}]
3030

3131
clustering {
3232
name = "hmda"
@@ -58,6 +58,10 @@ hmda {
5858
}
5959
isDemo = true
6060
actor-flow-parallelism = 4
61+
zookeeperHost = "192.168.99.100"
62+
zookeeperHost = ${?ZOOKEEPER_HOST}
63+
zookeeperPort = 2181
64+
zookeeperPort = ${?ZOOKEEPER_PORT}
6165
}
6266

6367

api/src/main/resources/application.conf

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ akka {
3232

3333
}
3434

35-
constructr.coordination.nodes = [${?ZOOKEEPER_HOST}":"${?ZOOKEEPER_PORT}]
35+
constructr.coordination.nodes = [${hmda.zookeeperHost}":"${hmda.zookeeperPort}]
3636

3737
clustering {
3838
name = "hmda"
@@ -64,6 +64,10 @@ hmda {
6464
}
6565
isDemo = true
6666
isDemo = ${?HMDA_IS_DEMO}
67+
zookeeperHost = "192.168.99.100"
68+
zookeeperHost = ${?ZOOKEEPER_HOST}
69+
zookeeperPort = 2181
70+
zookeeperPort = ${?ZOOKEEPER_PORT}
6771
}
6872

6973

api/src/main/scala/hmda/api/HmdaPlatform.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import hmda.query.view.institutions.InstitutionView
1818
import hmda.persistence.messages.events.institutions.InstitutionEvents.InstitutionSchemaCreated
1919
import hmda.query.view.messages.CommonViewMessages.GetProjectionActorRef
2020
import org.slf4j.LoggerFactory
21-
import hmda.future.util.FutureRetry._
21+
import hmda.util.FutureRetry._
2222
import hmda.query.DbConfiguration._
2323
import hmda.query.projections.filing.HmdaFilingDBProjection._
2424
import hmda.validation.ValidationStats

build.sbt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,19 @@ lazy val apiModel = (project in file("api-model"))
222222
libraryDependencies ++= commonDeps ++ httpDeps
223223
).dependsOn(modelJVM % "compile->compile;test->test")
224224
.dependsOn(persistence % "compile->compile")
225+
226+
lazy val publication = (project in file("publication"))
227+
.settings(hmdaBuildSettings: _*)
228+
.settings(
229+
Seq(
230+
assemblyMergeStrategy in assembly := {
231+
case "application.conf" => MergeStrategy.concat
232+
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
233+
case x =>
234+
val oldStrategy = (assemblyMergeStrategy in assembly).value
235+
oldStrategy(x)
236+
},
237+
parallelExecution in Test := true,
238+
libraryDependencies ++= akkaPersistenceDeps ++ Seq(akkaHttpJson)
239+
)
240+
).dependsOn(query % "compile->compile;test->test")
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package hmda.model.publication.reports
2+
3+
import enumeratum.values.{ IntEnum, IntEnumEntry }
4+
5+
sealed abstract class ActionTakenTypeEnum(
6+
override val value: Int,
7+
val description: String
8+
) extends IntEnumEntry
9+
10+
object ActionTakenTypeEnum extends IntEnum[ActionTakenTypeEnum] {
11+
12+
val values = findValues
13+
14+
case object ApplicationReceived extends ActionTakenTypeEnum(0, "Application Received")
15+
case object LoansOriginated extends ActionTakenTypeEnum(1, "Loans Originated")
16+
case object ApprovedButNotAccepted extends ActionTakenTypeEnum(2, "Apps. Approved But Not Accepted")
17+
case object ApplicationsDenied extends ActionTakenTypeEnum(3, "Applications Denied")
18+
case object ApplicationsWithdrawn extends ActionTakenTypeEnum(4, "Applications Withdrawn")
19+
case object ClosedForIncompleteness extends ActionTakenTypeEnum(5, "Files Closed for Incompleteness")
20+
case object LoanPurchased extends ActionTakenTypeEnum(6, "Loan Purchased by your Institution")
21+
case object PreapprovalDenied extends ActionTakenTypeEnum(7, "Preapproval Request Denied by Financial Institution")
22+
case object PreapprovalApprovedButNotAccepted extends ActionTakenTypeEnum(8, "Preapproval Request Approved but not Accepted by Financial Institution")
23+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package hmda.model.publication.reports
2+
3+
case class ApplicantIncome(
4+
applicantIncome: ApplicantIncomeEnum,
5+
borrowerCharacteristics: List[BorrowerCharacteristic]
6+
)
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package hmda.model.publication.reports
2+
3+
import enumeratum.values.{ IntEnum, IntEnumEntry }
4+
5+
sealed abstract class ApplicantIncomeEnum(
6+
override val value: Int,
7+
val description: String
8+
) extends IntEnumEntry
9+
10+
object ApplicantIncomeEnum extends IntEnum[ApplicantIncomeEnum] {
11+
12+
val values = findValues
13+
14+
case object LessThan50PercentOfMSAMedian extends ApplicantIncomeEnum(1, "Less than 50% of MSA/MD median")
15+
case object Between50And79PercentOfMSAMedian extends ApplicantIncomeEnum(2, "50-79% of MSA/MD median")
16+
case object Between80And99PercentOfMSAMedian extends ApplicantIncomeEnum(3, "80-99% of MSA/MD median")
17+
case object Between100And119PercentOfMSAMedian extends ApplicantIncomeEnum(4, "100-119% of MSA/MD median")
18+
case object GreaterThan120PercentOfMSAMedian extends ApplicantIncomeEnum(5, "120% or more of MSA/MD median")
19+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package hmda.model.publication.reports
2+
3+
sealed trait BorrowerCharacteristic
4+
5+
case class RaceBorrowerCharacteristic(races: List[RaceCharacteristic]) extends BorrowerCharacteristic
6+
7+
case class EthnicityBorrowerCharacteristic(ethnicities: List[EthnicityCharacteristic]) extends BorrowerCharacteristic
8+
9+
case class MinorityStatusBorrowerCharacteristic(minoritystatus: List[MinorityStatusCharacteristic]) extends BorrowerCharacteristic
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package hmda.model.publication.reports
2+
3+
sealed trait Characteristic
4+
5+
case class RaceCharacteristic(race: RaceEnum, dispositions: List[Disposition]) extends Characteristic
6+
7+
case class EthnicityCharacteristic(ethnicity: EthnicityEnum, dispositions: List[Disposition]) extends Characteristic
8+
9+
case class MinorityStatusCharacteristic(minorityStatus: MinorityStatusEnum, dispositions: List[Disposition]) extends Characteristic

0 commit comments

Comments
 (0)