Skip to content
Merged
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
19 changes: 18 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ lazy val circeDeps = Seq(circe, circeGeneric, circeParser)
lazy val enumeratumDeps = Seq(enumeratum, enumeratumCirce)

lazy val slickDeps = Seq(slick, slickHikariCP, postgres, h2)

lazy val metaInfMatcher = """META-INF/.+\.(SF|DSA|RSA)""".r
lazy val dockerSettings = Seq(
dockerBuildCommand := {
//force amd64 Architecture for k8s docker image compatability
Expand Down Expand Up @@ -186,6 +186,7 @@ lazy val `hmda-platform` = (project in file("hmda"))
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "logback.xml" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -227,6 +228,7 @@ lazy val `check-digit` = (project in file("check-digit"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs @ _*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs @ _*) => MergeStrategy.last
Expand Down Expand Up @@ -268,6 +270,7 @@ lazy val `check-digit` = (project in file("check-digit"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -304,6 +307,7 @@ lazy val `institutions-api` = (project in file("institutions-api"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -347,6 +351,7 @@ lazy val `hmda-data-publisher` = (project in file("hmda-data-publisher"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -385,6 +390,7 @@ lazy val `hmda-dashboard` = (project in file("hmda-dashboard"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -424,6 +430,7 @@ lazy val `ratespread-calculator` = (project in file("ratespread-calculator"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -463,6 +470,7 @@ lazy val `modified-lar` = (project in file("modified-lar"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -503,6 +511,7 @@ lazy val `irs-publisher` = (project in file("irs-publisher"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -543,6 +552,7 @@ lazy val `hmda-reporting` = (project in file("hmda-reporting"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -592,6 +602,7 @@ lazy val `hmda-analytics` = (project in file("hmda-analytics"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -634,6 +645,7 @@ lazy val `hmda-analytics` = (project in file("hmda-analytics"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs @ _*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs @ _*) => MergeStrategy.last
Expand Down Expand Up @@ -672,6 +684,7 @@ lazy val `rate-limit` = (project in file("rate-limit"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -712,6 +725,7 @@ lazy val `data-browser` = (project in file("data-browser"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -746,6 +760,7 @@ lazy val `submission-errors` = (project in file("submission-errors"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -777,6 +792,7 @@ lazy val `email-service` = (project in file("email-service"))
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down Expand Up @@ -818,6 +834,7 @@ lazy val `hmda-quarterly-data-service` = (project in file ("hmda-quarterly-data-
case "application.conf" => MergeStrategy.concat
case "META-INF/io.netty.versions.properties" => MergeStrategy.concat
case "META-INF/MANIFEST.MF" => MergeStrategy.discard
case metaInfMatcher(_) => MergeStrategy.discard
case PathList("META-INF", xs@_*) => MergeStrategy.concat
case PathList("org", "bouncycastle", xs @_*) => MergeStrategy.first
case PathList("jakarta", xs@_*) => MergeStrategy.last
Expand Down
35 changes: 35 additions & 0 deletions common/src/main/scala/hmda/util/FieldNullifyUtility.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package hmda.util

import hmda.model.institution.{Institution, InstitutionType, Parent, Respondent, TopHolder}


object FieldNullifyUtility {
def nullifyInstitutionFields(institution: Institution): Institution = {
//HMDA Ops will no longer provide updates to institution fields if they are not shared
//with the transmittal sheet model
if (institution.activityYear >= 2024)
Institution(
institution.activityYear,
institution.LEI,
institution.agency,
InstitutionType.valueOf(-1),
institution.institutionId_2017,
institution.taxId,
-1,
institution.emailDomains,
institution.respondent,
Parent(-1,Some("")),
-1,
-1,
TopHolder(-1,Some("")),
institution.hmdaFiler,
institution.quarterlyFiler,
institution.quarterlyFilerHasFiledQ1,
institution.quarterlyFilerHasFiledQ2,
institution.quarterlyFilerHasFiledQ3,
institution.notes
)
else
institution
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package hmda.api.http.admin

import akka.cluster.sharding.typed.scaladsl.{ ClusterSharding, EntityRef }
import akka.cluster.sharding.typed.scaladsl.{ClusterSharding, EntityRef}
import akka.http.scaladsl.model.headers.RawHeader
import akka.http.scaladsl.model.{ StatusCodes, Uri }
import akka.http.scaladsl.model.{StatusCodes, Uri}
import akka.http.scaladsl.server.Directives._
import akka.http.scaladsl.server.Route
import akka.util.Timeout
Expand All @@ -15,14 +15,15 @@ import hmda.api.http.model.admin.InstitutionDeletedResponse
import hmda.auth.OAuth2Authorization
import hmda.messages.institution.InstitutionCommands._
import hmda.messages.institution.InstitutionEvents._
import hmda.model.institution.{ Agency, Institution }
import hmda.model.institution.{Agency, Institution}
import hmda.persistence.institution.InstitutionPersistence
import hmda.persistence.institution.InstitutionPersistence.selectInstitution
import hmda.util.http.FilingResponseUtils._
import hmda.api.http.EmailUtils._
import hmda.util.FieldNullifyUtility.nullifyInstitutionFields

import scala.concurrent.{ ExecutionContext, Future }
import scala.util.{ Failure, Success }
import scala.concurrent.{ExecutionContext, Future}
import scala.util.{Failure, Success}

object InstitutionAdminHttpApi {
def create(config: Config, sharding: ClusterSharding)(implicit ec: ExecutionContext, t: Timeout): OAuth2Authorization => Route =
Expand Down Expand Up @@ -180,7 +181,7 @@ private class InstitutionAdminHttpApi(config: Config, sharding: ClusterSharding)
complete((StatusCodes.InternalServerError, errorResponse))

case Success(Some(i)) =>
complete(i)
complete(nullifyInstitutionFields(i))

case Success(None) =>
complete(StatusCodes.NotFound)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ package hmda.institution.api.http
import hmda.institution.query.{InstitutionEmailEntity, InstitutionEntity}
import hmda.model.institution._
import hmda.util.CSVConsolidator.listDeDupeToList
import hmda.util.FieldNullifyUtility.nullifyInstitutionFields

object InstitutionConverter {

def convert(entity: InstitutionEntity, emails: Seq[String]): Institution = {
Institution(

nullifyInstitutionFields(Institution(
entity.activityYear,
entity.lei,
Agency.valueOf(entity.agency),
Expand Down Expand Up @@ -38,11 +40,11 @@ object InstitutionConverter {
entity.quarterlyFilerHasFiledQ2,
entity.quarterlyFilerHasFiledQ3,
entity.notes
)
))
}

def convert(institution: Institution): InstitutionEntity =
InstitutionEntity(
InstitutionEntity(
institution.LEI,
institution.activityYear,
institution.agency.code,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@ private class InstitutionQueryHttpApi(config: Config)(implicit ec: ExecutionCont
.map(_.sumLars(bankFilterList.toSeq)
.recover({
case err: Throwable => log.debug("ts repo failure, most likely table not yet available for year, skipping...", err)
0
0
})
.map(AnnualLarCount(yr, _)))
.getOrElse(Future(AnnualLarCount(yr, 0)))
Expand Down
Loading