diff --git a/check-digit/build.sbt b/check-digit/build.sbt index e9ed31be28..ee76f0cbaf 100644 --- a/check-digit/build.sbt +++ b/check-digit/build.sbt @@ -1,4 +1,4 @@ -packageName in Docker := "check-digit" +Docker / packageName := "check-digit" dockerExposedPorts := Vector(9091, 60080) diff --git a/check-digit/src/main/scala/hmda/uli/CheckDigitTest.scala b/check-digit/src/main/scala/hmda/uli/CheckDigitTest.scala index 6f807cb1d4..f6ba99f07b 100644 --- a/check-digit/src/main/scala/hmda/uli/CheckDigitTest.scala +++ b/check-digit/src/main/scala/hmda/uli/CheckDigitTest.scala @@ -4,6 +4,7 @@ import akka.actor.ActorSystem import akka.grpc.GrpcClientSettings import akka.stream.Materializer import hmda.grpc.services.{ CheckDigitServiceClient, ValidUliRequest } +import scala.concurrent.ExecutionContextExecutor import scala.concurrent.Await import scala.concurrent.duration._ @@ -13,9 +14,9 @@ import scala.concurrent.duration._ object CheckDigitTest extends App { - implicit val clientSystem = ActorSystem("CheckDigitClient") - implicit val mat = Materializer(clientSystem) - implicit val ec = clientSystem.dispatcher + implicit val clientSystem: ActorSystem = ActorSystem("CheckDigitClient") + implicit val mat: Materializer = Materializer(clientSystem) + implicit val ec: ExecutionContextExecutor = clientSystem.dispatcher val client = CheckDigitServiceClient(GrpcClientSettings.connectToServiceAt("127.0.0.1", 60080).withTls(false)) diff --git a/check-digit/src/main/scala/hmda/uli/api/http/ULIHttpApi.scala b/check-digit/src/main/scala/hmda/uli/api/http/ULIHttpApi.scala index 7d0cffdcdc..1c4fb6af71 100644 --- a/check-digit/src/main/scala/hmda/uli/api/http/ULIHttpApi.scala +++ b/check-digit/src/main/scala/hmda/uli/api/http/ULIHttpApi.scala @@ -82,7 +82,7 @@ private class ULIHttpApi(log: Logger) { respondWithHeader(RawHeader("Cache-Control", "no-cache")) { fileUpload("file") { case (_, byteSource) => - val headerSource = Source.fromIterator(() => List("loanId,checkDigit,uli\n").toIterator) + val headerSource = Source.fromIterator(() => List("loanId,checkDigit,uli\n").iterator) val checkDigit = processLoanIdFile(byteSource) .map(l => l.toCSV) .map(l => l + "\n") @@ -155,7 +155,7 @@ private class ULIHttpApi(log: Logger) { fileUpload("file") { case (_, byteSource) => val headerSource = - Source.fromIterator(() => List("uli,isValid\n").toIterator) + Source.fromIterator(() => List("uli,isValid\n").iterator) val validated = processUliFile(byteSource) .map(u => u.toCSV) .map(l => l + "\n") diff --git a/common/src/main/scala/hmda/auth/KeycloakTokenVerifier.scala b/common/src/main/scala/hmda/auth/KeycloakTokenVerifier.scala index c9890f7368..2b6b8c9c23 100644 --- a/common/src/main/scala/hmda/auth/KeycloakTokenVerifier.scala +++ b/common/src/main/scala/hmda/auth/KeycloakTokenVerifier.scala @@ -29,9 +29,10 @@ class KeycloakTokenVerifier extends TokenVerifier { def verifyToken(token: String): Try[AccessToken] = { val tokenVerifier = keycloakTV.create(token, classOf[AccessToken]) Try { - tokenVerifier.withDefaultChecks().realmUrl(realmUrl) - tokenVerifier.publicKey(publicKey).verify().getToken + tokenVerifier.withChecks(new keycloakTV.RealmUrlCheck(realmUrl)) + tokenVerifier.publicKey(publicKey).verify().getToken() } + } } // $COVERAGE-ON$ \ No newline at end of file diff --git a/common/src/main/scala/hmda/auth/OAuth2Authorization.scala b/common/src/main/scala/hmda/auth/OAuth2Authorization.scala index 90bc4352f2..1272c2758b 100644 --- a/common/src/main/scala/hmda/auth/OAuth2Authorization.scala +++ b/common/src/main/scala/hmda/auth/OAuth2Authorization.scala @@ -43,7 +43,7 @@ class OAuth2Authorization(logger: Logger, tokenVerifier: TokenVerifier) { def authorizeVerifiedToken(): Directive1[VerifiedToken] = withAccessLog .&(handleRejections(authRejectionHandler)) - .&(passToken) + .&(passToken()) def logAccessLog(uri: Uri, token: () => Option[VerifiedToken])(request: HttpRequest)(r: RouteResult): Unit = { val result = r match { diff --git a/common/src/main/scala/hmda/model/institution/Institution.scala b/common/src/main/scala/hmda/model/institution/Institution.scala index 963160daca..98fdbd52b6 100644 --- a/common/src/main/scala/hmda/model/institution/Institution.scala +++ b/common/src/main/scala/hmda/model/institution/Institution.scala @@ -9,7 +9,7 @@ import io.circe.syntax._ object Institution { - implicit val headers = List("activityYear|lei|agency|institutionType|institutionId2017|taxId|rssd|emailDomains|respondent|parent|assets|otherLenderCode|topHolder|hmdaFiler|quarterlyFiler|quarterlyFilerHasFiledQ1|quarterlyFilerHasFiledQ2|quarterlyFilerHasFiledQ3|notes\n") + implicit val headers: List[String] = List("activityYear|lei|agency|institutionType|institutionId2017|taxId|rssd|emailDomains|respondent|parent|assets|otherLenderCode|topHolder|hmdaFiler|quarterlyFiler|quarterlyFilerHasFiledQ1|quarterlyFilerHasFiledQ2|quarterlyFilerHasFiledQ3|notes\n") def empty: Institution = Institution( activityYear = 2018, diff --git a/common/src/main/scala/hmda/parser/derivedFields/ConformingLoanLimit.scala b/common/src/main/scala/hmda/parser/derivedFields/ConformingLoanLimit.scala index 873c4321d5..f7b357974e 100644 --- a/common/src/main/scala/hmda/parser/derivedFields/ConformingLoanLimit.scala +++ b/common/src/main/scala/hmda/parser/derivedFields/ConformingLoanLimit.scala @@ -5,7 +5,6 @@ import hmda.model.filing.lar.LoanApplicationRegister import hmda.model.filing.lar.enums._ import hmda.model.census.CountyLoanLimit import hmda.census.records.OverallLoanLimit -import hmda.model.filing.EditDescriptionLookup.config // $COVERAGE-OFF$ case class LoanLimitInfo( totalUnits: Int, diff --git a/common/src/main/scala/hmda/parser/institution/InstitutionCsvParser.scala b/common/src/main/scala/hmda/parser/institution/InstitutionCsvParser.scala index e179ee2f0f..159ce93740 100644 --- a/common/src/main/scala/hmda/parser/institution/InstitutionCsvParser.scala +++ b/common/src/main/scala/hmda/parser/institution/InstitutionCsvParser.scala @@ -1,7 +1,7 @@ package hmda.parser.institution import hmda.model.institution._ -import hmda.util.CSVConsolidator.{listDeDupeToList, stringDeDupeToList} +import hmda.util.CSVConsolidator.stringDeDupeToList import io.chrisdavenport.cormorant.parser.CSVLikeParser import io.chrisdavenport.cormorant diff --git a/common/src/main/scala/hmda/publication/KafkaUtils.scala b/common/src/main/scala/hmda/publication/KafkaUtils.scala index d62612a481..f8155119bc 100644 --- a/common/src/main/scala/hmda/publication/KafkaUtils.scala +++ b/common/src/main/scala/hmda/publication/KafkaUtils.scala @@ -12,7 +12,7 @@ import hmda.messages.institution.InstitutionEvents.InstitutionKafkaEvent import hmda.serialization.kafka.InstitutionKafkaEventsSerializer import org.apache.kafka.clients.CommonClientConfigs import org.apache.kafka.clients.producer.{ProducerRecord, Producer => KafkaProducer} -import org.apache.kafka.common.config.{SslConfigs,SaslConfigs} +import org.apache.kafka.common.config.SaslConfigs //import org.apache.kafka.common.security.auth.SecurityProtocol import org.apache.kafka.common.serialization.StringSerializer diff --git a/common/src/main/scala/hmda/serialization/institution/InstitutionCommandsSerializer.scala b/common/src/main/scala/hmda/serialization/institution/InstitutionCommandsSerializer.scala index 7ac047626f..cbde719315 100644 --- a/common/src/main/scala/hmda/serialization/institution/InstitutionCommandsSerializer.scala +++ b/common/src/main/scala/hmda/serialization/institution/InstitutionCommandsSerializer.scala @@ -44,7 +44,7 @@ class InstitutionCommandsSerializer(system: ExtendedActorSystem) extends Seriali deleteInstitutionToProtobuf(cmd, resolver).toByteArray case cmd: AddFiling => addFilingToProtobuf(cmd, resolver).toByteArray - case _ ⇒ + case _ => throw new IllegalArgumentException(s"Cannot serialize object of type [${o.getClass.getName}]") } diff --git a/common/src/main/scala/hmda/serialization/institution/InstitutionEventsSerializer.scala b/common/src/main/scala/hmda/serialization/institution/InstitutionEventsSerializer.scala index 093bff1656..5b60f7dee0 100644 --- a/common/src/main/scala/hmda/serialization/institution/InstitutionEventsSerializer.scala +++ b/common/src/main/scala/hmda/serialization/institution/InstitutionEventsSerializer.scala @@ -44,7 +44,7 @@ class InstitutionEventsSerializer extends SerializerWithStringManifest { institutionNotExistsToProtobuf(evt).toByteArray case evt: FilingAdded => filingAddedToProtobuf(evt).toByteArray - case _ ⇒ + case _ => throw new IllegalArgumentException(s"Cannot serialize object of type [${o.getClass.getName}]") } diff --git a/common/src/main/scala/hmda/serialization/submission/SubmissionEventsSerializer.scala b/common/src/main/scala/hmda/serialization/submission/SubmissionEventsSerializer.scala index c6b9e58c46..c8de3b006f 100644 --- a/common/src/main/scala/hmda/serialization/submission/SubmissionEventsSerializer.scala +++ b/common/src/main/scala/hmda/serialization/submission/SubmissionEventsSerializer.scala @@ -24,7 +24,7 @@ class SubmissionEventsSerializer extends SerializerWithStringManifest { submissionModifiedToProtobuf(evt).toByteArray case evt: SubmissionNotExists => submissionNotExistsToProtobuf(evt).toByteArray - case _ ⇒ + case _ => throw new IllegalArgumentException(s"Cannot serialize object of type [${o.getClass.getName}]") } diff --git a/common/src/main/scala/hmda/serialization/submission/SubmissionProtobufConverter.scala b/common/src/main/scala/hmda/serialization/submission/SubmissionProtobufConverter.scala index 5effad837f..c552539eb6 100644 --- a/common/src/main/scala/hmda/serialization/submission/SubmissionProtobufConverter.scala +++ b/common/src/main/scala/hmda/serialization/submission/SubmissionProtobufConverter.scala @@ -43,7 +43,7 @@ object SubmissionProtobufConverter { def submissionIdFromProtobuf(submissionIdMessage: SubmissionIdMessage): SubmissionId = SubmissionId( submissionIdMessage.lei, - parsePeriod(submissionIdMessage.period).right.get, + parsePeriod(submissionIdMessage.period).toOption.get, submissionIdMessage.sequenceNumber ) diff --git a/common/src/main/scala/hmda/util/CSVConsolidator.scala b/common/src/main/scala/hmda/util/CSVConsolidator.scala index 308ef2e107..c40f6a60d5 100644 --- a/common/src/main/scala/hmda/util/CSVConsolidator.scala +++ b/common/src/main/scala/hmda/util/CSVConsolidator.scala @@ -1,8 +1,6 @@ package hmda.util import cats.implicits._ -import com.typesafe.config.ConfigFactory -import hmda.model.filing.submission.SubmissionId object CSVConsolidator { diff --git a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala index b420ce7412..f5031ec818 100644 --- a/common/src/main/scala/hmda/util/FieldNullifyUtility.scala +++ b/common/src/main/scala/hmda/util/FieldNullifyUtility.scala @@ -1,6 +1,6 @@ package hmda.util -import hmda.model.institution.{Institution, InstitutionType, Parent, Respondent, TopHolder} +import hmda.model.institution.{Institution, InstitutionType, Parent, TopHolder} object FieldNullifyUtility { diff --git a/common/src/main/scala/hmda/util/QuarterTimeBarrier.scala b/common/src/main/scala/hmda/util/QuarterTimeBarrier.scala index c77a4b8e84..c1be4c2639 100644 --- a/common/src/main/scala/hmda/util/QuarterTimeBarrier.scala +++ b/common/src/main/scala/hmda/util/QuarterTimeBarrier.scala @@ -11,58 +11,65 @@ object QuarterTimeBarrier { // Builtin time format of BASIC_ISO_DATE yyyyMMdd i.e. '20111203'. private val formatter: DateTimeFormatter =DateTimeFormatter.BASIC_ISO_DATE - private val q12020EndDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q1.actionTakenEnd) - private val q22020EndDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q2.actionTakenEnd) - private val q32020EndDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q3.actionTakenEnd) - private val q12021EndDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q1.actionTakenEnd) - private val q22021EndDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q2.actionTakenEnd) - private val q32021EndDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q3.actionTakenEnd) - - private val q12022EndDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q1.actionTakenEnd) - private val q22022EndDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q2.actionTakenEnd) - private val q32022EndDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q3.actionTakenEnd) - - private val q12023EndDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q1.actionTakenEnd) - private val q22023EndDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q2.actionTakenEnd) - private val q32023EndDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q3.actionTakenEnd) - - private val q12024EndDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q1.actionTakenEnd) - private val q22024EndDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q2.actionTakenEnd) - private val q32024EndDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q3.actionTakenEnd) - - private val q12025EndDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q1.actionTakenEnd) - private val q22025EndDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q2.actionTakenEnd) - private val q32025EndDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q3.actionTakenEnd) + //2020 + //private val q12020StartDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q1.actionTakenStart) + //private val q22020StartDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q2.actionTakenStart) + //private val q32020StartDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q3.actionTakenStart) + + //private val q12020EndDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q1.actionTakenEnd) + //private val q22020EndDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q2.actionTakenEnd) + //private val q32020EndDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q3.actionTakenEnd) + + //2021 + //private val q12021StartDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q1.actionTakenStart) + //private val q22021StartDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q2.actionTakenStart) + //private val q32021StartDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q3.actionTakenStart) + + //private val q12021EndDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q1.actionTakenEnd) + //private val q22021EndDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q2.actionTakenEnd) + //private val q32021EndDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q3.actionTakenEnd) + + //2022 + //private val q12022StartDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q1.actionTakenStart) + //private val q22022StartDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q2.actionTakenStart) + //private val q32022StartDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q3.actionTakenStart) + + //private val q12022EndDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q1.actionTakenEnd) + //private val q22022EndDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q2.actionTakenEnd) + //private val q32022EndDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q3.actionTakenEnd) + + //2023 + //private val q12023StartDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q1.actionTakenStart) + //private val q22023StartDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q2.actionTakenStart) + //private val q32023StartDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q3.actionTakenStart) + + //private val q12023EndDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q1.actionTakenEnd) + //private val q22023EndDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q2.actionTakenEnd) + //private val q32023EndDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q3.actionTakenEnd) + + //2024 + //private val q12024StartDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q1.actionTakenStart) + //private val q22024StartDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q2.actionTakenStart) + //private val q32024StartDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q3.actionTakenStart) + + //private val q12024EndDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q1.actionTakenEnd) + //private val q22024EndDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q2.actionTakenEnd) + //private val q32024EndDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q3.actionTakenEnd) + + //2025 + //private val q12025StartDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q1.actionTakenStart) + //private val q22025StartDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q2.actionTakenStart) + //private val q32025StartDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q3.actionTakenStart) + + //private val q12025EndDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q1.actionTakenEnd) + //private val q22025EndDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q2.actionTakenEnd) + //private val q32025EndDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q3.actionTakenEnd) private val q12026EndDate = LocalDate.ofYearDay(2026, rulesConfig.qf.q1.actionTakenEnd) private val q22026EndDate = LocalDate.ofYearDay(2026, rulesConfig.qf.q2.actionTakenEnd) private val q32026EndDate = LocalDate.ofYearDay(2026, rulesConfig.qf.q3.actionTakenEnd) - private val q12020StartDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q1.actionTakenStart) - private val q22020StartDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q2.actionTakenStart) - private val q32020StartDate = LocalDate.ofYearDay(2020,rulesConfig.qf.q3.actionTakenStart) - - private val q12021StartDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q1.actionTakenStart) - private val q22021StartDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q2.actionTakenStart) - private val q32021StartDate = LocalDate.ofYearDay(2021,rulesConfig.qf.q3.actionTakenStart) - - private val q12022StartDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q1.actionTakenStart) - private val q22022StartDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q2.actionTakenStart) - private val q32022StartDate = LocalDate.ofYearDay(2022,rulesConfig.qf.q3.actionTakenStart) - - private val q12023StartDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q1.actionTakenStart) - private val q22023StartDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q2.actionTakenStart) - private val q32023StartDate = LocalDate.ofYearDay(2023, rulesConfig.qf.q3.actionTakenStart) - - private val q12024StartDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q1.actionTakenStart) - private val q22024StartDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q2.actionTakenStart) - private val q32024StartDate = LocalDate.ofYearDay(2024, rulesConfig.qf.q3.actionTakenStart) - - private val q12025StartDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q1.actionTakenStart) - private val q22025StartDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q2.actionTakenStart) - private val q32025StartDate = LocalDate.ofYearDay(2025, rulesConfig.qf.q3.actionTakenStart) - private val q12026StartDate = LocalDate.ofYearDay(2026, rulesConfig.qf.q1.actionTakenStart) private val q22026StartDate = LocalDate.ofYearDay(2026, rulesConfig.qf.q2.actionTakenStart) private val q32026StartDate = LocalDate.ofYearDay(2026, rulesConfig.qf.q3.actionTakenStart) @@ -76,55 +83,55 @@ object QuarterTimeBarrier { def actionTakenInQuarterRange(actionTakenDate: Int, period: Period):Boolean= { val actionTakenDateLocal = LocalDate.parse(actionTakenDate.toString, formatter) period match { - case Period(2018, None) => true - case Period(2019, None) => true + //case Period(2018, None) => true + //case Period(2019, None) => true //Action Taken Date is on of before the end date of Q1 2020 - case Period(2020, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12020EndDate) + //case Period(2020, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12020EndDate) // Action Taken Date is after Q1 2020 Ends and on/before Q2 2020 filing ends - case Period(2020, Some("Q2")) => actionTakenDateLocal.isBetween(q22020StartDate, q22020EndDate) + //case Period(2020, Some("Q2")) => actionTakenDateLocal.isBetween(q22020StartDate, q22020EndDate) // Action Taken Date is after Q2 2020 Ends and on/before Q3 2020 filing ends - case Period(2020, Some("Q3")) => actionTakenDateLocal.isBetween(q32020StartDate, q32020EndDate) - case Period(2020, None) => true + //case Period(2020, Some("Q3")) => actionTakenDateLocal.isBetween(q32020StartDate, q32020EndDate) + //case Period(2020, None) => true //Action Taken Date is on of before the end date of Q1 2021 - case Period(2021, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12021EndDate) + //case Period(2021, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12021EndDate) // Action Taken Date is after Q1 2021 Ends and on/before Q2 2021 filing ends - case Period(2021, Some("Q2")) => actionTakenDateLocal.isBetween(q22021StartDate, q22021EndDate) + //case Period(2021, Some("Q2")) => actionTakenDateLocal.isBetween(q22021StartDate, q22021EndDate) // Action Taken Date is after Q2 2021 Ends and on/before Q3 2021 filing ends - case Period(2021, Some("Q3")) => actionTakenDateLocal.isBetween(q32021StartDate, q32021EndDate) - case Period(2021, None) => true + //case Period(2021, Some("Q3")) => actionTakenDateLocal.isBetween(q32021StartDate, q32021EndDate) + //case Period(2021, None) => true //Action Taken Date is on of before the end date of Q1 2022 - case Period(2022, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12022EndDate) + //case Period(2022, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12022EndDate) // Action Taken Date is after Q1 2022 Ends and on/before Q2 2022 filing ends - case Period(2022, Some("Q2")) => actionTakenDateLocal.isBetween(q22022StartDate, q22022EndDate) + //case Period(2022, Some("Q2")) => actionTakenDateLocal.isBetween(q22022StartDate, q22022EndDate) // Action Taken Date is after Q2 2022 Ends and on/before Q3 2022 filing ends - case Period(2022, Some("Q3")) => actionTakenDateLocal.isBetween(q32022StartDate, q32022EndDate) - case Period(2022, None) => true + //case Period(2022, Some("Q3")) => actionTakenDateLocal.isBetween(q32022StartDate, q32022EndDate) + //case Period(2022, None) => true //Action Taken Date is on of before the end date of Q1 2023 - case Period(2023, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12023EndDate) + //case Period(2023, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12023EndDate) // Action Taken Date is after Q1 2022 Ends and on/before Q2 2023 filing ends - case Period(2023, Some("Q2")) => actionTakenDateLocal.isBetween(q22023StartDate, q22023EndDate) + //case Period(2023, Some("Q2")) => actionTakenDateLocal.isBetween(q22023StartDate, q22023EndDate) // Action Taken Date is after Q2 2022 Ends and on/before Q3 2023 filing ends - case Period(2023, Some("Q3")) => actionTakenDateLocal.isBetween(q32023StartDate, q32023EndDate) + //case Period(2023, Some("Q3")) => actionTakenDateLocal.isBetween(q32023StartDate, q32023EndDate) case Period(2023, None) => true //Action Taken Date is on or before the end date of Q1 2024 - case Period(2024, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12024EndDate) + //case Period(2024, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12024EndDate) // Action Taken Date is after Q1 2022 Ends and on/before Q2 2023 filing ends - case Period(2024, Some("Q2")) => actionTakenDateLocal.isBetween(q22024StartDate, q22024EndDate) + //case Period(2024, Some("Q2")) => actionTakenDateLocal.isBetween(q22024StartDate, q22024EndDate) // Action Taken Date is after Q2 2022 Ends and on/before Q3 2023 filing ends - case Period(2024, Some("Q3")) => actionTakenDateLocal.isBetween(q32024StartDate, q32024EndDate) + //case Period(2024, Some("Q3")) => actionTakenDateLocal.isBetween(q32024StartDate, q32024EndDate) case Period(2024, None) => true //Action Taken Date is on or before the end date of Q1 2023 - case Period(2025, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12025EndDate) + //case Period(2025, Some("Q1")) => actionTakenDateLocal.isOnOrBefore(q12025EndDate) // Action Taken Date is after Q1 2022 Ends and on/before Q2 2023 filing ends - case Period(2025, Some("Q2")) => actionTakenDateLocal.isBetween(q22025StartDate, q22025EndDate) + //case Period(2025, Some("Q2")) => actionTakenDateLocal.isBetween(q22025StartDate, q22025EndDate) // Action Taken Date is after Q2 2022 Ends and on/before Q3 2023 filing ends - case Period(2025, Some("Q3")) => actionTakenDateLocal.isBetween(q32025StartDate, q32025EndDate) + //case Period(2025, Some("Q3")) => actionTakenDateLocal.isBetween(q32025StartDate, q32025EndDate) case Period(2025, None) => true //Action Taken Date is on or before the end date of Q1 2023 @@ -134,6 +141,7 @@ object QuarterTimeBarrier { // Action Taken Date is after Q2 2022 Ends and on/before Q3 2023 filing ends case Period(2026, Some("Q3")) => actionTakenDateLocal.isBetween(q32026StartDate, q32026EndDate) case Period(2026, None) => true + case _ => false } } @@ -141,43 +149,44 @@ object QuarterTimeBarrier { def actionTakenGreaterThanRange(actionTakenDate: Int, period: Period):Boolean={ val actionTakenDateLocal = LocalDate.parse(actionTakenDate.toString,formatter) period match { - case Period(2018, None) => false - case Period(2019, None) => false - - case Period(2020, Some("Q1")) => actionTakenDateLocal.isAfter(q12020EndDate) - case Period(2020, Some("Q2")) => actionTakenDateLocal.isAfter(q22020EndDate) - case Period(2020, Some("Q3")) => actionTakenDateLocal.isAfter(q32020EndDate) - case Period(2020, None) => false - - case Period(2021, Some("Q1")) => actionTakenDateLocal.isAfter(q12021EndDate) - case Period(2021, Some("Q2")) => actionTakenDateLocal.isAfter(q22021EndDate) - case Period(2021, Some("Q3")) => actionTakenDateLocal.isAfter(q32021EndDate) - case Period(2021, None) => false - - case Period(2022, Some("Q1")) => actionTakenDateLocal.isAfter(q12022EndDate) - case Period(2022, Some("Q2")) => actionTakenDateLocal.isAfter(q22022EndDate) - case Period(2022, Some("Q3")) => actionTakenDateLocal.isAfter(q32022EndDate) - case Period(2022, None) => false - - case Period(2023, Some("Q1")) => actionTakenDateLocal.isAfter(q12023EndDate) - case Period(2023, Some("Q2")) => actionTakenDateLocal.isAfter(q22023EndDate) - case Period(2023, Some("Q3")) => actionTakenDateLocal.isAfter(q32023EndDate) + //case Period(2018, None) => false + //case Period(2019, None) => false + + //case Period(2020, Some("Q1")) => actionTakenDateLocal.isAfter(q12020EndDate) + //case Period(2020, Some("Q2")) => actionTakenDateLocal.isAfter(q22020EndDate) + //case Period(2020, Some("Q3")) => actionTakenDateLocal.isAfter(q32020EndDate) + //case Period(2020, None) => false + + //case Period(2021, Some("Q1")) => actionTakenDateLocal.isAfter(q12021EndDate) + //case Period(2021, Some("Q2")) => actionTakenDateLocal.isAfter(q22021EndDate) + //case Period(2021, Some("Q3")) => actionTakenDateLocal.isAfter(q32021EndDate) + //case Period(2021, None) => false + + //case Period(2022, Some("Q1")) => actionTakenDateLocal.isAfter(q12022EndDate) + //case Period(2022, Some("Q2")) => actionTakenDateLocal.isAfter(q22022EndDate) + //case Period(2022, Some("Q3")) => actionTakenDateLocal.isAfter(q32022EndDate) + //case Period(2022, None) => false + + //case Period(2023, Some("Q1")) => actionTakenDateLocal.isAfter(q12023EndDate) + //case Period(2023, Some("Q2")) => actionTakenDateLocal.isAfter(q22023EndDate) + //case Period(2023, Some("Q3")) => actionTakenDateLocal.isAfter(q32023EndDate) case Period(2023, None) => false - case Period(2024, Some("Q1")) => actionTakenDateLocal.isAfter(q12024EndDate) - case Period(2024, Some("Q2")) => actionTakenDateLocal.isAfter(q22024EndDate) - case Period(2024, Some("Q3")) => actionTakenDateLocal.isAfter(q32024EndDate) + //case Period(2024, Some("Q1")) => actionTakenDateLocal.isAfter(q12024EndDate) + //case Period(2024, Some("Q2")) => actionTakenDateLocal.isAfter(q22024EndDate) + //case Period(2024, Some("Q3")) => actionTakenDateLocal.isAfter(q32024EndDate) case Period(2024, None) => false - case Period(2025, Some("Q1")) => actionTakenDateLocal.isAfter(q12025EndDate) - case Period(2025, Some("Q2")) => actionTakenDateLocal.isAfter(q22025EndDate) - case Period(2025, Some("Q3")) => actionTakenDateLocal.isAfter(q32025EndDate) + //case Period(2025, Some("Q1")) => actionTakenDateLocal.isAfter(q12025EndDate) + //case Period(2025, Some("Q2")) => actionTakenDateLocal.isAfter(q22025EndDate) + //case Period(2025, Some("Q3")) => actionTakenDateLocal.isAfter(q32025EndDate) case Period(2025, None) => false case Period(2026, Some("Q1")) => actionTakenDateLocal.isAfter(q12026EndDate) case Period(2026, Some("Q2")) => actionTakenDateLocal.isAfter(q22026EndDate) case Period(2026, Some("Q3")) => actionTakenDateLocal.isAfter(q32026EndDate) case Period(2026, None) => false + case _ => false } } diff --git a/common/src/test/scala/hmda/parser/filing/ParserFlowSpec.scala b/common/src/test/scala/hmda/parser/filing/ParserFlowSpec.scala index 38bdea841d..433a68815f 100644 --- a/common/src/test/scala/hmda/parser/filing/ParserFlowSpec.scala +++ b/common/src/test/scala/hmda/parser/filing/ParserFlowSpec.scala @@ -98,7 +98,7 @@ class ParserFlowSpec extends WordSpec with MustMatchers { .map(ByteString(_)) .via(parseHmdaFile) .map(_._1) - .map(_.right.get) + .map(_.toOption.get) .runWith(TestSink.probe[PipeDelimited]) .request(hmdaFile.size) .expectNextN(hmdaFile) diff --git a/data-browser/build.sbt b/data-browser/build.sbt index 0f689f43e3..8fb515ec70 100644 --- a/data-browser/build.sbt +++ b/data-browser/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "data-browser" +Docker / packageName := "data-browser" version in Docker := "latest" diff --git a/data-browser/src/main/scala/hmda/dataBrowser/api/DataBrowserApi.scala b/data-browser/src/main/scala/hmda/dataBrowser/api/DataBrowserApi.scala index a0da3e2ecd..63ea2bffea 100644 --- a/data-browser/src/main/scala/hmda/dataBrowser/api/DataBrowserApi.scala +++ b/data-browser/src/main/scala/hmda/dataBrowser/api/DataBrowserApi.scala @@ -8,7 +8,6 @@ import akka.actor.typed.scaladsl.adapter._ import akka.http.scaladsl.server.Directives._ import hmda.api.http.directives.HmdaTimeDirectives._ import hmda.api.http.routes.BaseHttpApi -import akka.stream.Materializer import hmda.dataBrowser.Settings import hmda.dataBrowser.repositories.{ PostgresModifiedLarRepository, PostgresModifiedLarRepository2017, RedisModifiedLarAggregateCache } import hmda.dataBrowser.services.{ DataBrowserQueryService, HealthCheckService, QueryService, S3FileService } @@ -33,7 +32,6 @@ object DataBrowserApi extends Settings { Behaviors.setup[Nothing] { ctx => implicit val system: ActorSystem[Nothing] = ctx.system implicit val classic: actor.ActorSystem = system.toClassic - implicit val mat: Materializer = Materializer(ctx) implicit val ec: ExecutionContext = ctx.executionContext val shutdown = CoordinatedShutdown(system) val log = ctx.log @@ -56,7 +54,6 @@ object DataBrowserApi extends Settings { .builder() .autoReconnect(true) .disconnectedBehavior(ClientOptions.DisconnectedBehavior.REJECT_COMMANDS) - .cancelCommandsOnReconnectFailure(true) .build() ) diff --git a/data-browser/src/main/scala/hmda/dataBrowser/services/DataBrowserQueryService.scala b/data-browser/src/main/scala/hmda/dataBrowser/services/DataBrowserQueryService.scala index 4f63c86867..d7e3108766 100644 --- a/data-browser/src/main/scala/hmda/dataBrowser/services/DataBrowserQueryService.scala +++ b/data-browser/src/main/scala/hmda/dataBrowser/services/DataBrowserQueryService.scala @@ -2,7 +2,6 @@ package hmda.dataBrowser.services import akka.NotUsed import akka.stream.scaladsl.Source import hmda.dataBrowser.models._ -import hmda.dataBrowser.models.Aggregation._ import hmda.dataBrowser.repositories._ import monix.eval.Task import org.slf4j.Logger @@ -48,10 +47,6 @@ class DataBrowserQueryService(repoLatest: ModifiedLarRepositoryLatest, repo2017: override def fetchAggregate( queryFields: QueryFields ): Task[(ServedFrom, Seq[Aggregation])] = { - val repo = queryFields.year match { - case "2017" => repo2017 - case _ => repoLatest - } val fields = queryFields.queryFields val optState: Option[QueryField] = fields.filter(_.values.nonEmpty).find(_.name == "state") @@ -61,8 +56,6 @@ class DataBrowserQueryService(repoLatest: ModifiedLarRepositoryLatest, repo2017: fields.filter(_.values.nonEmpty).find(_.name == "county") val optLEI: Option[QueryField] = fields.filter(_.values.nonEmpty).find(_.name == "lei") - val optARID: Option[QueryField] = - fields.filter(_.values.nonEmpty).find(_.name == "arid") val geoFilter: Option[QueryField] = { if (optState.nonEmpty) optState diff --git a/email-service/build.sbt b/email-service/build.sbt index be30cfe14a..67ad39a151 100644 --- a/email-service/build.sbt +++ b/email-service/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "email-service" +Docker / packageName := "email-service" version in Docker := "latest" diff --git a/email-service/src/main/scala/hmda/publication/lar/streams/SubmissionStream.scala b/email-service/src/main/scala/hmda/publication/lar/streams/SubmissionStream.scala index 960e47d518..b4d5860aa4 100644 --- a/email-service/src/main/scala/hmda/publication/lar/streams/SubmissionStream.scala +++ b/email-service/src/main/scala/hmda/publication/lar/streams/SubmissionStream.scala @@ -60,7 +60,7 @@ object SubmissionStream { submissionWithReceipt.split("-").size match { case 4 => val lei :: year :: seqNo :: receipt :: Nil = submissionWithReceipt.split("-").take(4).toList - Submission(id = SubmissionId(lei, YearUtils.parsePeriod(year).right.get, seqNo.toInt), receipt = receipt) + Submission(id = SubmissionId(lei, YearUtils.parsePeriod(year).toOption.get, seqNo.toInt), receipt = receipt) case 5 => val lei :: year :: quarter :: seqNo :: receipt :: Nil = submissionWithReceipt.split("-").take(5).toList Submission(id = SubmissionId(lei, Period(year.toInt, Some(quarter)), seqNo.toInt), receipt = receipt) diff --git a/file-proxy/build.sbt b/file-proxy/build.sbt index 7fe908805e..0fe0911011 100644 --- a/file-proxy/build.sbt +++ b/file-proxy/build.sbt @@ -1,4 +1,4 @@ -packageName in Docker := "file-proxy" +Docker / packageName := "file-proxy" dockerExposedPorts := Vector(9092, 60080) diff --git a/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala b/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala index 53634de985..e57c00ce70 100644 --- a/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala +++ b/file-proxy/src/main/scala/hmda/uli/api/http/ProxyHttpApi.scala @@ -16,21 +16,17 @@ import akka.stream.scaladsl.{ Sink, Source } import scala.concurrent.Future import akka.stream.alpakka.s3._ import com.typesafe.config.ConfigFactory -import software.amazon.awssdk.auth.credentials.{ AwsBasicCredentials, StaticCredentialsProvider } import software.amazon.awssdk.regions.Region import software.amazon.awssdk.regions.providers.AwsRegionProvider -import software.amazon.awssdk.regions.providers._ import akka.stream.alpakka.s3.ApiVersion.ListBucketVersion2 import akka.actor.ActorSystem import scala.concurrent._ import akka.http.scaladsl.model.ContentTypes -import scala.util.{ Failure, Success, Try } +import scala.util.{ Failure, Success } import akka.http.scaladsl.model.StatusCodes.BadRequest import hmda.auth.OAuth2Authorization -import akka.util.Timeout -import hmda.util.RealTimeConfig import scala.concurrent.duration._ @@ -124,7 +120,6 @@ private class ProxyHttpApi(log: Logger)(implicit ec: ExecutionContext, system: A } private def retrieveData(path: String): Future[Option[Source[ByteString, NotUsed]]] = { - val timeout: Timeout = Timeout(config.getInt("hmda.http.timeout").seconds) log.info("retrieving bucket: {}, path: {}", bucket, path) S3.download(bucket, path).withAttributes(S3Attributes.settings(s3Settings)).runWith(Sink.head) .map(opt => opt.map { case (source, _) => source }) diff --git a/hmda-auth/src/main/scala/api/AuthHttpApi.scala b/hmda-auth/src/main/scala/api/AuthHttpApi.scala index dcf7c38425..6b54f7928b 100644 --- a/hmda-auth/src/main/scala/api/AuthHttpApi.scala +++ b/hmda-auth/src/main/scala/api/AuthHttpApi.scala @@ -15,7 +15,7 @@ import com.typesafe.config.ConfigFactory import slick.basic.DatabaseConfig import slick.jdbc.JdbcProfile -import scala.collection.JavaConverters._ +import scala.jdk.CollectionConverters._ import scala.concurrent._ import scala.concurrent.Future import scala.util.{ Failure, Success} diff --git a/hmda-data-publisher/build.sbt b/hmda-data-publisher/build.sbt index 5d4333d6cc..651ec3c5c2 100644 --- a/hmda-data-publisher/build.sbt +++ b/hmda-data-publisher/build.sbt @@ -1,4 +1,4 @@ -packageName in Docker := "hmda-data-publisher" +Docker / packageName := "hmda-data-publisher" version in Docker := "latest" coverageExcludedPackages := "hmda.publisher.qa*" diff --git a/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PrivateAWSConfigLoader.scala b/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PrivateAWSConfigLoader.scala index 5d512dc576..7f5303a3b4 100644 --- a/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PrivateAWSConfigLoader.scala +++ b/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PrivateAWSConfigLoader.scala @@ -1,7 +1,6 @@ package hmda.publisher.helper import com.typesafe.config.ConfigFactory -import software.amazon.awssdk.auth.credentials.{ AwsBasicCredentials, StaticCredentialsProvider } import software.amazon.awssdk.regions.Region import software.amazon.awssdk.regions.providers.AwsRegionProvider diff --git a/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PublicAWSConfigLoader.scala b/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PublicAWSConfigLoader.scala index b8b6888a25..9013696cd7 100644 --- a/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PublicAWSConfigLoader.scala +++ b/hmda-data-publisher/src/main/scala/hmda/publisher/helper/PublicAWSConfigLoader.scala @@ -1,7 +1,6 @@ package hmda.publisher.helper import com.typesafe.config.ConfigFactory -import software.amazon.awssdk.auth.credentials.{ AwsBasicCredentials, StaticCredentialsProvider } import software.amazon.awssdk.regions.Region import software.amazon.awssdk.regions.providers.AwsRegionProvider diff --git a/hmda-quarterly-data-service/build.sbt b/hmda-quarterly-data-service/build.sbt index 4f4ba83eec..af9bc5625c 100644 --- a/hmda-quarterly-data-service/build.sbt +++ b/hmda-quarterly-data-service/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "hmda-quarterly-data-service" +Docker / packageName := "hmda-quarterly-data-service" version in Docker := "latest" \ No newline at end of file diff --git a/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/HmdaQuarterlyDataApi.scala b/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/HmdaQuarterlyDataApi.scala index 49e6db86d1..5244d1dacc 100644 --- a/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/HmdaQuarterlyDataApi.scala +++ b/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/HmdaQuarterlyDataApi.scala @@ -6,12 +6,9 @@ import akka.actor.typed.scaladsl.Behaviors import akka.actor.typed.scaladsl.adapter._ import akka.actor.typed.{ ActorSystem, Behavior } import akka.http.scaladsl.server.Directives._ -import akka.stream.Materializer import ch.megard.akka.http.cors.scaladsl.CorsDirectives.cors import hmda.api.http.directives.HmdaTimeDirectives.timed import hmda.api.http.routes.BaseHttpApi -import slick.basic.DatabaseConfig -import slick.jdbc.JdbcProfile import scala.concurrent.ExecutionContext @@ -22,10 +19,7 @@ object HmdaQuarterlyDataApi { val main: Behavior[Nothing] = Behaviors.setup[Nothing] { ctx => implicit val system: ActorSystem[Nothing] = ctx.system implicit val classic: actor.ActorSystem = system.toClassic - implicit val mat: Materializer = Materializer(ctx) implicit val ec: ExecutionContext = ctx.executionContext - implicit val dbConfig: DatabaseConfig[JdbcProfile] = DatabaseConfig.forConfig[JdbcProfile]("db") - val log = ctx.log val config = system.settings.config val host: String = config.getString("server.bindings.address") val port: Int = config.getInt("server.bindings.port") diff --git a/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeHome.scala b/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeHome.scala index 3a9b4e7ccc..898dc33a3d 100644 --- a/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeHome.scala +++ b/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeHome.scala @@ -5,7 +5,7 @@ import akka.http.scaladsl.server.Route import hmda.model.filing.lar.enums._ import hmda.quarterly.data.api.dao.repo.QuarterlyGraphRepo import hmda.quarterly.data.api.dto.QuarterGraphData.{GraphRoute, GraphSeriesInfo, GraphSeriesSummary} -import hmda.quarterly.data.api.route.counts.loans.Loans.{CATEGORY, LOAN_LABEL, LOAN_VOLUME_SUBTITLE, LOAN_VOLUME_TITLE, LOAN_VOLUME_TITLE_HOME} +import hmda.quarterly.data.api.route.counts.loans.Loans.{CATEGORY, LOAN_LABEL, LOAN_VOLUME_SUBTITLE, LOAN_VOLUME_TITLE_HOME} import hmda.quarterly.data.api.route.lib.Verbiage.COUNT_DECIMAL_PRECISION import hmda.quarterly.data.api.route.lib.Verbiage.LoanType._ import hmda.quarterly.data.api.serde.JsonSupport diff --git a/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeRefinance.scala b/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeRefinance.scala index 53732d7d7a..caecfd8b22 100644 --- a/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeRefinance.scala +++ b/hmda-quarterly-data-service/src/main/scala/hmda/quarterly/data/api/route/counts/loans/LoansVolumeLoanPurposeRefinance.scala @@ -5,7 +5,7 @@ import akka.http.scaladsl.server.Route import hmda.model.filing.lar.enums._ import hmda.quarterly.data.api.dao.repo.QuarterlyGraphRepo import hmda.quarterly.data.api.dto.QuarterGraphData.{GraphRoute, GraphSeriesInfo, GraphSeriesSummary} -import hmda.quarterly.data.api.route.counts.loans.Loans.{CATEGORY, LOAN_LABEL, LOAN_VOLUME_SUBTITLE, LOAN_VOLUME_TITLE, LOAN_VOLUME_TITLE_REFINANCE} +import hmda.quarterly.data.api.route.counts.loans.Loans.{CATEGORY, LOAN_LABEL, LOAN_VOLUME_SUBTITLE, LOAN_VOLUME_TITLE_REFINANCE} import hmda.quarterly.data.api.route.lib.Verbiage.COUNT_DECIMAL_PRECISION import hmda.quarterly.data.api.route.lib.Verbiage.LoanType._ import hmda.quarterly.data.api.serde.JsonSupport diff --git a/hmda-reporting/build.sbt b/hmda-reporting/build.sbt index e2595a2a28..a52e8e996e 100644 --- a/hmda-reporting/build.sbt +++ b/hmda-reporting/build.sbt @@ -1,4 +1,4 @@ -packageName in Docker := "hmda-reporting" +Docker / packageName := "hmda-reporting" version in Docker := "latest" diff --git a/hmda/build.sbt b/hmda/build.sbt index 3a266d0774..cc5a6fc85b 100644 --- a/hmda/build.sbt +++ b/hmda/build.sbt @@ -3,7 +3,7 @@ import com.typesafe.sbt.packager.docker._ version := "latest" -packageName in Docker := "hmda-platform" +Docker / packageName := "hmda-platform" dockerExposedPorts := Vector(8080, 8081, 8082, 19999, 9080, 1099) diff --git a/hmda/commercial-build.txt b/hmda/commercial-build.txt index 7160474280..a357a6b007 100644 --- a/hmda/commercial-build.txt +++ b/hmda/commercial-build.txt @@ -3,7 +3,7 @@ import com.typesafe.sbt.packager.docker._ version := "latest" -packageName in Docker := "hmda-platform" +Docker / packageName := "hmda-platform" dockerExposedPorts := Vector(8080, 8081, 8082, 19999, 9080, 1099) diff --git a/hmda/src/main/scala/hmda/HmdaPlatform.scala b/hmda/src/main/scala/hmda/HmdaPlatform.scala index 5f99b60b73..2f57009e6b 100644 --- a/hmda/src/main/scala/hmda/HmdaPlatform.scala +++ b/hmda/src/main/scala/hmda/HmdaPlatform.scala @@ -67,8 +67,8 @@ object HmdaPlatform extends App { implicit val classic: ClassicActorSystem = ClassicActorSystem(clusterConfig.getString("hmda.cluster.name"), clusterConfig) implicit val system: ActorSystem[_] = classic.toTyped - implicit val mat = Materializer(system) - implicit val cluster = Cluster(system) + implicit val mat: Materializer = Materializer(system) + implicit val cluster: Cluster = Cluster(system) ClusterBootstrap(system).start() AkkaManagement(system).start() diff --git a/hmda/src/main/scala/hmda/api/http/admin/SubmissionAdminHttpApi.scala b/hmda/src/main/scala/hmda/api/http/admin/SubmissionAdminHttpApi.scala index da32ceb675..cbd3ed5aad 100644 --- a/hmda/src/main/scala/hmda/api/http/admin/SubmissionAdminHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/admin/SubmissionAdminHttpApi.scala @@ -296,7 +296,7 @@ private class SubmissionAdminHttpApi(log: Logger, config: Config, clusterShardin val routes: OAuth2Authorization => Route = { (oauth2Authorization: OAuth2Authorization) => (get & path("institutions" / Segment / "signed" / "oldest" / Segment)) { (lei, period) => oauth2Authorization.authorizeTokenWithRole(hmdaAdminRole) { _ => - val fil = selectFiling(clusterSharding, lei, YearUtils.parsePeriod(period).right.get.year, YearUtils.parsePeriod(period).right.get.quarter) + val fil = selectFiling(clusterSharding, lei, YearUtils.parsePeriod(period).toOption.get.year, YearUtils.parsePeriod(period).toOption.get.quarter) val fOldestSigned: Future[Option[Submission]] = fil ? (ref => GetOldestSignedSubmission(ref)) onComplete(fOldestSigned) { @@ -311,7 +311,7 @@ private class SubmissionAdminHttpApi(log: Logger, config: Config, clusterShardin } } ~ (get & path("institutions" / Segment / "signed" / "latest" / Segment)) { (lei, period) => oauth2Authorization.authorizeTokenWithRole(hmdaAdminRole) { _ => - val fil = selectFiling(clusterSharding, lei, YearUtils.parsePeriod(period).right.get.year, YearUtils.parsePeriod(period).right.get.quarter) + val fil = selectFiling(clusterSharding, lei, YearUtils.parsePeriod(period).toOption.get.year, YearUtils.parsePeriod(period).toOption.get.quarter) val fLatestSigned: Future[Option[Submission]] = fil ? (ref => GetLatestSignedSubmission(ref)) onComplete(fLatestSigned) { @@ -326,7 +326,7 @@ private class SubmissionAdminHttpApi(log: Logger, config: Config, clusterShardin } } ~ (get & path("institutions" / Segment / "hmdafile" / "latest" / Segment)) { (lei, period) => oauth2Authorization.authorizeTokenWithRole(hmdaAdminRole) { _ => - val fil = selectFiling(clusterSharding, lei, YearUtils.parsePeriod(period).right.get.year, YearUtils.parsePeriod(period).right.get.quarter) + val fil = selectFiling(clusterSharding, lei, YearUtils.parsePeriod(period).toOption.get.year, YearUtils.parsePeriod(period).toOption.get.quarter) val fLatest: Future[Option[Submission]] = fil ? (ref => GetLatestSignedSubmission(ref)) onComplete(fLatest) { diff --git a/hmda/src/main/scala/hmda/api/http/filing/FilingHttpApi.scala b/hmda/src/main/scala/hmda/api/http/filing/FilingHttpApi.scala index 57016d1ce2..ca458cb485 100644 --- a/hmda/src/main/scala/hmda/api/http/filing/FilingHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/filing/FilingHttpApi.scala @@ -57,7 +57,7 @@ private class FilingHttpApi(log: Logger, sharding: ClusterSharding)(implicit val } ~ // GET/institutions//filings/ (get & extractUri) { uri => - parameter('page.as[Int] ? 1)(pageNumber => getFilingForInstitution(lei, year, None, uri, pageNumber)) + parameter(Symbol("page").as[Int] ? 1)(pageNumber => getFilingForInstitution(lei, year, None, uri, pageNumber)) } } } @@ -71,7 +71,7 @@ private class FilingHttpApi(log: Logger, sharding: ClusterSharding)(implicit val } ~ // GET /institutions//filings//quarters/ (get & extractUri) { uri => - parameter('page.as[Int] ? 1)(pageNumber => getFilingForInstitution(lei, period, Option(quarter), uri, pageNumber)) + parameter(Symbol("page").as[Int] ? 1)(pageNumber => getFilingForInstitution(lei, period, Option(quarter), uri, pageNumber)) } } } diff --git a/hmda/src/main/scala/hmda/api/http/filing/submissions/EditsHttpApi.scala b/hmda/src/main/scala/hmda/api/http/filing/submissions/EditsHttpApi.scala index 46901691c4..fefbc6f282 100644 --- a/hmda/src/main/scala/hmda/api/http/filing/submissions/EditsHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/filing/submissions/EditsHttpApi.scala @@ -156,7 +156,7 @@ private class EditsHttpApi(log: Logger, sharding: ClusterSharding)( val editNameRegex: Regex = new Regex("""[SVQ]\d\d\d(?:-\d)?""") pathPrefix("institutions" / Segment) { lei => (extractUri & get) { uri => - parameters('page.as[Int] ? 1) { page => + parameters(Symbol("page").as[Int] ? 1) { page => oAuth2Authorization.authorizeTokenWithLei(lei) { _ => path("filings" / IntNumber / "submissions" / IntNumber / "edits" / editNameRegex) { (year, seqNr, editName) => getEditDetails(lei, year, None, seqNr, page, editName, uri) diff --git a/hmda/src/main/scala/hmda/api/http/filing/submissions/ParseErrorHttpApi.scala b/hmda/src/main/scala/hmda/api/http/filing/submissions/ParseErrorHttpApi.scala index 895f8b9326..00c1edbdea 100644 --- a/hmda/src/main/scala/hmda/api/http/filing/submissions/ParseErrorHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/filing/submissions/ParseErrorHttpApi.scala @@ -35,7 +35,7 @@ private class ParseErrorHttpApi(log: Logger, sharding: ClusterSharding)(implicit // GET institutions//filings//submissions//parseErrors // GET institutions//filings//quarter//submissions//parseErrors def parseErrorPath(oauth2Authorization: OAuth2Authorization): Route = (extractUri & get) { uri => - parameters('page.as[Int] ? 1) { page => + parameters(Symbol("page").as[Int] ? 1) { page => pathPrefix("institutions" / Segment / "filings" / IntNumber) { (lei, year) => oauth2Authorization.authorizeTokenWithLei(lei) { _ => path("submissions" / IntNumber / "parseErrors") { seqNr => diff --git a/hmda/src/main/scala/hmda/api/http/public/HmdaFileParsingHttpApi.scala b/hmda/src/main/scala/hmda/api/http/public/HmdaFileParsingHttpApi.scala index 9a737b68d2..451184abea 100644 --- a/hmda/src/main/scala/hmda/api/http/public/HmdaFileParsingHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/public/HmdaFileParsingHttpApi.scala @@ -52,7 +52,7 @@ private class HmdaFileParsingHttpApi(implicit mat: Materializer) { fileUpload("file") { case (_, byteSource) => val headerSource = - Source.fromIterator(() => List("Row Number|Estimated ULI|Field Name|Input Value|Valid Values\n").toIterator) + Source.fromIterator(() => List("Row Number|Estimated ULI|Field Name|Input Value|Valid Values\n").iterator) val errors = byteSource .via(processHmdaFile) .filter(_.isDefined) diff --git a/hmda/src/main/scala/hmda/api/http/public/HmdaFileValidationHttpApi.scala b/hmda/src/main/scala/hmda/api/http/public/HmdaFileValidationHttpApi.scala index 65e8debe73..ab8c5299b7 100644 --- a/hmda/src/main/scala/hmda/api/http/public/HmdaFileValidationHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/public/HmdaFileValidationHttpApi.scala @@ -41,7 +41,7 @@ private class HmdaFileValidationHttpApi(implicit mat: Materializer) { private val validateYearRoute = path("validate" / IntNumber ) { year => post { - parameters('check.as[String] ? "all") { checkType => + parameters(Symbol("check").as[String] ? "all") { checkType => fileUpload("file") { case (_, byteSource) => val processF = @@ -174,7 +174,7 @@ private class HmdaFileValidationHttpApi(implicit mat: Materializer) { val (lefts, rights) = el.partition(_.isLeft) ValidationErrorSummary( lefts.map(_.left.get), - rights.map(_.right.get).filter(_.isDefined).map(_.get).map(_.map(validationErrorToSummary(_, period))) + rights.map(_.toOption.get).filter(_.isDefined).map(_.get).map(_.map(validationErrorToSummary(_, period))) ) } diff --git a/hmda/src/main/scala/hmda/api/http/public/LarValidationHttpApi.scala b/hmda/src/main/scala/hmda/api/http/public/LarValidationHttpApi.scala index eb3a742682..132901836a 100644 --- a/hmda/src/main/scala/hmda/api/http/public/LarValidationHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/public/LarValidationHttpApi.scala @@ -43,7 +43,7 @@ private class LarValidationHttpApi { //lar/validate/ private val validateYearLarRoute = path("validate" / IntNumber) { year => - parameters('check.as[String] ? "all") { checkType => + parameters(Symbol("check").as[String] ? "all") { checkType => post { respondWithHeader(RawHeader("Cache-Control", "no-cache")) { entity(as[LarValidateRequest]) { req => @@ -61,7 +61,7 @@ private class LarValidationHttpApi { //lar/validate/ private val validateQuarterLarRoute = path("validate" / IntNumber / "quarter" / Quarter) { (year, quarter) => - parameters('check.as[String] ? "all") { checkType => + parameters(Symbol("check").as[String] ? "all") { checkType => post { respondWithHeader(RawHeader("Cache-Control", "no-cache")) { entity(as[LarValidateRequest]) { req => diff --git a/hmda/src/main/scala/hmda/api/http/public/TsValidationHttpApi.scala b/hmda/src/main/scala/hmda/api/http/public/TsValidationHttpApi.scala index aaf9f400c0..9d9cd10f22 100644 --- a/hmda/src/main/scala/hmda/api/http/public/TsValidationHttpApi.scala +++ b/hmda/src/main/scala/hmda/api/http/public/TsValidationHttpApi.scala @@ -42,7 +42,7 @@ private class TsValidationHttpApi { //ts/validate/ private val validateYearTsRoute = path("validate" / IntNumber) { year => - parameters('check.as[String] ? "all") { checkType => + parameters(Symbol("check").as[String] ? "all") { checkType => post { respondWithHeader(RawHeader("Cache-Control", "no-cache")) { entity(as[TsValidateRequest]) { req => @@ -62,7 +62,7 @@ private class TsValidationHttpApi { // $COVERAGE-OFF$ private val validateQuarterTsRoute = path("validate" / IntNumber / "quarter" / Quarter) { (year, quarter) => - parameters('check.as[String] ? "all") { checkType => + parameters(Symbol("check").as[String] ? "all") { checkType => post { respondWithHeader(RawHeader("Cache-Control", "no-cache")) { entity(as[TsValidateRequest]) { req => diff --git a/hmda/src/main/scala/hmda/validation/engine/2026Qscala/LarEngine2026Q.scala b/hmda/src/main/scala/hmda/validation/engine/2026Qscala/LarEngine2026Q.scala index 5f7dfde8ab..6a68885c69 100644 --- a/hmda/src/main/scala/hmda/validation/engine/2026Qscala/LarEngine2026Q.scala +++ b/hmda/src/main/scala/hmda/validation/engine/2026Qscala/LarEngine2026Q.scala @@ -5,7 +5,6 @@ import hmda.model.filing.lar.LoanApplicationRegister import hmda.validation.context.ValidationContext import hmda.census.records.CensusRecords import hmda.validation.rules.lar.validity._ -import hmda.validation.engine.LarEngine2025 private[engine] object LarEngine2026Q extends ValidationEngine[LoanApplicationRegister] { diff --git a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q616_3.scala b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q616_3.scala index 2d508a3477..6d33110c54 100644 --- a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q616_3.scala +++ b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q616_3.scala @@ -4,12 +4,9 @@ import hmda.model.filing.lar.LoanApplicationRegister import hmda.parser.filing.ts.TsCsvParser.toValidBigDecimal import hmda.validation.dsl.ValidationResult import hmda.validation.rules.EditCheck -import hmda.validation.dsl.PredicateHmda._ import hmda.validation.dsl.PredicateCommon._ import hmda.validation.dsl.PredicateSyntax._ -import scala.util.Try - object Q616_3 extends EditCheck[LoanApplicationRegister] { override def name: String = "Q616-3" diff --git a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q621.scala b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q621.scala index 7073b03d59..d06974ddc6 100644 --- a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q621.scala +++ b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q621.scala @@ -2,9 +2,8 @@ package hmda.validation.rules.lar.quality._2025 import hmda.model.filing.lar.LoanApplicationRegister import hmda.validation.dsl.PredicateCommon._ -import hmda.validation.dsl.PredicateHmda._ import hmda.validation.dsl.PredicateSyntax._ -import hmda.validation.dsl.{ValidationFailure, ValidationResult, ValidationSuccess} +import hmda.validation.dsl.ValidationResult import hmda.validation.rules.EditCheck diff --git a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_1.scala b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_1.scala index 991ef6c6d9..8d3c0b90a0 100644 --- a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_1.scala +++ b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_1.scala @@ -3,7 +3,7 @@ package hmda.validation.rules.lar.quality._2025 import hmda.model.filing.lar.LoanApplicationRegister import hmda.validation.dsl.PredicateCommon._ import hmda.validation.dsl.PredicateSyntax._ -import hmda.validation.dsl.{ValidationFailure, ValidationResult} +import hmda.validation.dsl.ValidationResult import hmda.validation.rules.EditCheck import scala.util.Try diff --git a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_2.scala b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_2.scala index 641205d8e1..901625dfa2 100644 --- a/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_2.scala +++ b/hmda/src/main/scala/hmda/validation/rules/lar/quality/_2025/Q651_2.scala @@ -6,8 +6,6 @@ import hmda.validation.dsl.PredicateSyntax._ import hmda.validation.dsl.ValidationResult import hmda.validation.rules.EditCheck -import scala.util.Try - object Q651_2 extends EditCheck[LoanApplicationRegister] { override def name: String = "Q651-2" diff --git a/hmda/src/main/scala/hmda/validation/rules/lar/validity/2025/V695_3.scala b/hmda/src/main/scala/hmda/validation/rules/lar/validity/2025/V695_3.scala index 9c79a63619..6d5f0ee3e3 100644 --- a/hmda/src/main/scala/hmda/validation/rules/lar/validity/2025/V695_3.scala +++ b/hmda/src/main/scala/hmda/validation/rules/lar/validity/2025/V695_3.scala @@ -7,8 +7,6 @@ import hmda.validation.dsl.PredicateSyntax._ import hmda.validation.dsl.ValidationResult import hmda.validation.rules.EditCheck -import scala.util.Try - object V695_3 extends EditCheck[LoanApplicationRegister] { override def name: String = "V695-3" diff --git a/hmda/src/main/scala/hmda/validation/rules/lar/validity/common/V631_1.scala b/hmda/src/main/scala/hmda/validation/rules/lar/validity/common/V631_1.scala index ed642b6658..eb117e23d4 100644 --- a/hmda/src/main/scala/hmda/validation/rules/lar/validity/common/V631_1.scala +++ b/hmda/src/main/scala/hmda/validation/rules/lar/validity/common/V631_1.scala @@ -4,7 +4,7 @@ import hmda.model.filing.lar.LoanApplicationRegister import hmda.model.filing.lar.enums._ import hmda.validation.dsl.PredicateCommon._ import hmda.validation.dsl.PredicateSyntax._ -import hmda.validation.dsl.{ValidationResult, ValidationSuccess, ValidationFailure} +import hmda.validation.dsl.ValidationResult import hmda.validation.rules.EditCheck object V631_1 extends EditCheck[LoanApplicationRegister] { diff --git a/hmda/src/test/scala/hmda/persistence/submission/HmdaValidationErrorSpec.scala b/hmda/src/test/scala/hmda/persistence/submission/HmdaValidationErrorSpec.scala index 2a14b12b8b..52b01bb7cd 100644 --- a/hmda/src/test/scala/hmda/persistence/submission/HmdaValidationErrorSpec.scala +++ b/hmda/src/test/scala/hmda/persistence/submission/HmdaValidationErrorSpec.scala @@ -105,7 +105,7 @@ class HmdaValidationErrorSpec extends AkkaCassandraPersistenceSpec with ScalaFut ) hmdaValidationError ! PersistHmdaRowValidatedError(submissionId, 1, List(tsError), Some(errorsProbe.ref)) errorsProbe.expectMessage(HmdaRowValidatedError(1, List(tsError))) - val larErrorsWithIndex = Iterator.from(2).zip(larErrors.toIterator) + val larErrorsWithIndex = Iterator.from(2).zip(larErrors.iterator) larErrorsWithIndex.foreach { errorWithIndex => val index = errorWithIndex._1 val error = errorWithIndex._2 diff --git a/hmda/src/test/scala/hmda/util/SourceUtilsSpec.scala b/hmda/src/test/scala/hmda/util/SourceUtilsSpec.scala index 8b0fefa909..aa1ee44ae3 100644 --- a/hmda/src/test/scala/hmda/util/SourceUtilsSpec.scala +++ b/hmda/src/test/scala/hmda/util/SourceUtilsSpec.scala @@ -12,9 +12,9 @@ class SourceUtilsSpec extends AsyncWordSpec with MustMatchers { implicit val materializer = Materializer(system) implicit val ec = system.dispatcher - val source1 = Source.fromIterator(() => List(1, 2, 3, 4, 5).toIterator) - val source2 = Source.fromIterator(() => List(1, 2, 3, 4).toIterator) - val source3 = Source.fromIterator(() => List(1, 2, 3).toIterator) + val source1 = Source.fromIterator(() => List(1, 2, 3, 4, 5).iterator) + val source2 = Source.fromIterator(() => List(1, 2, 3, 4).iterator) + val source3 = Source.fromIterator(() => List(1, 2, 3).iterator) "SourceUtils" must { "count elements in a Source" in { diff --git a/hmda/src/test/scala/hmda/validation/filing/MacroValidationFlowSpec.scala b/hmda/src/test/scala/hmda/validation/filing/MacroValidationFlowSpec.scala index 73e1c0e975..ac43af8f23 100644 --- a/hmda/src/test/scala/hmda/validation/filing/MacroValidationFlowSpec.scala +++ b/hmda/src/test/scala/hmda/validation/filing/MacroValidationFlowSpec.scala @@ -45,10 +45,10 @@ class MacroValidationFlowSpec extends AsyncWordSpec with MustMatchers with Befor val total = lars.size val source: Source[LoanApplicationRegister, NotUsed] = Source - .fromIterator(() => lars.toIterator) + .fromIterator(() => lars.iterator) val tsSource: Source[TransmittalSheet, NotUsed] = Source - .fromIterator(() => ts.toIterator) + .fromIterator(() => ts.iterator) def fTotal: Future[Int] = count(source) @@ -194,7 +194,7 @@ class MacroValidationFlowSpec extends AsyncWordSpec with MustMatchers with Befor val q639Fail = source.map { lar => val larAction = lar.action.copy(actionTakenType = PurchasedLoan, preapproval = PreapprovalRequested) lar.copy(action = larAction) - } concat Source.fromIterator(() => List(extraLar).toIterator) + } concat Source.fromIterator(() => List(extraLar).iterator) Q639(q639Fail).map(e => e mustBe MacroValidationError("Q639")) } diff --git a/hmda/src/test/scala/hmda/validation/filing/ValidationFlowSpec.scala b/hmda/src/test/scala/hmda/validation/filing/ValidationFlowSpec.scala index a64dd4cca5..4f7db55658 100644 --- a/hmda/src/test/scala/hmda/validation/filing/ValidationFlowSpec.scala +++ b/hmda/src/test/scala/hmda/validation/filing/ValidationFlowSpec.scala @@ -66,10 +66,10 @@ class ValidationFlowSpec extends WordSpec with MustMatchers { val errorRows: Seq[String] = errorTsTxt ++ errorLarTxt "Validation Flow" must { - val cleanHmdaFileSource = Source.fromIterator(() => cleanRows.toIterator) + val cleanHmdaFileSource = Source.fromIterator(() => cleanRows.iterator) val cleanTs = TsCsvParser(cleanRows.head).getOrElse(TransmittalSheet()) val cleanLars = cleanRows.tail.map(s => LarCsvParser(s).getOrElse(LoanApplicationRegister())) - val errorHmdaFileSource = Source.fromIterator(() => errorRows.toIterator) + val errorHmdaFileSource = Source.fromIterator(() => errorRows.iterator) "validate Transmittal Sheet" in { cleanHmdaFileSource diff --git a/institutions-api/build.sbt b/institutions-api/build.sbt index 9fb06145fb..ab027e8657 100644 --- a/institutions-api/build.sbt +++ b/institutions-api/build.sbt @@ -1,4 +1,4 @@ -packageName in Docker := "institutions-api" +Docker / packageName := "institutions-api" dockerExposedPorts := Vector(9092) diff --git a/institutions-api/src/main/scala/hmda/institution/HmdaInstitutionApi.scala b/institutions-api/src/main/scala/hmda/institution/HmdaInstitutionApi.scala index 36916de33c..a5ca91a167 100644 --- a/institutions-api/src/main/scala/hmda/institution/HmdaInstitutionApi.scala +++ b/institutions-api/src/main/scala/hmda/institution/HmdaInstitutionApi.scala @@ -18,6 +18,7 @@ import hmda.serialization.kafka.InstitutionKafkaEventsDeserializer import org.apache.kafka.clients.consumer.ConsumerConfig import org.apache.kafka.common.serialization.StringDeserializer import org.slf4j.LoggerFactory +import scala.concurrent.ExecutionContextExecutor import scala.concurrent.Future @@ -37,9 +38,9 @@ object HmdaInstitutionApi extends App { val config = ConfigFactory.load() - implicit val system = ActorSystem("hmda-institutions") - implicit val materializer = Materializer(system) - implicit val ec = system.dispatcher + implicit val system: ActorSystem = ActorSystem("hmda-institutions") + implicit val materializer: Materializer = Materializer(system) + implicit val ec: ExecutionContextExecutor = system.dispatcher val host = config.getString("hmda.institution.http.host") val port = config.getString("hmda.institution.http.port") diff --git a/irs-publisher/build.sbt b/irs-publisher/build.sbt index 906cd52117..39d854440e 100644 --- a/irs-publisher/build.sbt +++ b/irs-publisher/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "irs-publisher" +Docker / packageName := "irs-publisher" version in Docker := "latest" diff --git a/modified-lar/build.sbt b/modified-lar/build.sbt index 9cfd31af82..4398edb49f 100644 --- a/modified-lar/build.sbt +++ b/modified-lar/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "modified-lar" +Docker / packageName := "modified-lar" version in Docker := "latest" diff --git a/modified-lar/src/main/scala/hmda/publication/lar/parser/ModifiedLarCsvParser.scala b/modified-lar/src/main/scala/hmda/publication/lar/parser/ModifiedLarCsvParser.scala index da740d255a..d750bddb76 100644 --- a/modified-lar/src/main/scala/hmda/publication/lar/parser/ModifiedLarCsvParser.scala +++ b/modified-lar/src/main/scala/hmda/publication/lar/parser/ModifiedLarCsvParser.scala @@ -257,12 +257,12 @@ object ModifiedLarCsvParser { if (code == 0) "" else code.toString private def roundToMidPoint(x: Int): Int = { - val rounded = 10000 * Math.floor(x / 10000) + 5000 + val rounded = 10000 * Math.floor(x.toDouble / 10000) + 5000 rounded.toDouble.toInt } private def roundToBigIntMidPoint(x: BigDecimal): String = { - val rounded = 10000 * (x/10000).setScale(0, RoundingMode.FLOOR) + 5000 + val rounded = 10000 * (x / 10000).setScale(0, RoundingMode.FLOOR) + 5000 rounded.toBigInt.toString } diff --git a/modified-lar/src/main/scala/hmda/publication/lar/publication/ModifiedLarPublisher.scala b/modified-lar/src/main/scala/hmda/publication/lar/publication/ModifiedLarPublisher.scala index 51e45cbc6b..da2605f98f 100644 --- a/modified-lar/src/main/scala/hmda/publication/lar/publication/ModifiedLarPublisher.scala +++ b/modified-lar/src/main/scala/hmda/publication/lar/publication/ModifiedLarPublisher.scala @@ -11,18 +11,14 @@ import akka.stream.scaladsl._ import akka.util.ByteString import akka.{Done, NotUsed} import com.typesafe.config.ConfigFactory -import hmda.messages.pubsub.HmdaTopics._ import hmda.messages.submission.HmdaRawDataEvents.LineAdded import hmda.census.records.CensusRecords._ import hmda.model.census.Census import hmda.model.filing.submission.SubmissionId import hmda.model.modifiedlar.{EnrichedModifiedLoanApplicationRegister, ModifiedLoanApplicationRegister} -import hmda.publication.KafkaUtils -import hmda.publication.KafkaUtils._ import hmda.publication.lar.parser.ModifiedLarCsvParser import hmda.query.HmdaQuery import hmda.query.repository.ModifiedLarRepository -import software.amazon.awssdk.auth.credentials.{AwsBasicCredentials, StaticCredentialsProvider} import software.amazon.awssdk.regions.Region import software.amazon.awssdk.regions.providers.AwsRegionProvider @@ -79,8 +75,6 @@ object ModifiedLarPublisher { .withS3RegionProvider(awsRegionProvider) .withListBucketApiVersion(ListBucketVersion2) - val kafkaProducer = KafkaUtils.getStringKafkaProducer(ctx.system) - Behaviors .supervise[ModifiedLarCommand] { Behaviors.receiveMessage { diff --git a/modified-lar/src/test/scala/hmda/publication/lar/parser/ModifiedLarPublisherSpec.scala b/modified-lar/src/test/scala/hmda/publication/lar/parser/ModifiedLarPublisherSpec.scala index c19b727d0e..9a69345574 100644 --- a/modified-lar/src/test/scala/hmda/publication/lar/parser/ModifiedLarPublisherSpec.scala +++ b/modified-lar/src/test/scala/hmda/publication/lar/parser/ModifiedLarPublisherSpec.scala @@ -31,7 +31,7 @@ //import slick.jdbc.JdbcProfile // //import scala.annotation.tailrec -//import scala.collection.JavaConverters._ +//import scala.jdk.CollectionConverters._ //import scala.collection.mutable //import scala.concurrent.duration._ // diff --git a/project/BuildSettings.scala b/project/BuildSettings.scala index 4484db00ad..29ecbca213 100644 --- a/project/BuildSettings.scala +++ b/project/BuildSettings.scala @@ -19,7 +19,7 @@ object BuildSettings { organization := buildOrganization, version := buildVersion, scalaVersion := buildScalaVersion, - scalacOptions ++= Seq("-Xlint", "-deprecation", "-unchecked", "-feature", "-Ymacro-annotations"), + scalacOptions ++= Seq("-Xlint", "-deprecation", "-unchecked", "-feature", "-Ymacro-annotations", "-Wconf:cat=lint-byname-implicit:s"), assembly / aggregate := false, Test / parallelExecution:= false, Test / fork := true, diff --git a/rate-limit/build.sbt b/rate-limit/build.sbt index e57b2bf014..fb78e08ca3 100644 --- a/rate-limit/build.sbt +++ b/rate-limit/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "rate-limit" +Docker / packageName := "rate-limit" version in Docker := "latest" diff --git a/ratespread-calculator/build.sbt b/ratespread-calculator/build.sbt index b10116d0d0..d41d568f63 100644 --- a/ratespread-calculator/build.sbt +++ b/ratespread-calculator/build.sbt @@ -1,3 +1,3 @@ -packageName in Docker := "ratespread-calculator" +Docker / packageName := "ratespread-calculator" version in Docker := "latest" diff --git a/ratespread-calculator/src/main/scala/hmda/calculator/api/http/RateSpreadAPIRoutes.scala b/ratespread-calculator/src/main/scala/hmda/calculator/api/http/RateSpreadAPIRoutes.scala index b0a8a15cb4..7758699d0f 100644 --- a/ratespread-calculator/src/main/scala/hmda/calculator/api/http/RateSpreadAPIRoutes.scala +++ b/ratespread-calculator/src/main/scala/hmda/calculator/api/http/RateSpreadAPIRoutes.scala @@ -52,10 +52,10 @@ private class RateSpreadAPIRoutes(log: Logger) { case (_, byteSource) => val headerSource = Source.fromIterator(() => - List("action_taken_type,loan_term,amortization_type,apr,lock_in_date,reverse_mortgage,rate_spread\n").toIterator + List("action_taken_type,loan_term,amortization_type,apr,lock_in_date,reverse_mortgage,rate_spread\n").iterator ) val rateSpreadValues = processRateSpreadRow(byteSource) - .map(rateSpread => rateSpread + "\n") + .map(rateSpread => rateSpread.toString + "\n") .map(s => ByteString(s)) val csv = diff --git a/ratespread-calculator/src/main/scala/hmda/calculator/apor/AporListEntity.scala b/ratespread-calculator/src/main/scala/hmda/calculator/apor/AporListEntity.scala index ab8015331d..3cb3dc3d7f 100644 --- a/ratespread-calculator/src/main/scala/hmda/calculator/apor/AporListEntity.scala +++ b/ratespread-calculator/src/main/scala/hmda/calculator/apor/AporListEntity.scala @@ -11,7 +11,7 @@ object AporListEntity { def variableRateAPORMap: mutable.Map[String, APOR] = _variableRateAPORMap - def AporOperation(apor: APOR, rateType: RateType) { + def AporOperation(apor: APOR, rateType: RateType): Unit = { if (rateType == FixedRate) { if (!_fixedRateAPORMap.contains(apor.rateDate.toString)) { _fixedRateAPORMap.put(apor.rateDate.toString, apor) diff --git a/ratespread-calculator/src/main/scala/hmda/calculator/scheduler/APORScheduler.scala b/ratespread-calculator/src/main/scala/hmda/calculator/scheduler/APORScheduler.scala index 33af0b2f6c..1c58f34f97 100644 --- a/ratespread-calculator/src/main/scala/hmda/calculator/scheduler/APORScheduler.scala +++ b/ratespread-calculator/src/main/scala/hmda/calculator/scheduler/APORScheduler.scala @@ -16,7 +16,6 @@ import com.typesafe.config.ConfigFactory import hmda.calculator.apor.{AporListEntity, FixedRate, RateType, VariableRate} import hmda.calculator.parser.APORCsvParser import org.slf4j.LoggerFactory -import software.amazon.awssdk.auth.credentials.{AwsBasicCredentials, StaticCredentialsProvider} import software.amazon.awssdk.regions.Region import software.amazon.awssdk.regions.providers.AwsRegionProvider @@ -126,7 +125,7 @@ object APORScheduler { .runWith(Sink.ignore) } - private def checkDownload(src: Option[(Source[ByteString, NotUsed], ObjectMetadata)],rateType: RateType){ + private def checkDownload(src: Option[(Source[ByteString, NotUsed], ObjectMetadata)],rateType: RateType): Unit = { if(src ==None){ logger.error(s"${APORScheduler.name} had an error downloading APOR file for: "+ rateType) } diff --git a/ratespread-calculator/src/test/scala/hmda/calculator/scheduler/APORSchedulerSpec.scala b/ratespread-calculator/src/test/scala/hmda/calculator/scheduler/APORSchedulerSpec.scala index d421aacd78..b80978b4a1 100644 --- a/ratespread-calculator/src/test/scala/hmda/calculator/scheduler/APORSchedulerSpec.scala +++ b/ratespread-calculator/src/test/scala/hmda/calculator/scheduler/APORSchedulerSpec.scala @@ -21,7 +21,7 @@ //import software.amazon.awssdk.regions.Region //import software.amazon.awssdk.regions.providers.AwsRegionProvider // -//import scala.collection.JavaConverters._ +//import scala.jdk.CollectionConverters._ //import scala.collection.mutable //import scala.util.Try //