diff --git a/.editorconfig b/.editorconfig
index f13063ac8065..884f1ae1eab3 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -15,6 +15,12 @@ insert_final_newline = true
[*.scala]
indent_size = 2
+[*.sc]
+indent_size = 2
+
+[*.sbt]
+indent_size = 2
+
[*.conf]
indent_size = 2
diff --git a/admin/app/controllers/TroubleshooterController.scala b/admin/app/controllers/TroubleshooterController.scala
index 6e1bbfeaaed8..c02a01d0bd74 100644
--- a/admin/app/controllers/TroubleshooterController.scala
+++ b/admin/app/controllers/TroubleshooterController.scala
@@ -10,7 +10,6 @@ import com.amazonaws.services.ec2.{AmazonEC2, AmazonEC2ClientBuilder}
import com.amazonaws.services.ec2.model.{DescribeInstancesRequest, Filter}
import scala.collection.JavaConverters._
-import scala.collection.JavaConversions._
import scala.concurrent.Future
import scala.concurrent.duration._
import conf.Configuration.aws.credentials
@@ -110,8 +109,8 @@ class TroubleshooterController(wsClient: WSClient, val controllerComponents: Con
}.asJavaCollection
val instancesDnsName: Seq[String] = awsEc2Client.map(
_.describeInstances(new DescribeInstancesRequest().withFilters(tagsAsFilters))
- .getReservations
- .flatMap(_.getInstances)
+ .getReservations.asScala
+ .flatMap(_.getInstances.asScala)
.map(_.getPrivateDnsName)
).toSeq.flatten
Random.shuffle(instancesDnsName).headOption
diff --git a/admin/app/dfp/AdvertiserAgent.scala b/admin/app/dfp/AdvertiserAgent.scala
index bc0f697dbe33..320aa3ba5b39 100644
--- a/admin/app/dfp/AdvertiserAgent.scala
+++ b/admin/app/dfp/AdvertiserAgent.scala
@@ -1,6 +1,6 @@
package dfp
-import common.AkkaAgent
+import com.gu.Box
import common.dfp.GuAdvertiser
import tools.BlockingOperations
@@ -8,7 +8,7 @@ import scala.concurrent.{ExecutionContext, Future}
class AdvertiserAgent(blockingOperations: BlockingOperations, dfpApi: DfpApi) {
- private lazy val cache = AkkaAgent(Seq.empty[GuAdvertiser])
+ private lazy val cache = Box(Seq.empty[GuAdvertiser])
def refresh()(implicit executionContext: ExecutionContext): Future[Seq[GuAdvertiser]] = {
blockingOperations.executeBlocking(dfpApi.getAllAdvertisers).flatMap { freshData =>
diff --git a/admin/app/dfp/CreativeTemplateAgent.scala b/admin/app/dfp/CreativeTemplateAgent.scala
index 3fdc3db62ac4..30297326a281 100644
--- a/admin/app/dfp/CreativeTemplateAgent.scala
+++ b/admin/app/dfp/CreativeTemplateAgent.scala
@@ -1,6 +1,6 @@
package dfp
-import common.AkkaAgent
+import com.gu.Box
import common.dfp.GuCreativeTemplate
import tools.BlockingOperations
@@ -8,7 +8,7 @@ import scala.concurrent.{ExecutionContext, Future}
class CreativeTemplateAgent(blockingOperations: BlockingOperations, dfpApi: DfpApi) {
- private lazy val cache = AkkaAgent(Seq.empty[GuCreativeTemplate])
+ private lazy val cache = Box(Seq.empty[GuCreativeTemplate])
def refresh()(implicit executionContext: ExecutionContext): Future[Seq[GuCreativeTemplate]] = {
blockingOperations.executeBlocking(dfpApi.readActiveCreativeTemplates()).flatMap { freshData =>
diff --git a/admin/app/dfp/DataAgent.scala b/admin/app/dfp/DataAgent.scala
index 6aea7b40298f..a0121b75160e 100644
--- a/admin/app/dfp/DataAgent.scala
+++ b/admin/app/dfp/DataAgent.scala
@@ -1,6 +1,7 @@
package dfp
-import common.{AkkaAgent, Logging}
+import com.gu.Box
+import common.Logging
import tools.BlockingOperations
import scala.concurrent.{ExecutionContext, Future}
@@ -9,7 +10,7 @@ import scala.util.{Failure, Success, Try}
trait DataAgent[K, V] extends Logging with implicits.Strings {
private val initialCache: DataCache[K, V] = DataCache(Map.empty[K, V])
- private lazy val cache = AkkaAgent(initialCache)
+ private lazy val cache = Box(initialCache)
def blockingOperations: BlockingOperations
diff --git a/admin/app/dfp/OrderAgent.scala b/admin/app/dfp/OrderAgent.scala
index 592291126e71..14146bfc70b8 100644
--- a/admin/app/dfp/OrderAgent.scala
+++ b/admin/app/dfp/OrderAgent.scala
@@ -1,6 +1,6 @@
package dfp
-import common.AkkaAgent
+import com.gu.Box
import common.dfp.GuOrder
import tools.BlockingOperations
@@ -8,7 +8,7 @@ import scala.concurrent.{ExecutionContext, Future}
class OrderAgent(blockingOperations: BlockingOperations, dfpApi: DfpApi) {
- private lazy val cache = AkkaAgent(Seq.empty[GuOrder])
+ private lazy val cache = Box(Seq.empty[GuOrder])
def refresh()(implicit executionContext: ExecutionContext): Future[Seq[GuOrder]] = {
blockingOperations.executeBlocking(dfpApi.getAllOrders).flatMap { freshData =>
diff --git a/admin/app/jobs/AnalyticsSanityCheckJob.scala b/admin/app/jobs/AnalyticsSanityCheckJob.scala
index a82f02928ba7..71fb96dc8624 100644
--- a/admin/app/jobs/AnalyticsSanityCheckJob.scala
+++ b/admin/app/jobs/AnalyticsSanityCheckJob.scala
@@ -9,7 +9,7 @@ import model.diagnostics.CloudWatch
import org.joda.time.DateTime
import services.{CloudWatchStats, OphanApi}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.{ExecutionContext, Future}
class AnalyticsSanityCheckJob(ophanApi: OphanApi) extends Logging {
@@ -47,7 +47,7 @@ class AnalyticsSanityCheckJob(ophanApi: OphanApi) extends Logging {
ophanViewsCount <- fOphanViews
} yield {
- def metricLastSum(stats: GetMetricStatisticsResult): Long = stats.getDatapoints.headOption.map(_.getSum.longValue).getOrElse(0L)
+ def metricLastSum(stats: GetMetricStatisticsResult): Long = stats.getDatapoints.asScala.headOption.map(_.getSum.longValue).getOrElse(0L)
rawPageViews.set(metricLastSum(rawPageViewsStats))
googlePageViews.set(metricLastSum(googlePageViewsStats))
diff --git a/admin/app/jobs/ExpiringSwitchesEmailJob.scala b/admin/app/jobs/ExpiringSwitchesEmailJob.scala
index 395ac5a21441..e8b8089ba17a 100644
--- a/admin/app/jobs/ExpiringSwitchesEmailJob.scala
+++ b/admin/app/jobs/ExpiringSwitchesEmailJob.scala
@@ -32,11 +32,11 @@ case class ExpiringSwitchesEmailJob(emailService: EmailService) extends Logging
subject = "Expiring Feature Switches",
htmlBody = Some(htmlBody))
- eventualResult onSuccess {
- case result => log.info(s"Message sent successfully with ID: ${result.getMessageId}")
+ eventualResult.foreach {
+ result => log.info(s"Message sent successfully with ID: ${result.getMessageId}")
}
- eventualResult onFailure {
+ eventualResult.failed.foreach {
case NonFatal(e) => log.error(s"Message failed: ${e.getMessage}")
}
diff --git a/admin/app/jobs/MissingVideoEncodingsJob.scala b/admin/app/jobs/MissingVideoEncodingsJob.scala
index cf73b79025cd..09b159f1ffdb 100644
--- a/admin/app/jobs/MissingVideoEncodingsJob.scala
+++ b/admin/app/jobs/MissingVideoEncodingsJob.scala
@@ -1,6 +1,6 @@
package jobs
-import common.{AkkaAgent, AkkaAsync, Edition, Logging}
+import common.{AkkaAsync, Edition, Logging}
import conf.switches.Switches
import model.{Content, Video}
@@ -10,6 +10,7 @@ import contentapi.ContentApiClient
import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.duration._
import akka.util.Timeout
+import com.gu.Box
import play.api.libs.ws.WSClient
import services.MissingVideoEncodings
import model.diagnostics.video.DynamoDbStore
@@ -17,7 +18,7 @@ import model.diagnostics.video.DynamoDbStore
class VideoEncodingsJob(contentApiClient: ContentApiClient, wsClient: WSClient) extends Logging {
- private val videoEncodingsAgent = AkkaAgent[Map[String, List[MissingEncoding]]](Map.empty)
+ private val videoEncodingsAgent = Box[Map[String, List[MissingEncoding]]](Map.empty)
implicit val timeout = Timeout(5 seconds)
def getReport(report: String): Option[List[MissingEncoding]] = videoEncodingsAgent().get(report)
@@ -46,41 +47,39 @@ class VideoEncodingsJob(contentApiClient: ContentApiClient, wsClient: WSClient)
response.results.map(Content.apply).collect { case v: Video => v }
}
- apiVideoResponse.onSuccess {
- case allVideoContent =>
- val missingVideoEncodings = Future.sequence(allVideoContent.map { video =>
- val videoAssets = video.elements.videos.filter(_.properties.isMain).flatMap(_.videos.videoAssets).flatMap(_.url)
-
- val missingVideoAsssets = Future.sequence(
- videoAssets.map { encoding =>
- doesEncodingExist(encoding) map {
- case true => Some(encoding)
- case false => None
- }
- }).map(_.flatten)
-
- missingVideoAsssets.map {
- missingEncodings => missingEncodings.map { missingEncoding => MissingEncoding(video, missingEncoding)}
- }
- }).map(_.flatten)
-
- missingVideoEncodings.onSuccess { case missingEncodings =>
- missingEncodings.map { missingEncoding: MissingEncoding =>
- DynamoDbStore.haveSeenMissingEncoding(missingEncoding.encodingSrc, missingEncoding.url) map {
- case true => log.debug(s"Already seen missing encoding: ${missingEncoding.encodingSrc} for url: ${missingEncoding.url}")
- case false =>
- log.info(s"Send notification for missing video encoding: ${missingEncoding.encodingSrc} for url: ${missingEncoding.url}")
- MissingVideoEncodings.sendMessage(akkaAsync)(missingEncoding.encodingSrc, missingEncoding.url, missingEncoding.title)
- DynamoDbStore.storeMissingEncoding(missingEncoding.encodingSrc, missingEncoding.url)
+ apiVideoResponse.foreach { allVideoContent =>
+ val missingVideoEncodings = Future.sequence(allVideoContent.map { video =>
+ val videoAssets = video.elements.videos.filter(_.properties.isMain).flatMap(_.videos.videoAssets).flatMap(_.url)
+
+ val missingVideoAsssets = Future.sequence(
+ videoAssets.map { encoding =>
+ doesEncodingExist(encoding) map {
+ case true => Some(encoding)
+ case false => None
}
+ }).map(_.flatten)
+
+ missingVideoAsssets.map {
+ missingEncodings => missingEncodings.map { missingEncoding => MissingEncoding(video, missingEncoding)}
+ }
+ }).map(_.flatten)
+
+ missingVideoEncodings.foreach { missingEncodings =>
+ missingEncodings.map { missingEncoding: MissingEncoding =>
+ DynamoDbStore.haveSeenMissingEncoding(missingEncoding.encodingSrc, missingEncoding.url) map {
+ case true => log.debug(s"Already seen missing encoding: ${missingEncoding.encodingSrc} for url: ${missingEncoding.url}")
+ case false =>
+ log.info(s"Send notification for missing video encoding: ${missingEncoding.encodingSrc} for url: ${missingEncoding.url}")
+ MissingVideoEncodings.sendMessage(akkaAsync)(missingEncoding.encodingSrc, missingEncoding.url, missingEncoding.title)
+ DynamoDbStore.storeMissingEncoding(missingEncoding.encodingSrc, missingEncoding.url)
}
- videoEncodingsAgent.send(old => old + ("missing-encodings" -> List()))
}
+ videoEncodingsAgent.send(old => old + ("missing-encodings" -> List()))
+ }
}
- apiVideoResponse.onFailure{
- case error: Throwable =>
- log.error(s"Unable to retrieve video content from api: ${error.getMessage}")
+ apiVideoResponse.failed.foreach { error: Throwable =>
+ log.error(s"Unable to retrieve video content from api: ${error.getMessage}")
}
}
}
diff --git a/admin/app/jobs/RebuildIndexJob.scala b/admin/app/jobs/RebuildIndexJob.scala
index 9a792f7ab494..da7964f3ca1a 100644
--- a/admin/app/jobs/RebuildIndexJob.scala
+++ b/admin/app/jobs/RebuildIndexJob.scala
@@ -77,8 +77,8 @@ class RebuildIndexJob(contentApiClient: ContentApiClient)(implicit executionCont
implicit class RichFuture[A](future: Future[A]) {
def withErrorLogging: Future[A] = {
- future onFailure {
- case throwable: Throwable => log.error("Error rebuilding index", throwable)
+ future.failed.foreach {
+ throwable: Throwable => log.error("Error rebuilding index", throwable)
}
future
diff --git a/admin/app/model/abtests/AbTests.scala b/admin/app/model/abtests/AbTests.scala
index 156c6e97c63d..6f9cb29fd23a 100644
--- a/admin/app/model/abtests/AbTests.scala
+++ b/admin/app/model/abtests/AbTests.scala
@@ -7,9 +7,10 @@ import org.joda.time.DateTime
import scala.concurrent.{ExecutionContext, Future}
import awswrappers.cloudwatch._
+import com.gu.Box
object AbTests {
- private val abTests = common.AkkaAgent[Map[String, Seq[String]]](Map.empty)
+ private val abTests = Box[Map[String, Seq[String]]](Map.empty)
def getTests(): Map[String, Seq[String]] = {
abTests.get()
diff --git a/admin/app/model/diagnostics/video/DynamoDbStore.scala b/admin/app/model/diagnostics/video/DynamoDbStore.scala
index f594b7cd50ee..6faa69d0af62 100644
--- a/admin/app/model/diagnostics/video/DynamoDbStore.scala
+++ b/admin/app/model/diagnostics/video/DynamoDbStore.scala
@@ -22,10 +22,9 @@ object DynamoDbStore extends Logging {
("web_url", new AttributeValue().withS(webUrl))
).asJava)
- client.updateItemFuture(updateItemRequest) onFailure {
- case error: Throwable =>
- val message = error.getMessage
- log.error(s"Unable to record missing video encoding with Dynamo DB: $message")
+ client.updateItemFuture(updateItemRequest).failed.foreach { error: Throwable =>
+ val message = error.getMessage
+ log.error(s"Unable to record missing video encoding with Dynamo DB: $message")
}
}
diff --git a/admin/app/pagepresser/HtmlCleaner.scala b/admin/app/pagepresser/HtmlCleaner.scala
index 445723cf47e1..3ddc7ef4fafa 100644
--- a/admin/app/pagepresser/HtmlCleaner.scala
+++ b/admin/app/pagepresser/HtmlCleaner.scala
@@ -6,7 +6,7 @@ import org.jsoup.Jsoup
import org.jsoup.nodes.{Element, Document}
import conf.Configuration
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
abstract class HtmlCleaner extends Logging {
lazy val fallbackCacheBustId = Configuration.r2Press.fallbackCachebustId
@@ -31,7 +31,7 @@ abstract class HtmlCleaner extends Logging {
}
def repairStaticLinks(document: Document): Document = {
- document.getAllElements.filter { el =>
+ document.getAllElements.asScala.filter { el =>
el.hasAttr("href") && el.attr("href").contains("/static/")
}.foreach { el =>
val staticLink = staticRegEx.findFirstMatchIn(el.attr("href"))
@@ -55,7 +55,7 @@ abstract class HtmlCleaner extends Logging {
}
def repairStaticSources(document: Document): Document = {
- val elementsWithSrc = document.getAllElements.filter { el =>
+ val elementsWithSrc = document.getAllElements.asScala.filter { el =>
el.hasAttr("src") && el.attr("src").contains("/static/")
}
elementsWithSrc.foreach { el =>
@@ -81,7 +81,7 @@ abstract class HtmlCleaner extends Logging {
def replaceLinks(document: Document): Document = {
try {
- document.getAllElements.filter{ el =>
+ document.getAllElements.asScala.filter{ el =>
(el.hasAttr("href") && el.attr("href").contains("http://")) || (el.hasAttr("src") && el.attr("src").contains("http://"))
}.foreach{ el =>
@@ -101,7 +101,7 @@ abstract class HtmlCleaner extends Logging {
}
def removeScripts(document: Document): Document = {
- document.getElementsByTag("script").toList.foreach(_.remove())
+ document.getElementsByTag("script").asScala.toList.foreach(_.remove())
document
}
@@ -109,10 +109,10 @@ abstract class HtmlCleaner extends Logging {
val element = document.getElementById("sub-header")
if (element != null) {
- val ads = element.children().toList.filterNot(e => e.attr("class") == "top-navigation twelve-col top-navigation-js")
+ val ads = element.children().asScala.toList.filterNot(e => e.attr("class") == "top-navigation twelve-col top-navigation-js")
ads.foreach(_.remove())
- val htmlComments = element.childNodes().filter(node => node.nodeName().equals("#comment"))
+ val htmlComments = element.childNodes().asScala.filter(node => node.nodeName().equals("#comment"))
htmlComments.foreach(_.remove())
val promo = document.getElementById("promo")
@@ -129,12 +129,12 @@ abstract class HtmlCleaner extends Logging {
}
def removeByClass(document: Document, className: String): Document = {
- document.getElementsByClass(className).foreach(_.remove())
+ document.getElementsByClass(className).asScala.foreach(_.remove())
document
}
def removeByTagName(document: Document, tagName: String): Document = {
- document.getElementsByTag(tagName).foreach(_.remove())
+ document.getElementsByTag(tagName).asScala.foreach(_.remove())
document
}
@@ -151,7 +151,7 @@ abstract class HtmlCleaner extends Logging {
}
def deComboLinks(document: Document): Document = {
- document.getAllElements.filter( elementContainsCombo ) .foreach { el =>
+ document.getAllElements.asScala.filter( elementContainsCombo ) .foreach { el =>
val combinerRegex = """//combo.guim.co.uk/(\w+)/(.+)(\.\w+)$""".r("cacheBustId", "paths", "extension")
val microAppRegex = """^m-(\d+)~(.+)""".r
diff --git a/admin/app/pagepresser/InteractiveHtmlCleaner.scala b/admin/app/pagepresser/InteractiveHtmlCleaner.scala
index 96cd8f1ab68c..976f90846cca 100644
--- a/admin/app/pagepresser/InteractiveHtmlCleaner.scala
+++ b/admin/app/pagepresser/InteractiveHtmlCleaner.scala
@@ -3,7 +3,7 @@ package pagepresser
import com.netaporter.uri.Uri._
import org.jsoup.Jsoup
import org.jsoup.nodes.{Element, Document}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.io.Source
object InteractiveHtmlCleaner extends HtmlCleaner with implicits.WSRequests {
@@ -22,11 +22,11 @@ object InteractiveHtmlCleaner extends HtmlCleaner with implicits.WSRequests {
}
override def removeScripts(document: Document): Document = {
- val scripts = document.getElementsByTag("script")
+ val scripts = document.getElementsByTag("script").asScala
val needsJquery = scripts.exists(_.html().toLowerCase.contains("jquery"))
val (interactiveScripts, nonInteractiveScripts) = scripts.partition { e =>
- val parentIds = e.parents().map(p => p.id()).toList
+ val parentIds = e.parents().asScala.map(p => p.id()).toList
parentIds.contains("interactive-content")
}
nonInteractiveScripts.toList.foreach(_.remove())
diff --git a/admin/app/pagepresser/PollsHtmlCleaner.scala b/admin/app/pagepresser/PollsHtmlCleaner.scala
index 87b0d77574c9..8ccb669ba720 100644
--- a/admin/app/pagepresser/PollsHtmlCleaner.scala
+++ b/admin/app/pagepresser/PollsHtmlCleaner.scala
@@ -4,7 +4,7 @@ import org.jsoup.nodes.Document
import play.api.libs.json.Json
import play.api.libs.ws.WSClient
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.{Await, ExecutionContext}
import scala.concurrent.duration._
@@ -21,7 +21,7 @@ case class Answer(id: Int, question: Int, count: Double)
class PollsHtmlCleaner(wsClient: WSClient)(implicit executionContext: ExecutionContext) extends HtmlCleaner with implicits.WSRequests {
override def canClean(document: Document): Boolean = {
- document.getElementsByAttribute("data-poll-url").nonEmpty
+ document.getElementsByAttribute("data-poll-url").asScala.nonEmpty
}
override def clean(document: Document, convertToHttps: Boolean): Document = {
@@ -43,14 +43,14 @@ class PollsHtmlCleaner(wsClient: WSClient)(implicit executionContext: ExecutionC
for (answer <- question.answers) yield {
val answerPercentage = Math.round(answer.count / question.count * 100)
- document.getElementById(s"a-${answer.id}").getElementsByClass("container").foreach { element =>
+ document.getElementById(s"a-${answer.id}").getElementsByClass("container").asScala.foreach { element =>
element.tagName("div")
element.attr("title", s"Votes cast: ${answer.count} ($answerPercentage%)")
- element.getElementsByClass("poll-result-bg").foreach { barResult =>
+ element.getElementsByClass("poll-result-bg").asScala.foreach { barResult =>
if(answer.id == mostAnsweredAnswerId.id) barResult.attr("class", "poll-result-bg leader")
barResult.attr("style", s"width: $answerPercentage%")
}
- element.getElementsByClass("poll-result-figure").foreach { value =>
+ element.getElementsByClass("poll-result-figure").asScala.foreach { value =>
if(answerPercentage > 70) value.attr("class", "poll-result-figure large")
value.text(s"$answerPercentage%")
}
diff --git a/admin/app/services/CloudWatchStats.scala b/admin/app/services/CloudWatchStats.scala
index b1cf90dd3b5f..675fbc3002e6 100644
--- a/admin/app/services/CloudWatchStats.scala
+++ b/admin/app/services/CloudWatchStats.scala
@@ -31,9 +31,8 @@ object CloudWatchStats extends Logging {
.withMetricName(metric)
.withDimensions(stage))
- ftr onFailure {
- case exception: Exception =>
- log.error(s"CloudWatch GetMetricStatisticsRequest error: ${exception.getMessage}", exception)
+ ftr.failed.foreach { exception: Throwable =>
+ log.error(s"CloudWatch GetMetricStatisticsRequest error: ${exception.getMessage}", exception)
}
ftr
diff --git a/admin/app/services/EmailService.scala b/admin/app/services/EmailService.scala
index f10bfa62e4f2..e3bcbc8c6708 100644
--- a/admin/app/services/EmailService.scala
+++ b/admin/app/services/EmailService.scala
@@ -8,7 +8,7 @@ import com.amazonaws.services.simpleemail.model.{Destination => EmailDestination
import common.{AkkaAsync, Logging}
import conf.Configuration.aws.mandatoryCredentials
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.duration._
import scala.concurrent.{ExecutionContext, Future, Promise}
import scala.util.control.NonFatal
@@ -57,16 +57,16 @@ class EmailService(akkaAsync: AkkaAsync) extends Logging {
val request = new SendEmailRequest()
.withSource(from)
- .withDestination(new EmailDestination().withToAddresses(to).withCcAddresses(cc))
+ .withDestination(new EmailDestination().withToAddresses(to.asJava).withCcAddresses(cc.asJava))
.withMessage(message)
val futureResponse = sendAsync(request)
- futureResponse onSuccess {
- case response => log.info(s"Sent message ID ${response.getMessageId}")
+ futureResponse.foreach {
+ response => log.info(s"Sent message ID ${response.getMessageId}")
}
- futureResponse onFailure {
+ futureResponse.failed.foreach {
case NonFatal(e) => log.error(s"Email send failed: ${e.getMessage}")
}
diff --git a/admin/app/tools/AssetMetrics.scala b/admin/app/tools/AssetMetrics.scala
index 391401025b2d..0d44813ec2f2 100644
--- a/admin/app/tools/AssetMetrics.scala
+++ b/admin/app/tools/AssetMetrics.scala
@@ -2,11 +2,12 @@ package tools
import awswrappers.cloudwatch._
import com.amazonaws.services.cloudwatch.model._
-import common.{AkkaAgent, Logging}
+import com.gu.Box
+import common.Logging
import org.joda.time.DateTime
import tools.CloudWatch._
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.{ExecutionContext, Future}
import scala.math.BigDecimal
import scala.util.control.NonFatal
@@ -41,7 +42,7 @@ object AssetMetrics {
private def metricResults(dimension: Dimension)(implicit executionContext: ExecutionContext): Future[List[GetMetricStatisticsResult]] =
allMetrics().flatMap { metricsList =>
Future.sequence {
- metricsList.getMetrics
+ metricsList.getMetrics.asScala
.filter(_.getDimensions.contains(dimension))
.toList
.map { metric =>
@@ -70,7 +71,7 @@ object AssetMetricsCache extends Logging {
case object sizeOfFiles extends ReportType
}
- private val cache = AkkaAgent[Map[ReportType, List[AssetMetric]]](Map.empty)
+ private val cache = Box[Map[ReportType, List[AssetMetric]]](Map.empty)
private def getReport(reportType: ReportType): Option[List[AssetMetric]] = cache().get(reportType)
diff --git a/admin/app/tools/CloudWatch.scala b/admin/app/tools/CloudWatch.scala
index 1c8b8f9c16e9..1cb1ff0a0ae1 100644
--- a/admin/app/tools/CloudWatch.scala
+++ b/admin/app/tools/CloudWatch.scala
@@ -8,11 +8,11 @@ import conf.Configuration
import conf.Configuration._
import org.joda.time.DateTime
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.{ExecutionContext, Future}
case class MaximumMetric(metric: GetMetricStatisticsResult) {
- lazy val max: Double = metric.getDatapoints.headOption.map(_.getMaximum.doubleValue()).getOrElse(0.0)
+ lazy val max: Double = metric.getDatapoints.asScala.headOption.map(_.getMaximum.doubleValue()).getOrElse(0.0)
}
object CloudWatch extends Logging {
@@ -95,9 +95,8 @@ object CloudWatch extends Logging {
)
def withErrorLogging[A](future: Future[A])(implicit executionContext: ExecutionContext): Future[A] = {
- future onFailure {
- case exception: Exception =>
- log.error(s"CloudWatch error: ${exception.getMessage}", exception)
+ future.failed.foreach { exception: Throwable =>
+ log.error(s"CloudWatch error: ${exception.getMessage}", exception)
}
future
}
@@ -142,7 +141,7 @@ object CloudWatch extends Logging {
latency <- fetchLatencyMetric(loadBalancer)
healthyHosts <- fetchHealthyHostMetric(loadBalancer)
} yield {
- val chartTitle = s"${loadBalancer.name} - ${healthyHosts.getDatapoints.last.getMaximum.toInt} instances"
+ val chartTitle = s"${loadBalancer.name} - ${healthyHosts.getDatapoints.asScala.last.getMaximum.toInt} instances"
new AwsDualYLineChart(chartTitle, ("Time", "2xx/minute", "latency (secs)"), ChartFormat(Colour.`tone-news-1`, Colour.`tone-comment-1`), oks, latency)
}
}
@@ -306,11 +305,11 @@ object CloudWatch extends Logging {
def compare(pvCount: GetMetricStatisticsResult,
pvWithAdCount: GetMetricStatisticsResult): GetMetricStatisticsResult = {
- val pvWithAdCountMap = pvWithAdCount.getDatapoints.map { point =>
+ val pvWithAdCountMap = pvWithAdCount.getDatapoints.asScala.map { point =>
point.getTimestamp -> point.getSum.toDouble
}.toMap
- val confidenceValues = pvCount.getDatapoints.foldLeft(List.empty[Datapoint]) {
+ val confidenceValues = pvCount.getDatapoints.asScala.foldLeft(List.empty[Datapoint]) {
case (soFar, pvCountValue) =>
val confidenceValue = pvWithAdCountMap.get(pvCountValue.getTimestamp).map {
pvWithAdCountValue => pvWithAdCountValue * 100 / pvCountValue.getSum.toDouble
@@ -318,7 +317,7 @@ object CloudWatch extends Logging {
soFar :+ new Datapoint().withTimestamp(pvCountValue.getTimestamp).withSum(confidenceValue)
}
- new GetMetricStatisticsResult().withDatapoints(confidenceValues)
+ new GetMetricStatisticsResult().withDatapoints(confidenceValues.asJava)
}
for {
@@ -328,11 +327,11 @@ object CloudWatch extends Logging {
val confidenceMetric = compare(pageViewCount, pageViewWithAdCount)
val averageMetric = {
val dataPoints = confidenceMetric.getDatapoints
- val average = dataPoints.map(_.getSum.toDouble).sum / dataPoints.length
- val averageDataPoints = dataPoints map { point =>
+ val average = dataPoints.asScala.map(_.getSum.toDouble).sum / dataPoints.asScala.length
+ val averageDataPoints = dataPoints.asScala map { point =>
new Datapoint().withTimestamp(point.getTimestamp).withSum(average)
}
- new GetMetricStatisticsResult().withDatapoints(averageDataPoints)
+ new GetMetricStatisticsResult().withDatapoints(averageDataPoints.asJava)
}
new AwsLineChart(
name = "Ad Response Confidence",
diff --git a/admin/app/tools/LoadBalancer.scala b/admin/app/tools/LoadBalancer.scala
index 5e500ecdeb4c..5414df35a68a 100644
--- a/admin/app/tools/LoadBalancer.scala
+++ b/admin/app/tools/LoadBalancer.scala
@@ -1,8 +1,10 @@
package tools
-import common.{Logging, AkkaAgent}
+import common.Logging
import com.amazonaws.services.elasticloadbalancing.AmazonElasticLoadBalancingClient
-import scala.collection.JavaConversions._
+import com.gu.Box
+
+import scala.collection.JavaConverters._
case class LoadBalancer(id: String,
name: String,
@@ -33,7 +35,7 @@ object LoadBalancer extends Logging {
)
- private val agent = AkkaAgent(loadBalancers)
+ private val agent = Box(loadBalancers)
def refresh() {
log.info("starting refresh LoadBalancer ELB DNS names")
@@ -46,7 +48,7 @@ object LoadBalancer extends Logging {
val elbs = client.describeLoadBalancers().getLoadBalancerDescriptions
client.shutdown()
val newLoadBalancers = loadBalancers.map{ lb =>
- lb.copy(url = elbs.find(_.getLoadBalancerName == lb.id).map(_.getDNSName))
+ lb.copy(url = elbs.asScala.find(_.getLoadBalancerName == lb.id).map(_.getDNSName))
}
agent.send(newLoadBalancers)
}
diff --git a/admin/app/tools/charts/charts.scala b/admin/app/tools/charts/charts.scala
index 3b7a1a141655..b02c79f9f002 100644
--- a/admin/app/tools/charts/charts.scala
+++ b/admin/app/tools/charts/charts.scala
@@ -7,7 +7,7 @@ import common.editions.Uk
import org.joda.time.{DateTime, DateTimeZone}
import play.api.libs.json._
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.collection.mutable.{Map => MutableMap}
case class ChartRow(rowKey: String, values: Seq[Double]) {
@@ -119,7 +119,7 @@ class AwsLineChart(
val table = new ChartTable(dataColumns)
(dataColumns, charts.toList).zipped.map( (column, chart) => {
- table.addColumn(column, ChartColumn(chart.getDatapoints))
+ table.addColumn(column, ChartColumn(chart.getDatapoints.asScala))
})
table.asChartRow(toLabel, toValue)
@@ -147,7 +147,7 @@ class ABDataChart(name: String, ablabels: Seq[String], format: ChartFormat, char
// Do not consider any metrics that have less than three data points.
(ablabels.tail, charts.toList).zipped.map( (column, chart) =>
- (column, ChartColumn(chart.getDatapoints))
+ (column, ChartColumn(chart.getDatapoints.asScala))
).filter{ case (label, column) => column.values.length > 3 }
}
diff --git a/applications/app/controllers/AllIndexController.scala b/applications/app/controllers/AllIndexController.scala
index 46106087361b..ea88cf453388 100644
--- a/applications/app/controllers/AllIndexController.scala
+++ b/applications/app/controllers/AllIndexController.scala
@@ -146,7 +146,7 @@ class AllIndexController(
}
}
- result.onFailure {
+ result.failed.foreach {
case GuardianContentApiError(404, _, _) =>
log.warn(s"Cannot fetch content for request '${request.uri}'")
case e: Exception =>
@@ -167,7 +167,7 @@ class AllIndexController(
item.results.getOrElse(Nil).headOption.flatMap(_.webPublicationDate).map(_.toJoda.withZone(DateTimeZone.UTC))
}
- result.onFailure {
+ result.failed.foreach {
case GuardianContentApiError(404, _, _) =>
log.warn(s"Cannot fetch content for request '${request.uri}'")
case e: Exception =>
diff --git a/applications/app/controllers/HealthCheck.scala b/applications/app/controllers/HealthCheck.scala
index ff527c2a8f08..65795891f6eb 100644
--- a/applications/app/controllers/HealthCheck.scala
+++ b/applications/app/controllers/HealthCheck.scala
@@ -7,7 +7,7 @@ import play.api.mvc.ControllerComponents
class HealthCheck(wsClient: WSClient, sectionsLookUp: SectionsLookUp, val controllerComponents: ControllerComponents) extends CachedHealthCheck(
policy = HealthCheckPolicy.All,
- preconditionMaybe = Some(HealthCheckPrecondition(sectionsLookUp.isLoaded, "Sections lookup service has not been loaded yet"))
+ preconditionMaybe = Some(HealthCheckPrecondition(sectionsLookUp.isLoaded _, "Sections lookup service has not been loaded yet"))
)(
NeverExpiresSingleHealthCheck("/books"),
NeverExpiresSingleHealthCheck("/books/harrypotter"),
diff --git a/applications/app/jobs/SitemapLifecycle.scala b/applications/app/jobs/SitemapLifecycle.scala
index dfa34bfd8522..b7b52ed872f4 100644
--- a/applications/app/jobs/SitemapLifecycle.scala
+++ b/applications/app/jobs/SitemapLifecycle.scala
@@ -1,6 +1,7 @@
package jobs
import app.LifecycleComponent
+import com.gu.Box
import common._
import contentapi.ContentApiClient
import services.{NewsSiteMap, VideoSiteMap}
@@ -30,7 +31,7 @@ class SiteMapJob(contentApiClient: ContentApiClient) extends Logging {
private val newsSiteMap = new NewsSiteMap(contentApiClient)
private val videoSiteMap = new VideoSiteMap(contentApiClient)
- private val siteMapContent = AkkaAgent[Option[SiteMapContent]](None)
+ private val siteMapContent = Box[Option[SiteMapContent]](None)
def update()(implicit executionContext: ExecutionContext): Unit = {
for {
diff --git a/applications/test/GalleryTemplateTest.scala b/applications/test/GalleryTemplateTest.scala
index 8d043aef1535..0854ca740e20 100644
--- a/applications/test/GalleryTemplateTest.scala
+++ b/applications/test/GalleryTemplateTest.scala
@@ -3,7 +3,7 @@ package test
import conf.switches.Switches.FacebookShareUseTrailPicFirstSwitch
import org.scalatest.{DoNotDiscover, Matchers, FlatSpec}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class GalleryTemplateTest extends FlatSpec with Matchers with ConfiguredTestSuite {
@@ -18,25 +18,25 @@ import scala.collection.JavaConversions._
it should "render all images in the gallery" in goTo("/news/gallery/2012/may/02/picture-desk-live-kabul-burma") { browser =>
import browser._
- $(".gallery__item:not(.gallery__item--advert)").length should be (22)
+ $(".gallery__item:not(.gallery__item--advert)").asScala.length should be (22)
}
it should "insert ad slots after every four images" in goTo("/news/gallery/2012/may/02/picture-desk-live-kabul-burma") { browser =>
import browser._
- $(".gallery__item--advert").length should be (5)
+ $(".gallery__item--advert").asScala.length should be (5)
}
it should "show the twitter card meta-data" in goTo("/music/gallery/2012/jun/23/simon-bolivar-orchestra-dudamel-southbank-centre") { browser =>
import browser._
- $("meta[name='twitter:card']").attributes("content").head should be ("summary_large_image")
- $("meta[name='twitter:title']").attributes("content").head should be ("Southbank Centre's Sounds Venezuela festival - in pictures")
+ $("meta[name='twitter:card']").attributes("content").asScala.head should be ("summary_large_image")
+ $("meta[name='twitter:title']").attributes("content").asScala.head should be ("Southbank Centre's Sounds Venezuela festival - in pictures")
}
it should "select the trail picture for the opengraph image when FacebookShareUseTrailPicFirstSwitch is ON" in {
FacebookShareUseTrailPicFirstSwitch.switchOn()
goTo("/lifeandstyle/gallery/2014/nov/24/flying-dogs-in-pictures") { browser =>
import browser._
- $("meta[property='og:image']").attributes("content").head should include ("61e027cb-fec8-4aa3-a12b-e50f99493399-2060x1236.jpeg")
+ $("meta[property='og:image']").attributes("content").asScala.head should include ("61e027cb-fec8-4aa3-a12b-e50f99493399-2060x1236.jpeg")
}
}
@@ -44,7 +44,7 @@ import scala.collection.JavaConversions._
FacebookShareUseTrailPicFirstSwitch.switchOff()
goTo("/lifeandstyle/gallery/2014/nov/24/flying-dogs-in-pictures") { browser =>
import browser._
- $("meta[property='og:image']").attributes("content").head should include ("e3867edb-e9d5-4be9-9c51-12258b686869-1498x2040.jpeg")
+ $("meta[property='og:image']").attributes("content").asScala.head should include ("e3867edb-e9d5-4be9-9c51-12258b686869-1498x2040.jpeg")
}
}
diff --git a/applications/test/InteractiveTemplateTest.scala b/applications/test/InteractiveTemplateTest.scala
index 067a36f20e3c..7ac87a11fce3 100644
--- a/applications/test/InteractiveTemplateTest.scala
+++ b/applications/test/InteractiveTemplateTest.scala
@@ -1,13 +1,13 @@
package test
import org.scalatest.{DoNotDiscover, FlatSpec, Matchers}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class InteractiveTemplateTest extends FlatSpec with Matchers with ConfiguredTestSuite {
"Interactive html template" should "show the twitter card meta-data" in goTo("/us-news/ng-interactive/2015/apr/13/marco-rubio-campaign-resume-guardian") { browser =>
import browser._
- $("meta[name='twitter:card']").attributes("content").head should be ("summary_large_image")
- $("meta[name='twitter:title']").attributes("content").head should be ("Get to know Marco Rubio, your latest (experienced!) candidate for president")
+ $("meta[name='twitter:card']").attributes("content").asScala.head should be ("summary_large_image")
+ $("meta[name='twitter:title']").attributes("content").asScala.head should be ("Get to know Marco Rubio, your latest (experienced!) candidate for president")
}
}
diff --git a/applications/test/SectionTemplateTest.scala b/applications/test/SectionTemplateTest.scala
index 54939c29cca0..909f53412998 100644
--- a/applications/test/SectionTemplateTest.scala
+++ b/applications/test/SectionTemplateTest.scala
@@ -6,7 +6,7 @@ import org.fluentlenium.core.domain.FluentWebElement
import org.scalatest.{DoNotDiscover, FlatSpec, Matchers}
import play.api.test.TestBrowser
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class SectionTemplateTest extends FlatSpec with Matchers with ConfiguredTestSuite {
@@ -25,7 +25,7 @@ import scala.collection.JavaConversions._
def getAlternateLinks(browser: TestBrowser): Seq[FluentWebElement] = {
import browser._
- $("link[rel='alternate']").toList
+ $("link[rel='alternate']").asScala.toList
.filterNot(_.attribute("type") == "application/rss+xml")
.filter(element => {
val href: Option[String] = Option(element.attribute("href"))
diff --git a/applications/test/TagFeatureTest.scala b/applications/test/TagFeatureTest.scala
index 08c3c889e438..9b31f2b58d57 100644
--- a/applications/test/TagFeatureTest.scala
+++ b/applications/test/TagFeatureTest.scala
@@ -2,7 +2,7 @@ package test
import org.scalatest.{DoNotDiscover, FeatureSpec, GivenWhenThen, Matchers}
import services.IndexPagePagination
-import collection.JavaConversions._
+import collection.JavaConverters._
import conf.switches.Switches
import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
@@ -16,7 +16,7 @@ import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
goTo("/technology/askjack") { browser =>
val trails = browser.$(".fc-item__container")
- trails.length should be(IndexPagePagination.pageSize)
+ trails.asScala.length should be(IndexPagePagination.pageSize)
}
}
}
@@ -41,7 +41,7 @@ import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
goTo("/profile/samjones") { browser =>
Then("I should not see her profile image")
val profileImages = browser.find(".profile__img img")
- profileImages.length should be(0)
+ profileImages.asScala.length should be(0)
}
}
@@ -57,7 +57,7 @@ import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
import browser._
val cardsOnFirstPage = browser.find("[data-test-id=facia-card]")
- val dataIdsOnFirstPage = cardsOnFirstPage.map(_.attribute("data-id")).toSet
+ val dataIdsOnFirstPage = cardsOnFirstPage.asScala.map(_.attribute("data-id")).toSet
cardsOnFirstPage.size should be > 10
findByRel($("link"), "next").head.attribute("href") should endWith ("/sport/cycling?page=2")
findByRel($("link"), "prev") should be (None)
@@ -65,7 +65,7 @@ import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
Then("I should be able to navigate to the 'next' page")
el(".pagination").$("[rel=next]").click()
val cardsOnNextPage = browser.find("[data-test-id=facia-card]")
- val dataIdsOnNextPage = cardsOnNextPage.map(_.attribute("data-id"))
+ val dataIdsOnNextPage = cardsOnNextPage.asScala.map(_.attribute("data-id"))
cardsOnNextPage.size should be > 10
findByRel($("link"), "next").head.attribute("href") should endWith ("/sport/cycling?page=3")
@@ -79,11 +79,11 @@ import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
And("I should be able to navigate to the 'previous' page")
el(".pagination").$("[rel=prev]").click()
val cardsOnPreviousPage = browser.find("[data-test-id=facia-card]")
- cardsOnPreviousPage.map(_.attribute("data-id")).toSet should be(dataIdsOnFirstPage)
+ cardsOnPreviousPage.asScala.map(_.attribute("data-id")).toSet should be(dataIdsOnFirstPage)
}
}
}
//I'm not having a happy time with the selectors on links...
- private def findByRel(elements: FluentList[FluentWebElement], rel: String) = elements.toSeq.find(_.attribute("rel") == rel)
+ private def findByRel(elements: FluentList[FluentWebElement], rel: String) = elements.asScala.find(_.attribute("rel") == rel)
}
diff --git a/applications/test/common/CombinerFeatureTest.scala b/applications/test/common/CombinerFeatureTest.scala
index 64d55cc2139b..db32c0fedfb3 100644
--- a/applications/test/common/CombinerFeatureTest.scala
+++ b/applications/test/common/CombinerFeatureTest.scala
@@ -2,7 +2,7 @@ package common
import org.scalatest.{DoNotDiscover, FeatureSpec, GivenWhenThen, Matchers}
import test.ConfiguredTestSuite
-import collection.JavaConversions._
+import collection.JavaConverters._
@DoNotDiscover class CombinerFeatureTest extends FeatureSpec with GivenWhenThen with Matchers with ConfiguredTestSuite {
@@ -16,7 +16,7 @@ import collection.JavaConversions._
import browser._
val trails = $(".fc-slice__item")
Then("I should see content tagged with both tags")
- trails.length should be > 1
+ trails.asScala.length should be > 1
}
}
@@ -29,7 +29,7 @@ import collection.JavaConversions._
val trails = $(".fromage, .fc-slice__item, .linkslist__item")
Then("I should see content tagged with both the section and the tag")
$("[data-test-id=header-title]").text.toLowerCase should be ("science + apple")
- trails.length should be > 10
+ trails.asScala.length should be > 10
}
}
@@ -41,7 +41,7 @@ import collection.JavaConversions._
import browser._
val trails = $(".fromage, .fc-slice__item, .linkslist__item")
Then("I should see content tagged with both tags")
- trails.length should be > 10
+ trails.asScala.length should be > 10
}
}
@@ -53,7 +53,7 @@ import collection.JavaConversions._
import browser._
val trails = $(".fromage, .fc-slice__item, .linkslist__item")
Then("I should see content tagged with both tags")
- trails.length should be > 5
+ trails.asScala.length should be > 5
}
}
}
diff --git a/applications/test/package.scala b/applications/test/package.scala
index 2fa87a7aa52e..c79f4b0d6dc6 100644
--- a/applications/test/package.scala
+++ b/applications/test/package.scala
@@ -5,12 +5,12 @@ import java.util.{List => JList}
import org.scalatest.Suites
import services.{FacebookGraphApiTest, IndexPageTest, NewspaperControllerTest}
-import collection.JavaConversions._
+import collection.JavaConverters._
object `package` {
implicit class ListString2FirstNonEmpty(list: JList[String]) {
- lazy val firstNonEmpty: Option[String] = list find { !_.isEmpty }
+ lazy val firstNonEmpty: Option[String] = list.asScala find { !_.isEmpty }
}
}
diff --git a/archive/test/package.scala b/archive/test/package.scala
index 6dbd9d55f96c..d2a2efaa7e0c 100644
--- a/archive/test/package.scala
+++ b/archive/test/package.scala
@@ -3,12 +3,12 @@ package test
import java.util.{ List => JList }
import org.scalatest.Suites
-import collection.JavaConversions._
+import collection.JavaConverters._
object `package` {
implicit class ListString2FirstNonEmpty(list: JList[String]) {
- lazy val firstNonEmpty: Option[String] = list find { !_.isEmpty }
+ lazy val firstNonEmpty: Option[String] = list.asScala find { !_.isEmpty }
}
}
diff --git a/article/app/model/KeyEventData.scala b/article/app/model/KeyEventData.scala
index dd999f8669e5..e2e5fd7a3dec 100644
--- a/article/app/model/KeyEventData.scala
+++ b/article/app/model/KeyEventData.scala
@@ -2,7 +2,7 @@ package model
import model.liveblog.BodyBlock.{KeyEvent, SummaryEvent}
import model.liveblog.{Blocks, BodyBlock, LiveBlogDate}
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
object KeyEventData {
@@ -17,10 +17,9 @@ object KeyEventData {
def apply(blocks: Seq[BodyBlock], timezone: DateTimeZone): Seq[KeyEventData] = {
val TimelineMaxEntries = 7
-
val latestSummary = blocks.find(_.eventType == SummaryEvent)
val keyEvents = blocks.filter(_.eventType == KeyEvent)
- val bodyBlocks = (latestSummary.toSeq ++ keyEvents).sortBy(_.lastModifiedDate.getOrElse(new DateTime(0)).millis).reverse.take(TimelineMaxEntries)
+ val bodyBlocks = (latestSummary.toSeq ++ keyEvents).sortBy(_.lastModifiedDate.getOrElse(new DateTime(0)).toInstant.getMillis).reverse.take(TimelineMaxEntries)
bodyBlocks.map { bodyBlock =>
KeyEventData(bodyBlock.id, bodyBlock.publishedCreatedDate(timezone), bodyBlock.title)
diff --git a/article/test/AnalyticsFeatureTest.scala b/article/test/AnalyticsFeatureTest.scala
index d3c1ab87e23e..91c6af27bafb 100644
--- a/article/test/AnalyticsFeatureTest.scala
+++ b/article/test/AnalyticsFeatureTest.scala
@@ -1,7 +1,7 @@
package test
import org.scalatest.{DoNotDiscover, Matchers, GivenWhenThen, FeatureSpec}
-import collection.JavaConversions._
+import collection.JavaConverters._
import org.fluentlenium.core.domain.FluentWebElement
import conf.Configuration
@@ -24,7 +24,7 @@ import conf.Configuration
Given("I am on an article entitled 'Olympic opening ceremony will recreate countryside with real animals'")
goTo("/sport/2012/jun/12/london-2012-olympic-opening-ceremony") { browser =>
Then("all links on the page should be decorated with the Omniture meta-data attribute")
- val anchorsWithNoDataLink = browser.find("a").filter(hasNoLinkName)
+ val anchorsWithNoDataLink = browser.find("a").asScala.filter(hasNoLinkName)
anchorsWithNoDataLink should have length 0
}
diff --git a/article/test/ArticleControllerTest.scala b/article/test/ArticleControllerTest.scala
index 5ee8553932af..8e37421569a4 100644
--- a/article/test/ArticleControllerTest.scala
+++ b/article/test/ArticleControllerTest.scala
@@ -6,7 +6,7 @@ import play.api.test._
import play.api.test.Helpers._
import org.scalatest.{BeforeAndAfterAll, DoNotDiscover, FlatSpec, Matchers}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class ArticleControllerTest
extends FlatSpec
@@ -124,6 +124,6 @@ import scala.collection.JavaConversions._
"Interactive articles" should "provide a boot.js script element as a main embed" in goTo("/sport/2015/sep/11/how-women-in-tennis-achieved-equal-pay-us-open") { browser =>
import browser._
- $(".media-primary > .element-interactive").attributes("data-interactive").head should endWith ("boot.js")
+ $(".media-primary > .element-interactive").attributes("data-interactive").asScala.head should endWith ("boot.js")
}
}
diff --git a/article/test/ArticleFeatureTest.scala b/article/test/ArticleFeatureTest.scala
index ac7a8e5b4cef..5d5aa4f26ae0 100644
--- a/article/test/ArticleFeatureTest.scala
+++ b/article/test/ArticleFeatureTest.scala
@@ -5,7 +5,7 @@ import conf.switches.Switches._
import org.openqa.selenium.By
import org.scalatest.{DoNotDiscover, Matchers, GivenWhenThen, FeatureSpec}
import org.fluentlenium.core.filter.FilterConstructor._
-import collection.JavaConversions._
+import collection.JavaConverters._
@DoNotDiscover class ArticleFeatureTest extends FeatureSpec with GivenWhenThen with Matchers with ConfiguredTestSuite {
@@ -113,7 +113,7 @@ import collection.JavaConversions._
authors.last.attribute("content") should be("Mark Jones")
And("it should handle escaping")
- authors(4).attribute("content") should be("Phelim O'Neill")
+ authors.asScala(4).attribute("content") should be("Phelim O'Neill")
}
}
@@ -218,7 +218,7 @@ import collection.JavaConversions._
goTo("/travel/2017/mar/20/10-best-things-to-do-tallinn-estonia-museums-cafe-art-beer") { browser =>
import browser._
- $(".ad-slot--right").length should be(1)
+ $(".ad-slot--right").asScala.length should be(1)
val adSlotRight = $(".ad-slot--right")
Then("The article-aside MPU should have the correct sizes")
@@ -258,7 +258,7 @@ import collection.JavaConversions._
Then("I should see pictures in the body of the article")
- $(".content__article-body .element-image").length should be(2)
+ $(".content__article-body .element-image").asScala.length should be(2)
val inBodyImage = el(".content__article-body .element-image")
@@ -312,12 +312,12 @@ import collection.JavaConversions._
Then("It should automatically link to tags")
val taglinks = $("a[data-link-name=auto-linked-tag]")
- taglinks.length should be(2)
+ taglinks.asScala.length should be(2)
- taglinks(0).text should be("GCHQ")
- taglinks(0).attribute("href") should endWith("/uk/gchq")
+ taglinks.asScala(0).text should be("GCHQ")
+ taglinks.asScala(0).attribute("href") should endWith("/uk/gchq")
- taglinks(1).text should be("Pakistan")
+ taglinks.asScala(1).text should be("Pakistan")
}
}
@@ -330,7 +330,7 @@ import collection.JavaConversions._
Then("It should automatically link to tags")
val taglinks = $("a[data-link-name=auto-linked-tag]")
- taglinks.map(_.text) should not contain "Science"
+ taglinks.asScala.map(_.text) should not contain "Science"
}
}
@@ -344,10 +344,10 @@ import collection.JavaConversions._
Then("It should automatically link to tags")
val taglinks = $("a[data-link-name=auto-linked-tag]")
- taglinks.length should be(1)
+ taglinks.asScala.length should be(1)
- taglinks(0).text should be("Northern Ireland")
- taglinks(0).attribute("href") should endWith("/uk/northernireland")
+ taglinks.asScala(0).text should be("Northern Ireland")
+ taglinks.asScala(0).attribute("href") should endWith("/uk/northernireland")
}
}
@@ -562,10 +562,10 @@ import collection.JavaConversions._
goTo("/world/2013/sep/15/obama-rouhani-united-nations-meeting") { browser =>
import browser._
Then("I should see twitter cards")
- $("meta[name='twitter:site']").attributes("content").head should be("@guardian")
- $("meta[name='twitter:card']").attributes("content").head should be("summary_large_image")
- $("meta[name='twitter:app:url:googleplay']").attributes("content").head should startWith("guardian://www.theguardian.com/world")
- $("meta[name='twitter:image']").attributes("content").head should include("2013/9/15/1379275549160/Irans-President-Hassan-Ro-010.jpg")
+ $("meta[name='twitter:site']").attributes("content").asScala.head should be("@guardian")
+ $("meta[name='twitter:card']").attributes("content").asScala.head should be("summary_large_image")
+ $("meta[name='twitter:app:url:googleplay']").attributes("content").asScala.head should startWith("guardian://www.theguardian.com/world")
+ $("meta[name='twitter:image']").attributes("content").asScala.head should include("2013/9/15/1379275549160/Irans-President-Hassan-Ro-010.jpg")
}
}
@@ -574,9 +574,9 @@ import collection.JavaConversions._
goTo("/us-news/live/2016/nov/11/donald-trump-news-us-politics-live") { browser =>
import browser._
Then("I should still see a large image twitter card")
- $("meta[name='twitter:site']").attributes("content").head should be("@guardian")
- $("meta[name='twitter:card']").attributes("content").head should be("summary_large_image")
- $("meta[name='twitter:app:url:googleplay']").attributes("content").head should startWith("guardian://www.theguardian.com/us-news")
+ $("meta[name='twitter:site']").attributes("content").asScala.head should be("@guardian")
+ $("meta[name='twitter:card']").attributes("content").asScala.head should be("summary_large_image")
+ $("meta[name='twitter:app:url:googleplay']").attributes("content").asScala.head should startWith("guardian://www.theguardian.com/us-news")
}
}
@@ -608,11 +608,11 @@ import collection.JavaConversions._
$(".breadcrumb .signposting__item").size() should be(3)
val link = browser.find(".breadcrumb .signposting__item a", withText().contains("Culture"))
- link.length should be > 0
+ link.asScala.length should be > 0
val link2 = browser.find(".breadcrumb .signposting__item a", withText().contains("Books"))
- link2.length should be > 0
+ link2.asScala.length should be > 0
val link3 = browser.find(".breadcrumb .signposting__item a", withText().contains("Orwell prize"))
- link3.length should be > 0
+ link3.asScala.length should be > 0
}
Given("I am on a piece of content with a primary nav and a key woro")
@@ -622,9 +622,9 @@ import collection.JavaConversions._
$(".breadcrumb .signposting__item").size() should be(2)
val link = browser.find(".breadcrumb .signposting__item a", withText().contains("Opinion"))
- link.length should be > 0
+ link.asScala.length should be > 0
val link2 = browser.find(".breadcrumb .signposting__item a", withText().contains("Heritage"))
- link2.length should be > 0
+ link2.asScala.length should be > 0
}
Given("I am on a piece of content with no primary nav and a no key words")
@@ -634,7 +634,7 @@ import collection.JavaConversions._
$(".breadcrumb .signposting__item").size() should be(1)
val link = browser.find(".breadcrumb .signposting__item a", withText().contains("Observer Ethical Awards"))
- link.length should be > 0
+ link.asScala.length should be > 0
}
}
diff --git a/article/test/SectionsNavigationFeatureTest.scala b/article/test/SectionsNavigationFeatureTest.scala
index 25a57d87292c..a0df0f2671e6 100644
--- a/article/test/SectionsNavigationFeatureTest.scala
+++ b/article/test/SectionsNavigationFeatureTest.scala
@@ -1,7 +1,7 @@
package test
import org.scalatest.{DoNotDiscover, Matchers, GivenWhenThen, FeatureSpec}
-import collection.JavaConversions._
+import collection.JavaConverters._
import org.fluentlenium.core.filter.FilterConstructor._
import conf.Configuration
@@ -21,7 +21,7 @@ import conf.Configuration
val sections = browser.find("#footer-nav li a")
- sections.length should be > 0
+ sections.asScala.length should be > 0
And("a button to activate that list")
browser.$(".navigation-toggle").attribute("href") should include("australia-mining-boom-end#footer-nav")
@@ -58,19 +58,19 @@ import conf.Configuration
Then("I should see a link to the contributors section")
val contributors = browser.find(".l-footer li a", withText().contains("contributors"))
- contributors.length should be > 0
+ contributors.asScala.length should be > 0
And("a link to the contact us page")
val contact = browser.find(".l-footer li a", withText().contains("contact"))
- contact.length should be > 0
+ contact.asScala.length should be > 0
And("a link to the about us page")
val info = browser.find(".l-footer li a", withText().contains("about us"))
- info.length should be > 0
+ info.asScala.length should be > 0
And("a link to the complaints and corrections")
val complaints = browser.find(".l-footer li a", withText().contains("complaints & corrections"))
- complaints.length should be > 0
+ complaints.asScala.length should be > 0
}
}
@@ -81,12 +81,12 @@ import conf.Configuration
Then("I should see a link to the terms & Conditions in the page footer")
val terms = browser.find(".l-footer li a", withText().contains("terms"))
- terms.length should be > 0
+ terms.asScala.length should be > 0
And("a link to the privacy policy page")
val privacy = browser.find(".l-footer li a", withText().contains("privacy"))
- privacy.length should be > 0
+ privacy.asScala.length should be > 0
}
}
diff --git a/build.sbt b/build.sbt
index ce061ed44dd0..264ba7479009 100644
--- a/build.sbt
+++ b/build.sbt
@@ -7,7 +7,7 @@ import com.gu.ProjectSettings._
val common = library("common").settings(
libraryDependencies ++= Seq(
- akkaAgent,
+ guBox,
apacheCommonsMath3,
awsCore,
awsCloudwatch,
@@ -32,7 +32,7 @@ val common = library("common").settings(
rome,
romeModules,
scalaCheck,
- scalajTime,
+ nScalaTime,
ws,
faciaFapiScalaClient,
closureCompiler,
diff --git a/commercial/app/CommercialLifecycle.scala b/commercial/app/CommercialLifecycle.scala
index 638f7a6a0800..7ec6e74e27c6 100644
--- a/commercial/app/CommercialLifecycle.scala
+++ b/commercial/app/CommercialLifecycle.scala
@@ -64,7 +64,7 @@ class CommercialLifecycle(
val msgPrefix = s"Fetching $feedName feed"
log.info(s"$msgPrefix from ${fetcher.feedMetaData.url} ...")
val eventualResponse = fetcher.fetch()
- eventualResponse onFailure {
+ eventualResponse.failed.foreach {
case e: SwitchOffException =>
log.warn(s"$msgPrefix failed: ${e.getMessage}")
case NonFatal(e) =>
@@ -72,8 +72,8 @@ class CommercialLifecycle(
e,
toLogFields(feedName, "fetch", false))
}
- eventualResponse onSuccess {
- case response =>
+ eventualResponse.foreach {
+ response =>
S3FeedStore.put(feedName, response.feed)
logInfoWithCustomFields(s"$msgPrefix succeeded in ${response.duration}",
toLogFields(feedName, "fetch", true, Some(response.duration.toSeconds)))
@@ -88,7 +88,7 @@ class CommercialLifecycle(
val msgPrefix = s"Parsing $feedName feed"
log.info(s"$msgPrefix ...")
val parsedFeed = parser.parse(S3FeedStore.get(parser.feedMetaData.name))
- parsedFeed onFailure {
+ parsedFeed.failed.foreach {
case e: SwitchOffException =>
log.warn(s"$msgPrefix failed: ${e.getMessage}")
case NonFatal(e) =>
@@ -96,8 +96,8 @@ class CommercialLifecycle(
e,
toLogFields(feedName, "parse", false))
}
- parsedFeed onSuccess {
- case feed =>
+ parsedFeed.foreach {
+ feed =>
logInfoWithCustomFields(s"$msgPrefix succeeded: parsed ${feed.contents.size} $feedName in ${feed.parseDuration}",
toLogFields(feedName, "parse", true, Some(feed.parseDuration.toSeconds), Some(feed.contents.size)))
}
@@ -134,7 +134,7 @@ class CommercialLifecycle(
akkaAsync.after1s {
- industries.refresh() onFailure {
+ industries.refresh().failed.foreach {
case NonFatal(e) => log.warn(s"Failed to refresh job industries: ${e.getMessage}")
}
diff --git a/commercial/app/controllers/ContentApiOffersController.scala b/commercial/app/controllers/ContentApiOffersController.scala
index 81043dd4b5e9..62a75545a65e 100644
--- a/commercial/app/controllers/ContentApiOffersController.scala
+++ b/commercial/app/controllers/ContentApiOffersController.scala
@@ -28,13 +28,13 @@ class ContentApiOffersController(contentApiClient: ContentApiClient, capiAgent:
lookup.latestContentByKeyword(keyword, 8)
}.getOrElse(Future.successful(Nil))
- latestContent onFailure {
+ latestContent.failed.foreach {
case NonFatal(e) => log.error(s"Looking up content by keyword failed: ${e.getMessage}")
}
val specificContent: Future[Seq[model.ContentType]] = capiAgent.contentByShortUrls(specificIds)
- specificContent onFailure {
+ specificContent.failed.foreach {
case NonFatal(e) => log.error(s"Looking up content by short URL failed: ${e.getMessage}")
}
diff --git a/commercial/app/controllers/HostedContentController.scala b/commercial/app/controllers/HostedContentController.scala
index 62eb480dab0e..8ed4d0383eee 100644
--- a/commercial/app/controllers/HostedContentController.scala
+++ b/commercial/app/controllers/HostedContentController.scala
@@ -66,7 +66,7 @@ class HostedContentController(
val capiResponse = {
val itemId = s"advertiser-content/$campaignName/$pageName"
val response = contentApiClient.getResponse(baseQuery(itemId))
- response.onFailure {
+ response.failed.foreach {
case NonFatal(e) => log.warn(s"Capi lookup of item '$itemId' failed: ${e.getMessage}", e)
}
response
@@ -126,7 +126,7 @@ class HostedContentController(
.pageSize(100)
.orderBy("oldest")
val response = contentApiClient.getResponse(query)
- response.onFailure {
+ response.failed.foreach {
case NonFatal(e) => log.warn(s"Capi lookup of item '$sectionId' failed: ${e.getMessage}", e)
}
response
@@ -163,7 +163,7 @@ class HostedContentController(
.pageSize(100)
.orderBy("oldest")
val response = contentApiClient.getResponse(query)
- response.onFailure {
+ response.failed.foreach {
case NonFatal(e) => log.warn(s"Capi lookup of item '$sectionId' failed: ${e.getMessage}", e)
}
response
diff --git a/commercial/app/controllers/TrafficDriverController.scala b/commercial/app/controllers/TrafficDriverController.scala
index b87829e3e9eb..22ed5fd1a0f7 100644
--- a/commercial/app/controllers/TrafficDriverController.scala
+++ b/commercial/app/controllers/TrafficDriverController.scala
@@ -27,7 +27,7 @@ class TrafficDriverController(
val content: Future[Option[model.ContentType]] =
capiAgent.contentByShortUrls(specificIds).map(_.headOption)
- content onFailure {
+ content.failed.foreach {
case NonFatal(e) => log.error(
s"Looking up content by short URL failed: ${e.getMessage}"
)
diff --git a/commercial/app/model/capi/CapiAgent.scala b/commercial/app/model/capi/CapiAgent.scala
index f84a830c4ed3..a58044a99549 100644
--- a/commercial/app/model/capi/CapiAgent.scala
+++ b/commercial/app/model/capi/CapiAgent.scala
@@ -1,6 +1,7 @@
package commercial.model.capi
-import common.{AkkaAgent, Logging}
+import com.gu.Box
+import common.Logging
import contentapi.ContentApiClient
import model.ContentType
@@ -9,7 +10,7 @@ import scala.util.control.NonFatal
class CapiAgent(contentApiClient: ContentApiClient) extends Logging {
- private lazy val shortUrlAgent = AkkaAgent[Map[String, Option[ContentType]]](Map.empty)
+ private lazy val shortUrlAgent = Box[Map[String, Option[ContentType]]](Map.empty)
private val lookup = new Lookup(contentApiClient)
private lazy val cache = shortUrlAgent.get()
diff --git a/commercial/app/model/feeds/FeedReader.scala b/commercial/app/model/feeds/FeedReader.scala
index 3cb177ab5831..b66798d5a456 100644
--- a/commercial/app/model/feeds/FeedReader.scala
+++ b/commercial/app/model/feeds/FeedReader.scala
@@ -59,7 +59,7 @@ class FeedReader(wsClient: WSClient) extends Logging {
}
}
- contents onFailure {
+ contents.failed.foreach {
case NonFatal(e) =>
log.error(s"Failed to fetch feed contents.", e)
recordLoad(-1)
@@ -86,11 +86,11 @@ class FeedReader(wsClient: WSClient) extends Logging {
(implicit ec: ExecutionContext): Future[Seq[T]] = {
val contents = read(request)(parse)
- contents onSuccess {
- case items => log.info(s"Loaded ${items.size} ${request.feedName} from ${request.url}")
+ contents foreach {
+ items => log.info(s"Loaded ${items.size} ${request.feedName} from ${request.url}")
}
- contents onFailure {
+ contents.failed.foreach {
case e: FeedSwitchOffException => log.warn(e.getMessage)
case NonFatal(e) => log.error(s"Failed to read feed ${request.feedName} with URL ${request.url}", e)
}
diff --git a/commercial/app/model/merchandise/MerchandiseAgent.scala b/commercial/app/model/merchandise/MerchandiseAgent.scala
index 52a085ec889a..d815edc17937 100644
--- a/commercial/app/model/merchandise/MerchandiseAgent.scala
+++ b/commercial/app/model/merchandise/MerchandiseAgent.scala
@@ -1,14 +1,15 @@
package commercial.model.merchandise
+import com.gu.Box
import commercial.model.Segment
-import common.{AkkaAgent, Logging}
+import common.Logging
import scala.concurrent.Future
import scala.util.Random
trait MerchandiseAgent[T] extends Logging {
- private lazy val agent = AkkaAgent[Seq[T]](Nil)
+ private lazy val agent = Box[Seq[T]](Nil)
def available: Seq[T] = agent()
diff --git a/commercial/app/model/merchandise/books/BookFinder.scala b/commercial/app/model/merchandise/books/BookFinder.scala
index b25d770b89ab..675151df8fee 100644
--- a/commercial/app/model/merchandise/books/BookFinder.scala
+++ b/commercial/app/model/merchandise/books/BookFinder.scala
@@ -3,9 +3,10 @@ package commercial.model.merchandise.books
import akka.actor.ActorSystem
import akka.pattern.CircuitBreaker
import akka.util.Timeout
+import com.gu.Box
import commercial.model.feeds.{FeedParseException, FeedReadException, FeedReader, FeedRequest}
import commercial.model.merchandise.Book
-import common.{AkkaAgent, Logging}
+import common.Logging
import conf.Configuration
import conf.switches.Switches.BookLookupSwitch
import play.api.libs.json._
@@ -27,7 +28,7 @@ class BookFinder(actorSystem: ActorSystem, magentoService: MagentoService) exten
object BookAgent extends Logging {
- private lazy val cache = AkkaAgent(Map.empty[String, JsValue])
+ private lazy val cache = Box(Map.empty[String, JsValue])
def get(isbn: String)(implicit magentoService: MagentoService, executionContext: ExecutionContext): Option[JsValue] = {
diff --git a/commercial/app/model/merchandise/events/LiveEventAgent.scala b/commercial/app/model/merchandise/events/LiveEventAgent.scala
index aab6a960e24b..a470be16fb6d 100644
--- a/commercial/app/model/merchandise/events/LiveEventAgent.scala
+++ b/commercial/app/model/merchandise/events/LiveEventAgent.scala
@@ -2,8 +2,9 @@ package commercial.model.merchandise.events
import java.lang.System._
+import com.gu.Box
import commercial.model.feeds._
-import common.{AkkaAgent, Logging}
+import common.Logging
import conf.Configuration
import commercial.model.merchandise.LiveEvent
import play.api.libs.json.JsValue
@@ -15,7 +16,7 @@ import scala.util.control.NonFatal
class LiveEventAgent(wsClient: WSClient) extends Logging {
- private lazy val liveEventAgent = AkkaAgent[Seq[LiveEvent]](Seq.empty)
+ private lazy val liveEventAgent = Box[Seq[LiveEvent]](Seq.empty)
def specificLiveEvent(eventBriteId: String): Option[LiveEvent] = liveEventAgent.get.find(_.eventId == eventBriteId)
diff --git a/commercial/app/model/merchandise/jobs/Industries.scala b/commercial/app/model/merchandise/jobs/Industries.scala
index 65ac6625c765..b40da5bb0a2d 100644
--- a/commercial/app/model/merchandise/jobs/Industries.scala
+++ b/commercial/app/model/merchandise/jobs/Industries.scala
@@ -1,7 +1,7 @@
package commercial.model.merchandise.jobs
+import com.gu.Box
import commercial.model.capi.Lookup
-import common.AkkaAgent
import contentapi.ContentApiClient
import scala.concurrent.{ExecutionContext, Future}
@@ -41,7 +41,7 @@ object Industries {
class Industries(contentApiClient: ContentApiClient) {
private val lookup = new Lookup(contentApiClient)
- private lazy val industryKeywordIds = AkkaAgent(Map.empty[Int, Seq[String]])
+ private lazy val industryKeywordIds = Box(Map.empty[Int, Seq[String]])
def refresh()(implicit executionContext: ExecutionContext): Future[Iterable[Map[Int, Seq[String]]]] = Future.sequence {
diff --git a/commercial/app/model/merchandise/soulmates/SoulmatesAgent.scala b/commercial/app/model/merchandise/soulmates/SoulmatesAgent.scala
index 59a418450083..0da7cae01696 100644
--- a/commercial/app/model/merchandise/soulmates/SoulmatesAgent.scala
+++ b/commercial/app/model/merchandise/soulmates/SoulmatesAgent.scala
@@ -1,7 +1,7 @@
package commercial.model.merchandise.soulmates
+import com.gu.Box
import commercial.model.feeds.{FeedMetaData, ParsedFeed}
-import common.AkkaAgent
import commercial.model.merchandise.{Man, Member, Woman}
import scala.concurrent.{ExecutionContext, Future}
@@ -11,7 +11,7 @@ case class SoulmatesAgent(groupName: String,
feed: SoulmatesFeed,
filter: Seq[Member] => Seq[Member]) {
- private lazy val agent = AkkaAgent[Seq[Member]](Nil)
+ private lazy val agent = Box[Seq[Member]](Nil)
def refresh(feedMetaData: FeedMetaData, feedContent: => Option[String])
(implicit ec: ExecutionContext): Future[ParsedFeed[Member]] = {
diff --git a/common/app/assets/DiscussionAssets.scala b/common/app/assets/DiscussionAssets.scala
index 51d495b88aa7..85cfce1d72e8 100644
--- a/common/app/assets/DiscussionAssets.scala
+++ b/common/app/assets/DiscussionAssets.scala
@@ -3,7 +3,8 @@ package assets
import java.net.URI
import app.LifecycleComponent
-import common.{AkkaAgent, GuardianConfiguration, JobScheduler, Logging}
+import com.gu.Box
+import common.{GuardianConfiguration, JobScheduler, Logging}
import conf.switches.Switches
import play.api.libs.ws.{WSClient, WSResponse}
@@ -100,7 +101,7 @@ class DiscussionExternalAssetsLifecycle(
}
object DiscussionAssetsMap {
- private lazy val agent = AkkaAgent[Map[String, String]](Map.empty)
+ private lazy val agent = Box[Map[String, String]](Map.empty)
def alter (map: Map[String, String], baseURI: URI): Future[Map[String, String]] = {
agent.alter(map.mapValues(value => baseURI.resolve(value).toString))
diff --git a/common/app/commercial/targeting/CampaignAgent.scala b/common/app/commercial/targeting/CampaignAgent.scala
index fc7203cb8e1a..ad9ef9d6245d 100644
--- a/common/app/commercial/targeting/CampaignAgent.scala
+++ b/common/app/commercial/targeting/CampaignAgent.scala
@@ -1,5 +1,6 @@
package commercial.targeting
+import com.gu.Box
import common._
import com.gu.targeting.client.{Campaign, CampaignCache}
import conf.Configuration
@@ -8,7 +9,7 @@ import scala.concurrent.{ExecutionContext, Future}
import conf.switches.Switches.Targeting
object CampaignAgent extends Logging {
- private val agent = AkkaAgent[CampaignCache](CampaignCache(Nil, None))
+ private val agent = Box[CampaignCache](CampaignCache(Nil, None))
def refresh()(implicit executionContext: ExecutionContext): Future[Unit] = {
// The maximum number of campaigns which will be fetched. If there are too many campaigns additional campaigns will be truncated.
diff --git a/common/app/common/AutoRefresh.scala b/common/app/common/AutoRefresh.scala
index 8e0209e3304b..135f671b4a3c 100644
--- a/common/app/common/AutoRefresh.scala
+++ b/common/app/common/AutoRefresh.scala
@@ -1,16 +1,16 @@
package common
import scala.concurrent.duration.FiniteDuration
-import akka.agent.Agent
import akka.actor.{ActorSystem, Cancellable}
import scala.concurrent.{ExecutionContext, Future}
import scala.util.{Failure, Success}
+import com.gu.Box
/** Simple class for repeatedly updating a value on a schedule */
abstract class AutoRefresh[A](initialDelay: FiniteDuration, interval: FiniteDuration) extends Logging {
- private lazy val agent = AkkaAgent[Option[A]](None)
+ private lazy val agent = Box[Option[A]](None)
@volatile private var subscription: Option[Cancellable] = None
diff --git a/common/app/common/HTML.scala b/common/app/common/HTML.scala
index 8c81ca522ac1..0fea0e0623ac 100644
--- a/common/app/common/HTML.scala
+++ b/common/app/common/HTML.scala
@@ -3,7 +3,7 @@ package common
import org.apache.commons.lang.StringEscapeUtils
import org.jsoup.Jsoup
import org.jsoup.safety.Whitelist
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
object HTML {
@@ -13,8 +13,9 @@ object HTML {
Jsoup.parse(html)
.select("body")
.iterator
+ .asScala
.toList
- .flatMap(_.children().take(n))
+ .flatMap(_.children().asScala.take(n))
.map(_.toString)
.mkString("")
}
diff --git a/common/app/common/InlineStyles.scala b/common/app/common/InlineStyles.scala
index c68d0132daa6..cf11a5b93288 100644
--- a/common/app/common/InlineStyles.scala
+++ b/common/app/common/InlineStyles.scala
@@ -10,7 +10,7 @@ import org.w3c.dom.css.{CSSRuleList, CSSRule => W3CSSRule}
import play.api.Logger
import play.twirl.api.Html
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.collection.immutable.ListMap
import scala.util.{Failure, Success}
@@ -74,19 +74,19 @@ object InlineStyles {
val document = Jsoup.parse(html.body)
val (inline, head) = styles(document)
- document.getElementsByTag("head").headOption map { el =>
- el.getElementsByTag("style").map(_.remove)
+ document.getElementsByTag("head").asScala.headOption map { el =>
+ el.getElementsByTag("style").asScala.foreach(_.remove)
head.map(css => el.appendChild(document.createElement("style").text(css)))
}
inline.sortBy(_.specifity).foreach { rule =>
- document.select(rule.selector) foreach(el => el.attr("style", mergeStyles(rule, el.attr("style"))))
+ document.select(rule.selector).asScala.foreach(el => el.attr("style", mergeStyles(rule, el.attr("style"))))
}
// Outlook ignores styles with !important so we need to strip that out.
// So this doesn't change which styles take effect, we also sort styles
// so that all important styles appear to the right of all non-important styles.
- document.getAllElements.foreach { el =>
+ document.getAllElements.asScala.foreach { el =>
el.attr("style", sortStyles(el.attr("style")).replace(" !important", ""))
}
@@ -100,7 +100,7 @@ object InlineStyles {
* The first item is the styles that should stay in the head, the second is everything that should be inlined.
*/
def styles(document: Document): (Seq[CSSRule], Seq[String]) = {
- document.getElementsByTag("style").foldLeft((Seq.empty[CSSRule], Seq.empty[String])) { case ((inline, head), element) =>
+ document.getElementsByTag("style").asScala.foldLeft((Seq.empty[CSSRule], Seq.empty[String])) { case ((inline, head), element) =>
val source = new InputSource(new StringReader(element.html))
Retry(3)(cssParser.parseStyleSheet(source, null, null)) { (exception, attemptNumber) =>
diff --git a/common/app/common/LinkTo.scala b/common/app/common/LinkTo.scala
index 4f3c56739c32..9f394a41e3f3 100644
--- a/common/app/common/LinkTo.scala
+++ b/common/app/common/LinkTo.scala
@@ -8,7 +8,7 @@ import org.jsoup.Jsoup
import play.api.libs.json.Json
import play.api.mvc.{AnyContent, Request, RequestHeader, Result}
import play.twirl.api.Html
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
/*
* Builds absolute links to the core site (www.theguardian.com)
@@ -77,7 +77,7 @@ object LinkTo extends LinkTo {
// we can assume www.theguardian.com here as this happens before any cleaning
def countLinks(html: String): LinkCounts = {
- val links = Jsoup.parseBodyFragment(html).getElementsByTag("a").flatMap(a => Option(a.attr("href")))
+ val links = Jsoup.parseBodyFragment(html).getElementsByTag("a").asScala.flatMap(a => Option(a.attr("href")))
val guardianLinksCount = links.count(_ contains "www.theguardian.com")
LinkCounts(
internal = guardianLinksCount,
diff --git a/common/app/common/Properties.scala b/common/app/common/Properties.scala
index 50a67bb4ad87..83be6a2e5f1a 100644
--- a/common/app/common/Properties.scala
+++ b/common/app/common/Properties.scala
@@ -2,7 +2,7 @@ package common
import java.io.{File, FileInputStream, InputStream}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import java.net.URL
import java.nio.charset.Charset
@@ -15,7 +15,7 @@ object Properties extends AutomaticResourceManagement {
def apply(is: InputStream): Map[String, String] = {
val properties = new java.util.Properties()
withCloseable(is) { properties load _ }
- properties.toMap
+ properties.asScala.toMap
}
def apply(text: String): Map[String, String] = apply(IOUtils.toInputStream(text, Charset.defaultCharset()))
diff --git a/common/app/common/TrailsToRss.scala b/common/app/common/TrailsToRss.scala
index 9ec3fead1816..fcd9ac08543a 100644
--- a/common/app/common/TrailsToRss.scala
+++ b/common/app/common/TrailsToRss.scala
@@ -16,7 +16,7 @@ import org.jsoup.Jsoup
import play.api.mvc.RequestHeader
import views.support.{Item140, Item460, Profile}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.collection.JavaConverters._
object TrailsToRss extends implicits.Collections {
@@ -119,7 +119,7 @@ object TrailsToRss extends implicits.Collections {
entry.setDescription(description)
entry.setCategories(categories)
- entry.setModules(new java.util.ArrayList(mediaModules ++ Seq(dc)))
+ entry.setModules(new java.util.ArrayList((mediaModules ++ Seq(dc)).asJava))
entry
}.asJava
@@ -224,7 +224,7 @@ object TrailsToRss extends implicits.Collections {
entry.setLink(webUrl)
entry.setDescription(description)
entry.setCategories(categories)
- entry.setModules(new java.util.ArrayList(mediaModules ++ Seq(dc)))
+ entry.setModules(new java.util.ArrayList((mediaModules ++ Seq(dc)).asJava))
entry
}.asJava
diff --git a/common/app/common/akka.scala b/common/app/common/akka.scala
index 8c44de789f2e..db8010eac0a8 100644
--- a/common/app/common/akka.scala
+++ b/common/app/common/akka.scala
@@ -1,18 +1,11 @@
package common
-import akka.agent.Agent
-
import scala.concurrent.duration._
import play.api.{Environment, Mode}
import scala.concurrent.ExecutionContext
import akka.actor.ActorSystem
-object AkkaAgent {
- implicit lazy val executionContext: ExecutionContext = scala.concurrent.ExecutionContext.Implicits.global //TODO
- def apply[T](value: T): Agent[T] = Agent(value)
-}
-
class AkkaAsync(env: Environment, actorSystem: ActorSystem) {
implicit val ec: ExecutionContext = actorSystem.dispatcher
diff --git a/common/app/common/configuration.scala b/common/app/common/configuration.scala
index d0a1e673f12f..5db5a9ddbaae 100644
--- a/common/app/common/configuration.scala
+++ b/common/app/common/configuration.scala
@@ -13,7 +13,7 @@ import conf.switches.Switches
import conf.{Configuration, Static}
import org.apache.commons.io.IOUtils
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.duration._
import scala.util.{Failure, Success, Try}
@@ -98,7 +98,7 @@ object GuardianConfiguration extends Logging {
def getMandatoryStringProperty: (String) => String = getMandatoryProperty(conf.getString)_
def getIntegerProperty: (String) => Option[Int] = getProperty(conf.getInt)_
- def getPropertyNames: Seq[String] = conf.entrySet.toSet.map((_.getKey): Entry[String, _] => String).toSeq
+ def getPropertyNames: Seq[String] = conf.entrySet.asScala.toSet.map((_.getKey): Entry[String, _] => String).toSeq
def getStringPropertiesSplitByComma(propertyName: String): List[String] = {
getStringProperty(propertyName) match {
case Some(property) => (property split ",").toList
diff --git a/common/app/common/dfp/DfpAgent.scala b/common/app/common/dfp/DfpAgent.scala
index cf1e69224964..f87a4b15c34d 100644
--- a/common/app/common/dfp/DfpAgent.scala
+++ b/common/app/common/dfp/DfpAgent.scala
@@ -1,7 +1,6 @@
package common.dfp
-import akka.agent.Agent
-import common._
+import com.gu.Box
import conf.Configuration.commercial._
import conf.Configuration.environment
import play.api.libs.json.Json
@@ -18,11 +17,11 @@ object DfpAgent
override protected val environmentIsProd: Boolean = environment.isProd
- private lazy val inlineMerchandisingTagsAgent = AkkaAgent[InlineMerchandisingTagSet](InlineMerchandisingTagSet())
- private lazy val targetedHighMerchandisingLineItemsAgent = AkkaAgent[Seq[HighMerchandisingLineItem]](Seq.empty)
- private lazy val pageskinnedAdUnitAgent = AkkaAgent[Seq[PageSkinSponsorship]](Nil)
- private lazy val lineItemAgent = AkkaAgent[Map[AdSlot, Seq[GuLineItem]]](Map.empty)
- private lazy val takeoverWithEmptyMPUsAgent = AkkaAgent[Seq[TakeoverWithEmptyMPUs]](Nil)
+ private lazy val inlineMerchandisingTagsAgent = Box[InlineMerchandisingTagSet](InlineMerchandisingTagSet())
+ private lazy val targetedHighMerchandisingLineItemsAgent = Box[Seq[HighMerchandisingLineItem]](Seq.empty)
+ private lazy val pageskinnedAdUnitAgent = Box[Seq[PageSkinSponsorship]](Nil)
+ private lazy val lineItemAgent = Box[Map[AdSlot, Seq[GuLineItem]]](Map.empty)
+ private lazy val takeoverWithEmptyMPUsAgent = Box[Seq[TakeoverWithEmptyMPUs]](Nil)
protected def inlineMerchandisingTargetedTags: InlineMerchandisingTagSet = inlineMerchandisingTagsAgent get()
protected def targetedHighMerchandisingLineItems: Seq[HighMerchandisingLineItem] = targetedHighMerchandisingLineItemsAgent get()
@@ -33,7 +32,7 @@ object DfpAgent
private def stringFromS3(key: String): Option[String] = S3.get(key)(UTF8)
- private def update[T](agent: Agent[Seq[T]])(freshData: => Seq[T]) {
+ private def update[T](agent: Box[Seq[T]])(freshData: => Seq[T]) {
if (freshData.nonEmpty) {
agent send freshData
}
diff --git a/common/app/common/jobs.scala b/common/app/common/jobs.scala
index 07bee75e09a5..a937cfb787fe 100644
--- a/common/app/common/jobs.scala
+++ b/common/app/common/jobs.scala
@@ -8,12 +8,13 @@ import play.api.Mode.Test
import scala.collection.mutable
import scala.concurrent.Future
import scala.concurrent.duration.Duration
+import com.gu.Box
import scala.util.{Failure, Success}
object JobsState {
implicit val global = scala.concurrent.ExecutionContext.global
val jobs = mutable.Map[String, () => Future[_]]()
- val outstanding = akka.agent.Agent(Map[String,Int]().withDefaultValue(0))
+ val outstanding = Box(Map[String,Int]().withDefaultValue(0))
}
class FunctionJob extends Job with Logging {
diff --git a/common/app/common/metrics.scala b/common/app/common/metrics.scala
index f1b2c1d7a384..efeb4269984b 100644
--- a/common/app/common/metrics.scala
+++ b/common/app/common/metrics.scala
@@ -12,7 +12,7 @@ import model.ApplicationIdentity
import model.diagnostics.CloudWatch
import play.api.inject.ApplicationLifecycle
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.concurrent.duration._
import scala.concurrent.{ExecutionContext, Future}
@@ -35,7 +35,7 @@ object SystemMetrics extends implicits.Numbers {
}
}
- lazy val garbageCollectors: Seq[GcRateMetric] = ManagementFactory.getGarbageCollectorMXBeans.map(new GcRateMetric(_))
+ lazy val garbageCollectors: Seq[GcRateMetric] = ManagementFactory.getGarbageCollectorMXBeans.asScala.map(new GcRateMetric(_))
val MaxHeapMemoryMetric = GaugeMetric(
name = "max-heap-memory",
diff --git a/common/app/conf/HealthCheck.scala b/common/app/conf/HealthCheck.scala
index f3478ad315dd..583b3e675ae5 100644
--- a/common/app/conf/HealthCheck.scala
+++ b/common/app/conf/HealthCheck.scala
@@ -1,12 +1,11 @@
package conf
-import akka.agent.Agent
import app.LifecycleComponent
import common._
import org.joda.time.DateTime
import play.api.libs.ws.{WSClient, WSResponse}
import play.api.mvc._
-
+import com.gu.Box
import scala.concurrent.{ExecutionContext, Future}
import scala.concurrent.duration._
import scala.util.control.NonFatal
@@ -116,7 +115,7 @@ private[conf] class HealthCheckCache(preconditionMaybe: Option[HealthCheckPrecon
(implicit executionContext: ExecutionContext)
extends HealthCheckFetcher {
- protected val cache: Agent[List[HealthCheckResult]] = AkkaAgent[List[HealthCheckResult]](List[HealthCheckResult]())
+ protected val cache: Box[List[HealthCheckResult]] = Box[List[HealthCheckResult]](List[HealthCheckResult]())
def get(): List[HealthCheckResult] = cache.get()
def refresh(port: Int, healthChecks: SingleHealthCheck*): Future[List[HealthCheckResult]] = {
diff --git a/common/app/conf/switches/Switches.scala b/common/app/conf/switches/Switches.scala
index 6dfec0217f1b..f326a4f6b31c 100644
--- a/common/app/conf/switches/Switches.scala
+++ b/common/app/conf/switches/Switches.scala
@@ -2,6 +2,7 @@ package conf.switches
import java.util.concurrent.TimeoutException
+import com.gu.Box
import common._
import org.joda.time.{DateTime, DateTimeZone, Days, LocalDate}
@@ -124,12 +125,9 @@ object Switch {
exposeClientSide
)
- val switches = AkkaAgent[List[Switch]](Nil)
+ val switches = Box[List[Switch]](Nil)
def allSwitches: Seq[Switch] = switches.get()
- // the agent won't immediately return its switches
- def eventuallyAllSwitches: Future[List[Switch]] = switches.future()
-
case class Expiry(daysToExpiry: Option[Int], expiresSoon: Boolean, hasExpired: Boolean)
def expiry(switch: Switch, today: LocalDate = new DateTime(DateTimeZone.forID("Europe/London")).toLocalDate): Expiry = { // We assume expiration datetime is set to London time
@@ -165,8 +163,6 @@ with JournalismSwitches {
def all: Seq[Switch] = Switch.allSwitches
- def eventuallyAll: Future[List[Switch]] = Switch.eventuallyAllSwitches
-
def grouped: List[(SwitchGroup, Seq[Switch])] = {
val sortedSwitches = all.groupBy(_.group).map { case (key, value) => (key, value.sortBy(_.name)) }
sortedSwitches.toList.sortBy(_._1.name)
diff --git a/common/app/contentapi/ContentApiClient.scala b/common/app/contentapi/ContentApiClient.scala
index 441736f7da4b..ad0979acbe85 100644
--- a/common/app/contentapi/ContentApiClient.scala
+++ b/common/app/contentapi/ContentApiClient.scala
@@ -12,7 +12,7 @@ import conf.Configuration.contentApi
import conf.switches.Switches.CircuitBreakerSwitch
import model.{Content, Trail}
import org.joda.time.DateTime
-import org.scala_tools.time.Implicits._
+import com.github.nscala_time.time.Implicits._
import scala.concurrent.duration.{Duration, MILLISECONDS}
import scala.concurrent.{ExecutionContext, Future}
@@ -104,7 +104,7 @@ trait MonitoredContentApiClientLogic extends ContentApiClientLogic with ApiQuery
val futureContent = _httpClient.GET(url, headers) map { response: Response =>
HttpResponse(response.body, response.status, response.statusText)
}
- futureContent.onFailure{ case t =>
+ futureContent.failed.foreach { t =>
val tryDecodedUrl: String = Try(java.net.URLDecoder.decode(url, "UTF-8")).getOrElse(url)
log.error(s"$t: $tryDecodedUrl")}
futureContent
diff --git a/common/app/contentapi/SectionsLookUp.scala b/common/app/contentapi/SectionsLookUp.scala
index 631efba84a09..8307832c0efb 100644
--- a/common/app/contentapi/SectionsLookUp.scala
+++ b/common/app/contentapi/SectionsLookUp.scala
@@ -1,13 +1,14 @@
package contentapi
+import com.gu.Box
import com.gu.contentapi.client.model.v1.Section
-import common.{AkkaAgent, Logging}
+import common.Logging
import scala.concurrent.ExecutionContext
import scala.util.{Failure, Success}
class SectionsLookUp(contentApiClient: ContentApiClient) extends Logging {
- private val sections = AkkaAgent[Option[Map[String, Section]]](None)
+ private val sections = Box[Option[Map[String, Section]]](None)
def refresh()(implicit executionContext: ExecutionContext): Unit = {
contentApiClient.getResponse(contentApiClient.sections) onComplete {
diff --git a/common/app/contentapi/http.scala b/common/app/contentapi/http.scala
index dd4e52671586..fa93935f0162 100644
--- a/common/app/contentapi/http.scala
+++ b/common/app/contentapi/http.scala
@@ -36,13 +36,13 @@ class CapiHttpClient(wsClient: WSClient)(implicit executionContext: ExecutionCon
val response = request.withHttpHeaders(headers.toSeq: _*).withRequestTimeout(contentApiTimeout).get()
// record metrics
- response.onSuccess {
+ response.foreach {
case r if r.status == 404 => ContentApi404Metric.increment()
case r if r.status == 200 => ContentApiMetrics.HttpLatencyTimingMetric.recordDuration(currentTimeMillis - start)
case _ =>
}
- response.onFailure {
+ response.failed.foreach {
case e: TimeoutException =>
log.warn(s"Content API TimeoutException for $url in ${currentTimeMillis - start}: $e")
ContentApiMetrics.HttpTimeoutCountMetric.increment()
diff --git a/common/app/dev/DevAssetsController.scala b/common/app/dev/DevAssetsController.scala
index 2756c641839f..78b6d45c5580 100644
--- a/common/app/dev/DevAssetsController.scala
+++ b/common/app/dev/DevAssetsController.scala
@@ -54,7 +54,7 @@ class DevAssetsController(val environment: Environment, val controllerComponents
val result = Result(
ResponseHeader(OK, Map(CONTENT_TYPE -> contentType)),
HttpEntity.Streamed(
- data = StreamConverters.fromInputStream(resolved.openStream),
+ data = StreamConverters.fromInputStream(resolved.openStream _),
contentLength = file.map(_.length),
contentType = Some(contentType))
)
diff --git a/common/app/implicits/Dates.scala b/common/app/implicits/Dates.scala
index 50bafb898abc..0a5e7e600d0c 100644
--- a/common/app/implicits/Dates.scala
+++ b/common/app/implicits/Dates.scala
@@ -3,9 +3,9 @@ package implicits
import com.gu.contentapi.client.model.v1.CapiDateTime
import common.Edition
import java.time.Instant
-import org.joda.time.{DateTime, Days, LocalDate, Duration => JodaDuration}
-import org.scala_tools.time.Imports._
-import org.joda.time.format.ISODateTimeFormat
+
+import org.joda.time.{DateTime, DateTimeZone, Days, LocalDate, Period, Duration => JodaDuration}
+import org.joda.time.format.{DateTimeFormat, ISODateTimeFormat}
import scala.concurrent.duration.Duration
diff --git a/common/app/implicits/FaciaContentFrontendHelpers.scala b/common/app/implicits/FaciaContentFrontendHelpers.scala
index 4227d8baf6a6..8c866e8bd912 100644
--- a/common/app/implicits/FaciaContentFrontendHelpers.scala
+++ b/common/app/implicits/FaciaContentFrontendHelpers.scala
@@ -5,10 +5,9 @@ import implicits.Dates._
import model._
import model.content.{MediaAssetPlatform, MediaAtom}
import model.pressed._
-import org.joda.time.DateTime
+import org.joda.time.{DateTime, Period, PeriodType}
import org.jsoup.Jsoup
-import org.scala_tools.time.Imports._
-
+import com.github.nscala_time.time.Implicits._
import scala.util.Try
object FaciaContentFrontendHelpers {
diff --git a/common/app/metrics/FrontendMetrics.scala b/common/app/metrics/FrontendMetrics.scala
index 3644ab33e05c..83e8111f3704 100644
--- a/common/app/metrics/FrontendMetrics.scala
+++ b/common/app/metrics/FrontendMetrics.scala
@@ -2,9 +2,8 @@ package metrics
import java.util.concurrent.atomic.AtomicLong
-import akka.agent.Agent
+import com.gu.Box
import com.amazonaws.services.cloudwatch.model.StandardUnit
-import common.AkkaAgent
import model.diagnostics.CloudWatch
import org.joda.time.DateTime
import scala.concurrent.Future
@@ -51,7 +50,7 @@ final case class SimpleMetric(override val name: String, datapoint: SimpleDataPo
// Also, MetricUploader will upload in batches.
final case class MetricUploader(namespace: String) {
- private val datapoints: Agent[List[SimpleMetric]] = AkkaAgent(List.empty)
+ private val datapoints: Box[List[SimpleMetric]] = Box(List.empty)
def put(metrics: Map[String, Double]): Unit = {
val timedMetrics = metrics.map { case (key, value) =>
@@ -119,10 +118,7 @@ case class DurationDataPoint(value: Double, time: Option[DateTime] = None) exten
final case class DurationMetric(override val name: String, override val metricUnit: StandardUnit) extends FrontendMetric {
- private val dataPoints: Agent[List[DataPoint]] = AkkaAgent(List[DurationDataPoint]())
-
- // For tests.
- def getDataFuture: Future[List[DataPoint]] = dataPoints.future()
+ private val dataPoints: Box[List[DataPoint]] = Box(List[DurationDataPoint]())
override def getAndResetDataPoints: List[DataPoint] = {
val points = dataPoints.get()
@@ -144,7 +140,7 @@ case class SampledDataPoint(value: Double, sampleTime: DateTime) extends DataPoi
final case class SamplerMetric(override val name: String, override val metricUnit: StandardUnit) extends FrontendMetric {
- private val dataPoints: Agent[List[SampledDataPoint]] = AkkaAgent(List[SampledDataPoint]())
+ private val dataPoints: Box[List[SampledDataPoint]] = Box(List[SampledDataPoint]())
override def getAndResetDataPoints: List[DataPoint] = {
val points = dataPoints.get()
@@ -155,4 +151,4 @@ final case class SamplerMetric(override val name: String, override val metricUni
def recordSample(sampleValue: Double, sampleTime: DateTime): Future[List[SampledDataPoint]] = dataPoints.alter(SampledDataPoint(sampleValue, sampleTime) :: _)
override def isEmpty: Boolean = dataPoints.get().isEmpty
-}
\ No newline at end of file
+}
diff --git a/common/app/model/Cached.scala b/common/app/model/Cached.scala
index 74b912464c30..2da3ec1e5a12 100644
--- a/common/app/model/Cached.scala
+++ b/common/app/model/Cached.scala
@@ -2,7 +2,7 @@ package model
import conf.switches.Switches.LongCacheSwitch
import org.joda.time.DateTime
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Implicits._
import play.api.http.Writeable
import play.api.mvc._
import scala.math.{max, min}
diff --git a/common/app/model/content.scala b/common/app/model/content.scala
index 3866eaea1b35..ecd64d509bef 100644
--- a/common/app/model/content.scala
+++ b/common/app/model/content.scala
@@ -15,10 +15,10 @@ import model.content.{Atoms, MediaAssetPlatform, MediaAtom, Quiz}
import model.pressed._
import org.jsoup.Jsoup
import org.jsoup.safety.Whitelist
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
import play.api.libs.json._
import views.support._
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.util.Try
import implicits.Booleans._
@@ -197,7 +197,7 @@ final case class Content(
lazy val linkCounts = LinkTo.countLinks(fields.body) + fields.standfirst.map(LinkTo.countLinks).getOrElse(LinkCounts.None)
- lazy val mainMediaVideo = Jsoup.parseBodyFragment(fields.main).body.getElementsByClass("element-video").headOption
+ lazy val mainMediaVideo = Jsoup.parseBodyFragment(fields.main).body.getElementsByClass("element-video").asScala.headOption
lazy val mainVideoCanonicalPath: Option[String] = mainMediaVideo.flatMap(video => {
video.attr("data-canonical-url") match {
@@ -498,17 +498,17 @@ final case class Article (
val isTheMinute: Boolean = content.tags.isTheMinuteArticle
val isImmersive: Boolean = content.isImmersive
val isPhotoEssay: Boolean = content.isPhotoEssay
- lazy val hasVideoAtTop: Boolean = soupedBody.body().children().headOption
+ lazy val hasVideoAtTop: Boolean = soupedBody.body().children().asScala.headOption
.exists(e => e.hasClass("gu-video") && e.tagName() == "video")
lazy val hasSupporting: Boolean = {
val supportingClasses = Set("element--showcase", "element--supporting", "element--thumbnail")
- val leftColElements = soupedBody.body().select("body > *").find(_.classNames.intersect(supportingClasses).nonEmpty)
+ val leftColElements = soupedBody.body().select("body > *").asScala.find(_.classNames.asScala.intersect(supportingClasses).nonEmpty)
leftColElements.isDefined
}
private lazy val soupedBody = Jsoup.parseBodyFragment(fields.body)
- lazy val hasKeyEvents: Boolean = soupedBody.body().select(".is-key-event").nonEmpty
+ lazy val hasKeyEvents: Boolean = soupedBody.body().select(".is-key-event").asScala.nonEmpty
lazy val isSport: Boolean = tags.tags.exists(_.id == "sport/sport")
lazy val blocks = content.fields.blocks
@@ -819,7 +819,7 @@ final case class Interactive(
lazy val fallbackEl = {
val noscriptEls = Jsoup.parseBodyFragment(fields.body).getElementsByTag("noscript")
- if (noscriptEls.nonEmpty) {
+ if (noscriptEls.asScala.nonEmpty) {
noscriptEls.html()
} else {
Jsoup.parseBodyFragment(fields.body).getElementsByTag("figure").html()
diff --git a/common/app/model/diagnostics/CloudWatch.scala b/common/app/model/diagnostics/CloudWatch.scala
index 9463647e1faa..c9ee742abbe5 100644
--- a/common/app/model/diagnostics/CloudWatch.scala
+++ b/common/app/model/diagnostics/CloudWatch.scala
@@ -8,7 +8,7 @@ import conf.Configuration
import conf.Configuration._
import metrics.{FrontendMetric, FrontendStatisticSet}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
trait CloudWatch extends Logging {
@@ -65,13 +65,14 @@ trait CloudWatch extends Logging {
val request = new PutMetricDataRequest()
.withNamespace(metricNamespace)
.withMetricData {
- for(metricStatistic <- metricsAsStatistics) yield {
+ val metricDatum = for(metricStatistic <- metricsAsStatistics) yield {
new MetricDatum()
.withStatisticValues(frontendMetricToStatisticSet(metricStatistic))
.withUnit(metricStatistic.unit)
.withMetricName(metricStatistic.name)
- .withDimensions(dimensions)
+ .withDimensions(dimensions.asJava)
}
+ metricDatum.asJava
}
CloudWatch.cloudwatch.foreach(_.putMetricDataAsync(request, AsyncHandlerForMetric(metricsAsStatistics)))
}
diff --git a/common/app/model/meta.scala b/common/app/model/meta.scala
index 1b6737450c69..1f10c8406529 100644
--- a/common/app/model/meta.scala
+++ b/common/app/model/meta.scala
@@ -14,7 +14,7 @@ import model.liveblog.Blocks
import model.meta.{Guardian, LinkedData, PotentialAction, WebPage}
import org.apache.commons.lang3.StringUtils
import org.joda.time.DateTime
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Implicits._
import play.api.libs.json.{JsBoolean, JsString, JsValue}
import play.api.mvc.RequestHeader
import play.twirl.api.Html
diff --git a/common/app/model/trails.scala b/common/app/model/trails.scala
index 40500f302d81..ed9dae6b7d1b 100644
--- a/common/app/model/trails.scala
+++ b/common/app/model/trails.scala
@@ -3,7 +3,7 @@ package model
import com.gu.contentapi.client.model.{v1 => contentapi}
import implicits.Dates._
import org.joda.time.DateTime
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Implicits._
import play.api.libs.json.{JsBoolean, JsString, JsValue, Json}
import play.api.mvc.RequestHeader
import views.support.{ImgSrc, Naked}
diff --git a/common/app/services/ConfigAgentTrait.scala b/common/app/services/ConfigAgentTrait.scala
index 7fd5d36b893d..7253729dd49f 100644
--- a/common/app/services/ConfigAgentTrait.scala
+++ b/common/app/services/ConfigAgentTrait.scala
@@ -2,6 +2,7 @@ package services
import akka.util.Timeout
import app.LifecycleComponent
+import com.gu.Box
import com.gu.facia.api.models.{Front, _}
import com.gu.facia.client.ApiClient
import com.gu.facia.client.models.{ConfigJson, FrontJson}
@@ -21,7 +22,7 @@ case class CollectionConfigWithId(id: String, config: CollectionConfig)
object ConfigAgent extends Logging {
implicit lazy val alterTimeout: Timeout = Configuration.faciatool.configBeforePressTimeout.millis
- private lazy val configAgent = AkkaAgent[Option[ConfigJson]](None)
+ private lazy val configAgent = Box[Option[ConfigJson]](None)
def isLoaded(): Boolean = configAgent.get().isDefined
@@ -79,10 +80,6 @@ object ConfigAgent extends Logging {
def getConfig(id: String): Option[CollectionConfig] = configAgent.get().flatMap(_.collections.get(id).map(CollectionConfig.make))
- def getConfigAfterUpdates(id: String)(implicit ec: ExecutionContext): Future[Option[CollectionConfig]] =
- configAgent.future()
- .map(_.flatMap(_.collections.get(id)).map(CollectionConfig.make))
-
def getAllCollectionIds: List[String] = {
val config = configAgent.get()
config.map(_.collections.keys.toList).getOrElse(Nil)
diff --git a/common/app/services/ophan/SurgingContentAgent.scala b/common/app/services/ophan/SurgingContentAgent.scala
index 4ca4319fe34e..54b07405b62d 100644
--- a/common/app/services/ophan/SurgingContentAgent.scala
+++ b/common/app/services/ophan/SurgingContentAgent.scala
@@ -1,6 +1,7 @@
package services.ophan
import app.LifecycleComponent
+import com.gu.Box
import com.gu.commercial.display.SurgeLookupService
import common._
import org.joda.time.DateTime
@@ -12,7 +13,7 @@ import scala.concurrent.{ExecutionContext, Future}
object SurgingContentAgent extends SurgeLookupService with Logging {
- private val agent = AkkaAgent[SurgingContent](SurgingContent())
+ private val agent = Box[SurgingContent](SurgingContent())
def update(implicit ophanApi: OphanApi, executionContext: ExecutionContext): Unit = {
log.info("Refreshing surging content.")
diff --git a/common/app/services/repositories.scala b/common/app/services/repositories.scala
index 06a7f0723bf1..74f9f9c478f3 100644
--- a/common/app/services/repositories.scala
+++ b/common/app/services/repositories.scala
@@ -7,7 +7,7 @@ import contentapi.{ContentApiClient, QueryDefaults, SectionTagLookUp, SectionsLo
import implicits.Collections
import model._
import org.joda.time.DateTime
-import org.scala_tools.time.Implicits._
+import com.github.nscala_time.time.Implicits._
import play.api.mvc.{RequestHeader, Result => PlayResult}
import scala.concurrent.Future
diff --git a/common/app/views/support/HtmlCleaner.scala b/common/app/views/support/HtmlCleaner.scala
index 4bbbba9cdfb9..4ba962aa8df4 100644
--- a/common/app/views/support/HtmlCleaner.scala
+++ b/common/app/views/support/HtmlCleaner.scala
@@ -15,7 +15,7 @@ import org.jsoup.nodes.{Document, Element, TextNode}
import play.api.mvc.RequestHeader
import play.twirl.api.HtmlFormat
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.util.Try
trait HtmlCleaner {
@@ -27,8 +27,8 @@ object BlockNumberCleaner extends HtmlCleaner {
private val Block = """""".r
override def clean(document: Document): Document = {
- document.getAllElements.foreach { element =>
- val blockComments = element.childNodes.flatMap { node =>
+ document.getAllElements.asScala.foreach { element =>
+ val blockComments = element.childNodes.asScala.flatMap { node =>
node.toString.trim match {
case Block(num) =>
Option(node.nextSibling).foreach(_.attr("id", s"block-$num"))
@@ -45,7 +45,7 @@ object BlockNumberCleaner extends HtmlCleaner {
object BlockquoteCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
- val quotedBlockquotes = document.getElementsByTag("blockquote").filter(_.hasClass("quoted"))
+ val quotedBlockquotes = document.getElementsByTag("blockquote").asScala.filter(_.hasClass("quoted"))
val quoteSvg = views.html.fragments.inlineSvg("quote", "icon").toString()
val wrapBlockquoteChildren = (blockquoteElement: Element) => {
val container = document.createElement("div")
@@ -65,7 +65,7 @@ object BlockquoteCleaner extends HtmlCleaner {
object PullquoteCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
- val pullquotes = document.getElementsByTag("aside").filter(_.hasClass("element-pullquote"))
+ val pullquotes = document.getElementsByTag("aside").asScala.filter(_.hasClass("element-pullquote"))
val openingQuoteSvg = views.html.fragments.inlineSvg("quote", "icon", List("inline-tone-fill")).toString()
val closingQuoteSvg = views.html.fragments.inlineSvg("quote", "icon", List("closing", "inline-tone-fill")).toString()
@@ -84,7 +84,7 @@ case object R2VideoCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
- val legacyVideos = document.getElementsByTag("video").filter(_.hasClass("gu-video")).filter(_.parent().tagName() != "figure")
+ val legacyVideos = document.getElementsByTag("video").asScala.filter(_.hasClass("gu-video")).filter(_.parent().tagName() != "figure")
legacyVideos.foreach( videoElement => {
videoElement.wrap("")
@@ -98,9 +98,9 @@ case object R2VideoCleaner extends HtmlCleaner {
case class RecipeBodyImage(isRecipeArticle: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isRecipeArticle) {
- document.getElementsByClass("element-image") foreach(_.remove())
- document.getElementsByTag("aside").filter(_.hasClass("element-pullquote")) foreach( _.remove())
- document.getElementsByClass("element-rich-link").foreach( _.remove())
+ document.getElementsByClass("element-image").asScala foreach(_.remove())
+ document.getElementsByTag("aside").asScala.filter(_.hasClass("element-pullquote")) foreach( _.remove())
+ document.getElementsByClass("element-rich-link").asScala.foreach( _.remove())
}
document
}
@@ -110,8 +110,8 @@ case class PictureCleaner(article: Article, amp: Boolean)(implicit request: Requ
def clean(body: Document): Document = {
for {
- figure <- body.getElementsByTag("figure")
- image <- figure.getElementsByTag("img").headOption
+ figure <- body.getElementsByTag("figure").asScala
+ image <- figure.getElementsByTag("img").asScala.headOption
if !(figure.hasClass("element-comment") ||
figure.hasClass("element-witness") ||
figure.hasClass("element-atom"))
@@ -188,12 +188,12 @@ case class PictureCleaner(article: Article, amp: Boolean)(implicit request: Requ
def findBreakpointWidths(figure: Element): ContentHinting = {
- figure.classNames().map(Some(_)) match {
- case classes if classes.contains(Supporting.className) => Supporting
- case classes if classes.contains(Showcase.className) => Showcase
- case classes if classes.contains(Thumbnail.className) => Thumbnail
- case classes if classes.contains(Immersive.className) => Immersive
- case classes if classes.contains(Halfwidth.className) => Halfwidth
+ figure.classNames().asScala.map(Some(_)) match {
+ case classes if classes.asJava.contains(Supporting.className) => Supporting
+ case classes if classes.asJava.contains(Showcase.className) => Showcase
+ case classes if classes.asJava.contains(Thumbnail.className) => Thumbnail
+ case classes if classes.asJava.contains(Immersive.className) => Immersive
+ case classes if classes.asJava.contains(Halfwidth.className) => Halfwidth
case _ => Inline
}
}
@@ -223,7 +223,7 @@ case class InBodyLinkCleaner(dataLinkName: String, amp: Boolean = false)(implici
def clean(body: Document): Document = {
val links = body.getElementsByAttribute("href")
- links.foreach { link =>
+ links.asScala.foreach { link =>
if (link.tagName == "a") {
link.attr("href", LinkTo(link.attr("href"), edition))
link.attr("data-link-name", dataLinkName)
@@ -242,7 +242,7 @@ case class InBodyLinkCleaner(dataLinkName: String, amp: Boolean = false)(implici
// bar -> bar
val anchors = body.getElementsByAttribute("name")
- anchors.foreach { anchor =>
+ anchors.asScala.foreach { anchor =>
if (anchor.tagName == "a") {
val text = anchor.ownText()
anchor.empty().after(text)
@@ -265,7 +265,7 @@ case class TruncateCleaner(limit: Int)(implicit val edition: Edition, implicit v
}
def truncateElement(charLimit: Int, element: Element): Int = {
- element.childNodes.foldLeft(charLimit) {
+ element.childNodes.asScala.foldLeft(charLimit) {
(t, node) =>
node match {
case tNode: TextNode => truncateTextNode(t, tNode)
@@ -284,7 +284,7 @@ class TweetCleaner(content: Content, amp: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
- document.getElementsByClass("element-tweet").foreach { tweet =>
+ document.getElementsByClass("element-tweet").asScala.foreach { tweet =>
val tweetData: Option[Tweet] = Option(tweet.attr("data-canonical-url")).flatMap { url =>
url.split('/').lastOption.flatMap { id =>
@@ -294,7 +294,7 @@ class TweetCleaner(content: Content, amp: Boolean) extends HtmlCleaner {
val tweetImage = tweetData.flatMap(_.firstImage)
- tweet.getElementsByClass("twitter-tweet").foreach { element =>
+ tweet.getElementsByClass("twitter-tweet").asScala.foreach { element =>
if (amp) {
tweetData.foreach { elem =>
@@ -367,8 +367,8 @@ case class TagLinker(article: Article)(implicit val edition: Edition, implicit v
if (article.content.showInRelated) {
// Get all paragraphs which are not contained in a pullquote or in an instagram caption
- val paragraphs = doc.getElementsByTag("p").filterNot( p =>
- p.parents.exists { ancestor =>
+ val paragraphs = doc.getElementsByTag("p").asScala.filterNot( p =>
+ p.parents.asScala.exists { ancestor =>
val inPullquote = ancestor.tagName() == "aside" && ancestor.hasClass("element-pullquote")
val inInstagramBlock = ancestor.hasClass("instagram-media")
inPullquote || inInstagramBlock
@@ -421,7 +421,7 @@ object InBodyElementCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
// this code REMOVES unsupported embeds
if(ShowAllArticleEmbedsSwitch.isSwitchedOff) {
- val embeddedElements = document.getElementsByTag("figure").filter(_.hasClass("element"))
+ val embeddedElements = document.getElementsByTag("figure").asScala.filter(_.hasClass("element"))
val unsupportedElements = embeddedElements.filterNot(e => supportedElements.exists(e.hasClass))
unsupportedElements.foreach(_.remove())
}
@@ -431,7 +431,7 @@ object InBodyElementCleaner extends HtmlCleaner {
case class Summary(amount: Int) extends HtmlCleaner {
override def clean(document: Document): Document = {
- val children = document.body().children().toList
+ val children = document.body().children().asScala.toList
val para: Option[Element] = children.filter(_.nodeName() == "p").take(amount).lastOption
// if there is are no p's, just take the first n things (could be a blog)
para match {
@@ -445,10 +445,10 @@ case class Summary(amount: Int) extends HtmlCleaner {
case class PhotoEssayImages(isPhotoEssay: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isPhotoEssay) {
- document.getElementsByTag("figure").filter(_.hasClass("element-image"))foreach{ images =>
+ document.getElementsByTag("figure").asScala.filter(_.hasClass("element-image"))foreach{ images =>
images.addClass("element-image--photo-essay")
}
- document.getElementsByClass("block-share--article").foreach{ shares =>
+ document.getElementsByClass("block-share--article").asScala.foreach{ shares =>
shares.remove()
}
}
@@ -459,7 +459,7 @@ case class PhotoEssayImages(isPhotoEssay: Boolean) extends HtmlCleaner {
case class PhotoEssayQuotes(isPhotoEssay: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isPhotoEssay) {
- document.getElementsByClass("element-pullquote").foreach{ quotes =>
+ document.getElementsByClass("element-pullquote").asScala.foreach{ quotes =>
quotes.addClass("element-pullquote--photo-essay")
}
}
@@ -470,7 +470,7 @@ case class PhotoEssayQuotes(isPhotoEssay: Boolean) extends HtmlCleaner {
case class PhotoEssayCaptions(isPhotoEssay: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isPhotoEssay) {
- document.getElementsByClass("caption--img").foreach{ captions =>
+ document.getElementsByClass("caption--img").asScala.foreach{ captions =>
captions.remove()
}
}
@@ -481,7 +481,7 @@ case class PhotoEssayCaptions(isPhotoEssay: Boolean) extends HtmlCleaner {
case class PhotoEssayHalfWidth(isPhotoEssay: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isPhotoEssay) {
- document.getElementsByTag("figure").filter(_.hasClass("element--halfWidth")).zipWithIndex.foreach{ case(halfWidthImage, index) =>
+ document.getElementsByTag("figure").asScala.filter(_.hasClass("element--halfWidth")).zipWithIndex.foreach{ case(halfWidthImage, index) =>
if(index % 2 == 0) {
halfWidthImage.addClass("half-width-odd")
}
@@ -494,7 +494,7 @@ case class PhotoEssayHalfWidth(isPhotoEssay: Boolean) extends HtmlCleaner {
case class PhotoEssayBlockQuote(isPhotoEssay: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isPhotoEssay) {
- document.getElementsByTag("blockquote").foreach{ blockquotes =>
+ document.getElementsByTag("blockquote").asScala.foreach{ blockquotes =>
if(!blockquotes.children().is(".pullquote-paragraph")){
blockquotes.addClass("photo-essay-block-quote")
}
@@ -507,7 +507,7 @@ case class PhotoEssayBlockQuote(isPhotoEssay: Boolean) extends HtmlCleaner {
case class ImmersiveLinks(isImmersive: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isImmersive) {
- document.getElementsByTag("a").foreach{ a =>
+ document.getElementsByTag("a").asScala.foreach{ a =>
a.addClass("in-body-link--immersive")
}
}
@@ -518,7 +518,7 @@ case class ImmersiveLinks(isImmersive: Boolean) extends HtmlCleaner {
case class ImmersiveHeaders(isImmersive: Boolean) extends HtmlCleaner {
override def clean(document: Document): Document = {
if(isImmersive) {
- document.getElementsByTag("h2").foreach{ h2 =>
+ document.getElementsByTag("h2").asScala.foreach{ h2 =>
val beforeH2 = h2.previousElementSibling()
if (beforeH2 != null) {
if(beforeH2.hasClass("element--immersive") && beforeH2.hasClass("element-image")) {
@@ -543,7 +543,7 @@ case class DropCaps(isFeature: Boolean, isImmersive: Boolean, isRecipeArticle: B
override def clean(document: Document): Document = {
if(isFeature && !isRecipeArticle) {
- val children = document.body().children().toList
+ val children = document.body().children().asScala.toList
children.headOption match {
case Some(p) =>
if (p.nodeName() == "p") p.html(setDropCap(p))
@@ -551,7 +551,7 @@ case class DropCaps(isFeature: Boolean, isImmersive: Boolean, isRecipeArticle: B
}
}
- document.getElementsByTag("h2").foreach{ h2 =>
+ document.getElementsByTag("h2").asScala.foreach{ h2 =>
if (isImmersive && h2.text() == "* * *") {
h2.before("""
""")
@@ -616,14 +616,14 @@ object InteractiveSrcdocCleaner extends HtmlCleaner {
object FigCaptionCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
- document.getElementsByTag("figcaption").foreach{ _.addClass("caption caption--img")}
+ document.getElementsByTag("figcaption").asScala.foreach{ _.addClass("caption caption--img")}
document
}
}
object MainFigCaptionCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
- document.getElementsByTag("figcaption").foreach{ _.addClass("caption caption--img caption--main")}
+ document.getElementsByTag("figcaption").asScala.foreach{ _.addClass("caption caption--img caption--main")}
document
}
}
@@ -635,11 +635,11 @@ case class RichLinkCleaner(amp: Boolean = false) extends HtmlCleaner {
richLinks
.addClass("element-rich-link--not-upgraded")
- .attr("data-component", "rich-link")
- .zipWithIndex.map{ case (el, index) => el.attr("data-link-name", s"rich-link-${richLinks.length} | ${index+1}") }
+ .attr("data-component", "rich-link").asScala
+ .zipWithIndex.map{ case (el, index) => el.attr("data-link-name", s"rich-link-${richLinks.asScala.length} | ${index+1}") }
if (!amp) {
- richLinks
+ richLinks.asScala
.map( richLink => {
val link = richLink.getElementsByTag("a").first()
val href = link.attr("href")
@@ -657,8 +657,8 @@ object MembershipEventCleaner extends HtmlCleaner {
val membershipEvents = document.getElementsByClass("element-membership")
membershipEvents
.addClass("element-membership--not-upgraded")
- .attr("data-component", "membership-events")
- .zipWithIndex.map{ case (el, index) => el.attr("data-link-name", s"membership-event-${membershipEvents.length} | ${index+1}") }
+ .attr("data-component", "membership-events").asScala
+ .zipWithIndex.map{ case (el, index) => el.attr("data-link-name", s"membership-event-${membershipEvents.asScala.length} | ${index+1}") }
document
}
@@ -672,8 +672,8 @@ case class AtomsCleaner(atoms: Option[Atoms], shouldFence: Boolean = true, amp:
override def clean(document: Document): Document = {
if (UseAtomsSwitch.isSwitchedOn) {
for {
- atomContainer <- document.getElementsByClass("element-atom")
- bodyElement <- atomContainer.getElementsByTag("gu-atom")
+ atomContainer <- document.getElementsByClass("element-atom").asScala
+ bodyElement <- atomContainer.getElementsByTag("gu-atom").asScala
atomId <- Some(bodyElement.attr("data-atom-id"))
atomData <- findAtom(atomId)
} {
@@ -718,7 +718,7 @@ case class CommercialMPUForFronts(isNetworkFront: Boolean) extends HtmlCleaner {
val sliceSlot = views.html.fragments.items.facia_cards.sliceSlot
- val containers: List[Element] = document.getElementsByClass("fc-container").toList
+ val containers: List[Element] = document.getElementsByClass("fc-container").asScala.toList
// On mobile, we remove the first container if it is a thrasher on a Network Front
// and remove a container if it, or the next sibling, is a commercial container
@@ -734,7 +734,7 @@ case class CommercialMPUForFronts(isNetworkFront: Boolean) extends HtmlCleaner {
}
// On desktop, a MPU slot is simply inserted when there is a slice available
- val slices: List[Element] = document.getElementsByClass("fc-slice__item--mpu-candidate").toList
+ val slices: List[Element] = document.getElementsByClass("fc-slice__item--mpu-candidate").asScala.toList
for (slice <- slices) {
slice.append(s"${sliceSlot(slices.indexOf(slice) + 1)}")
@@ -748,7 +748,7 @@ case class CommercialComponentHigh(isPaidContent: Boolean, isNetworkFront: Boole
override def clean(document: Document): Document = {
- val containers: List[(Element, Int)] = document.getElementsByClass("fc-container").toList.zipWithIndex
+ val containers: List[(Element, Int)] = document.getElementsByClass("fc-container").asScala.toList.zipWithIndex
val minContainers = if (isPaidContent) 1 else 2
@@ -760,7 +760,7 @@ case class CommercialComponentHigh(isPaidContent: Boolean, isNetworkFront: Boole
val adSlotHtml = views.html.fragments.commercial.commercialComponentHigh(isPaidContent, hasPageSkin)
- val adSlot: Option[Element] = Jsoup.parseBodyFragment(adSlotHtml.toString).body().children().toList.headOption
+ val adSlot: Option[Element] = Jsoup.parseBodyFragment(adSlotHtml.toString).body().children().asScala.toList.headOption
for {
(container, _) <- containers.lift(containerIndex)
@@ -782,7 +782,7 @@ case class ExplainerCleaner(explainers: Seq[ExplainerAtom]) extends HtmlCleaner
override def clean(document: Document): Document = {
document
- .getElementsByClass("element-interactive")
+ .getElementsByClass("element-interactive").asScala
.foreach { i =>
val eid = i.attr("data-canonical-url").drop(prefixLength)
val eidInTest = eids.find(_.id == eid)
diff --git a/common/app/views/support/MinuteCleaner.scala b/common/app/views/support/MinuteCleaner.scala
index eaec15cc4a51..095dee8bee8d 100644
--- a/common/app/views/support/MinuteCleaner.scala
+++ b/common/app/views/support/MinuteCleaner.scala
@@ -1,12 +1,12 @@
package views.support
import org.jsoup.nodes.{Document, Element}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
case class TimestampCleaner(article: model.Article) extends HtmlCleaner {
override def clean(document: Document): Document = {
// US Minute articles use liveblog blocks but we don't want to show timestamps
- if (article.isTheMinute) document.getElementsByClass("published-time").foreach(_.remove)
+ if (article.isTheMinute) document.getElementsByClass("published-time").asScala.foreach(_.remove)
document
}
}
@@ -36,7 +36,7 @@ case class MinuteCleaner(article: model.Article) extends HtmlCleaner {
override def clean(document: Document): Document = {
if (article.isTheMinute) {
- document.getElementsByClass("block").foreach { block =>
+ document.getElementsByClass("block").asScala.foreach { block =>
val allElements = block.getAllElements
val heading = block.select("h2.block-title")
val headingNumRegEx = "^([0-9]+)[.]{1}[ ]*"
@@ -61,7 +61,7 @@ case class MinuteCleaner(article: model.Article) extends HtmlCleaner {
// Add relevant classes
ParentClasses.foldLeft(Set(): Set[String]) { case (classes, (childClass, parentClass)) =>
- if (allElements.exists(_.hasClass(childClass))) classes + parentClass
+ if (allElements.asScala.exists(_.hasClass(childClass))) classes + parentClass
else classes
} foreach block.addClass
@@ -71,23 +71,23 @@ case class MinuteCleaner(article: model.Article) extends HtmlCleaner {
}
// Remove Un-needed Classes
- allElements.foreach(el => strippable.foreach(el.removeClass))
+ allElements.asScala.foreach(el => strippable.foreach(el.removeClass))
// Re-order Elements
- block.getElementsByClass("block-elements").headOption.map { outer =>
- block.getElementsByClass("block-title").headOption.map(t => outer.insertChildren(0, Seq(t)))
- outer.getElementsByClass("element-image").headOption.map(outer.after)
+ block.getElementsByClass("block-elements").asScala.headOption.map { outer =>
+ block.getElementsByClass("block-title").asScala.headOption.map(t => outer.insertChildren(0, t))
+ outer.getElementsByClass("element-image").asScala.headOption.map(outer.after)
}
// Inline (fullscreen) image mark-up
// Move the picture element out of thumbnail anchor and responsive image
- block.getElementsByClass("element--inline").headOption.map { figure =>
- figure.getElementsByClass("u-responsive-ratio").headOption.map { outer => {
- figure.insertChildren(0, Seq(outer))
- outer.getElementsByClass("gu-image").headOption.map(image => image.addClass("js-is-fixed-height"))
+ block.getElementsByClass("element--inline").asScala.headOption.map { figure =>
+ figure.getElementsByClass("u-responsive-ratio").asScala.headOption.map { outer => {
+ figure.insertChildren(0, outer)
+ outer.getElementsByClass("gu-image").asScala.headOption.map(image => image.addClass("js-is-fixed-height"))
outer.addClass("element--inline__image-wrapper")
}}
- figure.getElementsByClass("article__img-container").headOption.map(container => container.remove())
+ figure.getElementsByClass("article__img-container").asScala.headOption.map(container => container.remove())
}
// Remove Elements
diff --git a/common/app/views/support/WitnessCleaner.scala b/common/app/views/support/WitnessCleaner.scala
index 90495ae314ad..dd150bb3d18d 100644
--- a/common/app/views/support/WitnessCleaner.scala
+++ b/common/app/views/support/WitnessCleaner.scala
@@ -1,23 +1,23 @@
package views.support
import org.jsoup.nodes.{ Element, Document }
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
object WitnessCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
- document.getElementsByClass("element-witness-video").foreach { embed: Element =>
+ document.getElementsByClass("element-witness-video").asScala.foreach { embed: Element =>
//remove height from video iframe
- embed.getElementsByClass("element-witness--main").foreach { main =>
- main.getElementsByTag("iframe").foreach(_.attr("height", ""))
+ embed.getElementsByClass("element-witness--main").asScala.foreach { main =>
+ main.getElementsByTag("iframe").asScala.foreach(_.attr("height", ""))
}
}
- document.getElementsByClass("element-witness--brand").foreach { brand: Element =>
+ document.getElementsByClass("element-witness--brand").asScala.foreach { brand: Element =>
val witnessLogo = document.createElement("span")
witnessLogo.attr("class", "witness-logo")
witnessLogo.html("Guardian Witness")
- brand.children().foreach(_.remove)
+ brand.children().asScala.foreach(_.remove)
brand.text("")
brand.appendChild(witnessLogo)
}
diff --git a/common/app/views/support/cleaner/AmpAdCleaner.scala b/common/app/views/support/cleaner/AmpAdCleaner.scala
index 81e06c615a81..698eda539b0d 100644
--- a/common/app/views/support/cleaner/AmpAdCleaner.scala
+++ b/common/app/views/support/cleaner/AmpAdCleaner.scala
@@ -5,7 +5,7 @@ import model.Article
import org.jsoup.nodes.{Document, Element}
import views.support.{AmpAd, AmpAdDataSlot, HtmlCleaner}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
object AmpAdCleaner {
val AD_LIMIT = 8
@@ -97,7 +97,7 @@ case class AmpAdCleaner(edition: Edition, uri: String, article: Article) extends
}
override def clean(document: Document): Document = {
- val children = document.body().children().toList
+ val children = document.body().children().asScala.toList
val adsAfterAndEnd = AmpAdCleaner.findElementsNeedingAdsAfter(children)
adsAfterAndEnd.foreach(adAfter) // side effects =(
document
diff --git a/common/app/views/support/cleaner/AmpEmbedCleaner.scala b/common/app/views/support/cleaner/AmpEmbedCleaner.scala
index 5a6bc9f34c4c..c263b2e558c4 100644
--- a/common/app/views/support/cleaner/AmpEmbedCleaner.scala
+++ b/common/app/views/support/cleaner/AmpEmbedCleaner.scala
@@ -6,14 +6,14 @@ import model.{Article, VideoAsset}
import org.jsoup.nodes.{Document, Element}
import views.support.{AmpSrcCleaner, HtmlCleaner}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.collection.mutable
case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def cleanAmpVideos(document: Document): Unit = {
- document.getElementsByTag("video").foreach(video => {
+ document.getElementsByTag("video").asScala.foreach(video => {
val posterSrc = video.attr("poster")
val newPosterSrc = AmpSrcCleaner(posterSrc).toString
val mediaId = video.attr("data-media-id")
@@ -83,8 +83,8 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def clean(document: Document): mutable.Buffer[Unit] = {
for {
- videoElement <- document.getElementsByClass("element-video")
- iframeElement <- videoElement.getElementsByTag("iframe")
+ videoElement <- document.getElementsByClass("element-video").asScala
+ iframeElement <- videoElement.getElementsByTag("iframe").asScala
ampExternalVideo <- getAmpExternalVideoByUrl(videoElement.attr("data-canonical-url"))
} yield {
val ampVideoElement = createElement(document, ampExternalVideo.elementType, ampExternalVideo.attributes)
@@ -139,8 +139,8 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def clean(document: Document): mutable.Buffer[Unit] = {
for {
- audioElement <- document.getElementsByClass("element-audio")
- iframeElement <- audioElement.getElementsByTag("iframe")
+ audioElement <- document.getElementsByClass("element-audio").asScala
+ iframeElement <- audioElement.getElementsByTag("iframe").asScala
} yield {
val soundcloudElement = AmpSoundcloud.getSoundCloudElement(document, iframeElement)
if (soundcloudElement.nonEmpty) {
@@ -164,8 +164,8 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def cleanAmpInstagram(document: Document): Unit = {
- document.getElementsByClass("element-instagram").foreach { embed: Element =>
- embed.getElementsByTag("a").map { element: Element =>
+ document.getElementsByClass("element-instagram").asScala.foreach { embed: Element =>
+ embed.getElementsByTag("a").asScala.map { element: Element =>
val src = element.attr("href")
val list = src.split("""instagram\.com/p/""")
(if (list.length == 1) None else list.lastOption).flatMap(_.split("/").headOption).map { shortcode =>
@@ -188,11 +188,11 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def canRenderInteractive(element: Element): Boolean = {
element.attributes().get("data-interactive").contains("iframe-wrapper") &&
- element.getElementsByTag("a").nonEmpty
+ element.getElementsByTag("a").asScala.nonEmpty
}
def cleanAmpInteractives(document: Document): Unit = {
- document.getElementsByClass("element-interactive").foreach {
+ document.getElementsByClass("element-interactive").asScala.foreach {
interactive: Element =>
if (canRenderInteractive(interactive)) {
val link = interactive.getElementsByTag("a")
@@ -236,8 +236,8 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def cleanAmpMaps(document: Document): Unit = {
- document.getElementsByClass("element-map").foreach { embed: Element =>
- embed.getElementsByTag("iframe").foreach { element: Element =>
+ document.getElementsByClass("element-map").asScala.foreach { embed: Element =>
+ embed.getElementsByTag("iframe").asScala.foreach { element: Element =>
val src = element.attr("src")
val frameBorder = element.attr("frameborder")
val elementMap = document.createElement("amp-iframe")
@@ -267,8 +267,8 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def cleanAmpComments(document: Document): Unit = {
- document.getElementsByClass("element-comment").foreach { figure: Element =>
- figure.getElementsByTag("img").foreach { image: Element =>
+ document.getElementsByClass("element-comment").asScala.foreach { figure: Element =>
+ figure.getElementsByTag("img").asScala.foreach { image: Element =>
val validImage = image.hasAttr("class") && image.attr("class").contains("d2-avatar") && image.hasAttr("src") && image.hasAttr("height") && image.hasAttr("width") && image.hasAttr("alt")
if (validImage) {
val ampImg = document.createElement("amp-img")
@@ -292,9 +292,9 @@ case class AmpEmbedCleaner(article: Article) extends HtmlCleaner {
def cleanAmpEmbed(document: Document): Unit = {
- document.getElementsByClass("element-embed")
- .filter(_.getElementsByTag("iframe").nonEmpty)
- .foreach(_.getElementsByTag("iframe").foreach {
+ document.getElementsByClass("element-embed").asScala
+ .filter(_.getElementsByTag("iframe").asScala.nonEmpty)
+ .foreach(_.getElementsByTag("iframe").asScala.foreach {
//check for soundcloud embeds and remove any others
iframeElement: Element =>
val soundcloudElement = AmpSoundcloud.getSoundCloudElement(document, iframeElement)
diff --git a/common/app/views/support/cleaner/CmpParamCleaner.scala b/common/app/views/support/cleaner/CmpParamCleaner.scala
index 97b28e4db9ed..2d13d198e71e 100644
--- a/common/app/views/support/cleaner/CmpParamCleaner.scala
+++ b/common/app/views/support/cleaner/CmpParamCleaner.scala
@@ -3,7 +3,7 @@ package views.support.cleaner
import org.jsoup.nodes.{Document, Element}
import views.support.HtmlCleaner
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
object CmpParamCleaner extends HtmlCleaner {
override def clean(document: Document): Document = {
@@ -11,7 +11,7 @@ object CmpParamCleaner extends HtmlCleaner {
"profile.theguardian.com/form/embed") // Guardian embed wrapper
for (url <- formstackSrcValues) {
- document.getElementsByAttributeValueContaining("src", url).foreach { elem: Element =>
+ document.getElementsByAttributeValueContaining("src", url).asScala.foreach { elem: Element =>
elem.addClass("element-pass-cmp")
}
}
diff --git a/common/app/views/support/cleaner/VideoEmbedCleaner.scala b/common/app/views/support/cleaner/VideoEmbedCleaner.scala
index 6219ead17024..411e467e3e72 100644
--- a/common/app/views/support/cleaner/VideoEmbedCleaner.scala
+++ b/common/app/views/support/cleaner/VideoEmbedCleaner.scala
@@ -6,7 +6,7 @@ import model.{Article, DotcomContentType, ShareLinks, VideoElement}
import org.jsoup.nodes.{Document, Element}
import views.support.{HtmlCleaner, Item640}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
/*
* maxEmbedHeight: 812px - full height on an iPhone X
@@ -16,7 +16,7 @@ case class VideoEmbedCleaner(article: Article, maxEmbedHeight: Int = 812) extend
def facebookVideoEmbedUrlFor(url: String): String = s"$facebookVideoEmbedUrl${URLEncoder.encode(url, "UTF-8")}"
def addShareButtons(document: Document): Unit = {
- document.getElementsByClass("element-video").foreach(element => {
+ document.getElementsByClass("element-video").asScala.foreach(element => {
val webUrl = element.attr("data-canonical-url")
val blockId = element.attr("data-media-id")
val mediaPath = element.attr("data-video-poster")
@@ -32,7 +32,7 @@ case class VideoEmbedCleaner(article: Article, maxEmbedHeight: Int = 812) extend
element.addClass("fig--has-shares")
element.addClass("fig--narrow-caption")
// add extra margin if there is no caption to fit the share buttons
- val figcaption = element.getElementsByTag("figcaption")
+ val figcaption = element.getElementsByTag("figcaption").asScala
if (figcaption.length < 1) {
element.addClass("fig--no-caption")
}
@@ -45,12 +45,12 @@ case class VideoEmbedCleaner(article: Article, maxEmbedHeight: Int = 812) extend
addShareButtons(document)
}
- document.getElementsByClass("element-video").foreach { figure: Element =>
+ document.getElementsByClass("element-video").asScala.foreach { figure: Element =>
val canonicalUrl = figure.attr("data-canonical-url")
val figcaption = figure.getElementsByTag("figcaption")
figure.attr("data-component", "video-inbody-embed")
- figure.getElementsByClass("gu-video").foreach { element: Element =>
+ figure.getElementsByClass("gu-video").asScala.foreach { element: Element =>
element
.removeClass("gu-video")
.addClass("js-gu-media--enhance gu-media gu-media--video")
@@ -61,7 +61,7 @@ case class VideoEmbedCleaner(article: Article, maxEmbedHeight: Int = 812) extend
element.attr("data-canonical-url", new URL(canonicalUrl).getPath.stripPrefix("/"))
}
- if (figcaption.nonEmpty) {
+ if (figcaption.asScala.nonEmpty) {
val informationIcon = views.html.fragments.inlineSvg("information", "icon", List("centered-icon", "rounded-icon")).toString()
figcaption.prepend(informationIcon)
}
@@ -97,11 +97,11 @@ case class VideoEmbedCleaner(article: Article, maxEmbedHeight: Int = 812) extend
}
override def clean(document: Document): Document = {
- document.getElementsByClass("element-video").filter { element: Element =>
+ document.getElementsByClass("element-video").asScala.filter { element: Element =>
element.getElementsByClass("gu-video").isEmpty
}.foreach { element: Element =>
val canonicalUrl = element.attr("data-canonical-url")
- element.children().headOption.foreach { child =>
+ element.children().asScala.headOption.foreach { child =>
// As Facebook have declared that you have to use their video JS plugin, which in turn pulls in their whole JS API
// We've decided to use the canonical URL, and create the video element here rather that CAPI, as, if it changes
// again, we can change it here and it will also fix things retrospectively.
@@ -121,7 +121,7 @@ case class VideoEmbedCleaner(article: Article, maxEmbedHeight: Int = 812) extend
cleanVideo(document)
- document.getElementsByClass("element-witness--main").foreach { element: Element =>
+ document.getElementsByClass("element-witness--main").asScala.foreach { element: Element =>
element.select("iframe").wrap("")
}
diff --git a/common/app/views/support/package.scala b/common/app/views/support/package.scala
index 6eeb163129d3..156e7586ff6b 100644
--- a/common/app/views/support/package.scala
+++ b/common/app/views/support/package.scala
@@ -18,7 +18,7 @@ import play.api.mvc.{RequestHeader, Result}
import play.twirl.api.Html
import layout.slices.ContainerDefinition
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
/**
* Encapsulates previous and next urls
@@ -84,7 +84,9 @@ object ContributorLinks {
object `package` {
- def withJsoup(html: Html)(cleaners: HtmlCleaner*): Html = withJsoup(html.body) { cleaners: _* }
+ def withJsoup(html: Html)(cleaners: HtmlCleaner*): Html = withJsoup(html.body) {
+ cleaners: _*
+ }
def withJsoup(html: String)(cleaners: HtmlCleaner*): Html = {
val cleanedHtml = cleaners.foldLeft(Jsoup.parseBodyFragment(html)) { case (html, cleaner) => cleaner.clean(html) }
@@ -163,7 +165,7 @@ object StripHtmlTagsAndUnescapeEntities{
object TableEmbedComplimentaryToP extends HtmlCleaner {
override def clean(document: Document): Document = {
- document.getElementsByClass("element-table").foreach { element =>
+ document.getElementsByClass("element-table").asScala.foreach { element =>
Option(element.nextElementSibling).map { nextSibling =>
if (nextSibling.tagName == "p") element.addClass("element-table--complimentary")
}
diff --git a/common/test/common/TagLinkerTest.scala b/common/test/common/TagLinkerTest.scala
index 038138dfe5ee..a23b25a23b66 100644
--- a/common/test/common/TagLinkerTest.scala
+++ b/common/test/common/TagLinkerTest.scala
@@ -15,7 +15,7 @@ import org.scalatestplus.play.guice.GuiceOneAppPerSuite
import play.api.test.FakeRequest
import views.support.TagLinker
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
class TagLinkerTest extends FlatSpec with Matchers with GuiceOneAppPerSuite {
@@ -23,7 +23,7 @@ class TagLinkerTest extends FlatSpec with Matchers with GuiceOneAppPerSuite {
implicit val request = FakeRequest("GET", "/")
private implicit class Document2FirstPara(d: Document) {
- val firstPara = d.select("p").head.html
+ val firstPara = d.select("p").asScala.head.html
}
"TagLinker" should "link tag at the start of the paragraph" in {
diff --git a/common/test/conf/switches/SwitchesTest.scala b/common/test/conf/switches/SwitchesTest.scala
index c63495dc0d52..d85f75a10ea8 100644
--- a/common/test/conf/switches/SwitchesTest.scala
+++ b/common/test/conf/switches/SwitchesTest.scala
@@ -9,7 +9,7 @@ class SwitchesTest extends FlatSpec with Matchers with AppendedClues {
private val SwitchNamePattern = """([a-z\d-]+)""".r
private def forAllSwitches(test: Switch => Unit): Unit = {
- whenReady(Switches.eventuallyAll)(_ foreach { switch => test(switch) withClue s"(switch: '${switch.name}')" })
+ Switches.all foreach { switch => test(switch) withClue s"(switch: '${switch.name}')" }
}
private val testSwitchGroup = new SwitchGroup("category")
diff --git a/common/test/metrics/DurationMetricTest.scala b/common/test/metrics/DurationMetricTest.scala
index fc06e1e3862f..62f9183c794c 100644
--- a/common/test/metrics/DurationMetricTest.scala
+++ b/common/test/metrics/DurationMetricTest.scala
@@ -2,9 +2,6 @@ package metrics
import com.amazonaws.services.cloudwatch.model.StandardUnit
import org.scalatest.{FlatSpec, Matchers}
-import scala.concurrent.Await
-import scala.concurrent.duration._
-
class DurationMetricTest extends FlatSpec with Matchers{
@@ -21,15 +18,11 @@ class DurationMetricTest extends FlatSpec with Matchers{
durationMetric.recordDuration(1000)
durationMetric.recordDuration(1000)
- Await.result(durationMetric.getDataFuture, 10.seconds)
-
val storedDatapoints = durationMetric.getAndResetDataPoints
storedDatapoints.length should be (3)
storedDatapoints.forall(_.value == 1000) should be (true)
- Await.result(durationMetric.getDataFuture, 10.seconds)
-
durationMetric.getAndResetDataPoints.length should be(0)
}
@@ -47,8 +40,6 @@ class DurationMetricTest extends FlatSpec with Matchers{
durationMetric.recordDuration(1000)
List(metricOne, metricTwo, metricThree, metricFour).map(durationMetric.record)
- Await.result(durationMetric.getDataFuture, 10.seconds)
-
val dataPoints = durationMetric.getAndResetDataPoints
dataPoints.length should be (7)
dataPoints.splitAt(4)._1 should be (allMetrics)
diff --git a/common/test/model/CachedTest.scala b/common/test/model/CachedTest.scala
index 97d6418bf071..f0da81601922 100644
--- a/common/test/model/CachedTest.scala
+++ b/common/test/model/CachedTest.scala
@@ -8,7 +8,7 @@ import conf.switches.Switches.LongCacheSwitch
import implicits.Dates.jodaToJavaInstant
import model.Cached.{RevalidatableResult, WithoutRevalidationResult}
import org.joda.time.DateTime
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
import org.scalatest.{FlatSpec, Matchers}
import play.api.mvc.Results
diff --git a/common/test/model/DateTimeTest.scala b/common/test/model/DateTimeTest.scala
index fd849d886ea4..94e3469ef3bc 100644
--- a/common/test/model/DateTimeTest.scala
+++ b/common/test/model/DateTimeTest.scala
@@ -5,7 +5,7 @@ import org.scalatest.FlatSpec
import org.scalatest.Matchers
import org.joda.time.DateTime
import com.gu.contentapi.client.model.v1.{ Content => ApiContent }
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
class DateTimeTest extends FlatSpec with Matchers with implicits.Dates {
diff --git a/common/test/views/support/TemplatesTest.scala b/common/test/views/support/TemplatesTest.scala
index d47d6d2dfe51..9043c155a286 100644
--- a/common/test/views/support/TemplatesTest.scala
+++ b/common/test/views/support/TemplatesTest.scala
@@ -12,7 +12,7 @@ import play.api.test.FakeRequest
import test.TestRequest
import org.scalatestplus.play.guice.GuiceOneAppPerSuite
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
import scala.xml.XML
class TemplatesTest extends FlatSpec with Matchers with GuiceOneAppPerSuite {
@@ -67,13 +67,13 @@ class TemplatesTest extends FlatSpec with Matchers with GuiceOneAppPerSuite {
portraitImg.attr("data-media-id") should be ("gu-image-5")
portraitImg.nextElementSibling.hasClass("following-element") should be (true)
- for {fig <- figures} {
+ for {fig <- figures.asScala} {
fig.attr("itemprop") should be ("associatedMedia image")
fig.attr("itemscope") should be ("")
fig.attr("itemtype") should be ("http://schema.org/ImageObject")
}
- for { caption <- body.getElementsByTag("figcaption") } {
+ for { caption <- body.getElementsByTag("figcaption").asScala } {
caption.attr("itemprop") should be("description")
caption.text should include("test caption")
}
diff --git a/common/test/views/support/cleaner/AmpAdCleanerTest.scala b/common/test/views/support/cleaner/AmpAdCleanerTest.scala
index f26378b3a60a..da3522837e62 100644
--- a/common/test/views/support/cleaner/AmpAdCleanerTest.scala
+++ b/common/test/views/support/cleaner/AmpAdCleanerTest.scala
@@ -4,7 +4,7 @@ import org.jsoup.nodes.Element
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.scalatest.{FlatSpec, Matchers}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
class AmpAdCleanerTest extends FlatSpec with Matchers {
@@ -15,7 +15,7 @@ class AmpAdCleanerTest extends FlatSpec with Matchers {
}
private def clean(document: Document): Document = {
- val children = document.body().children().toList
+ val children = document.body().children().asScala.toList
val adsAfterAndEnd = AmpAdCleaner.findElementsNeedingAdsAfter(children)
adsAfterAndEnd.foreach(adAfter) // side effects =(
document
diff --git a/common/test/views/support/cleaner/VideoEmbedCleanerTest.scala b/common/test/views/support/cleaner/VideoEmbedCleanerTest.scala
index 75bf046920e2..b35af815742e 100644
--- a/common/test/views/support/cleaner/VideoEmbedCleanerTest.scala
+++ b/common/test/views/support/cleaner/VideoEmbedCleanerTest.scala
@@ -6,7 +6,7 @@ import org.jsoup.nodes.Element
import org.jsoup.Jsoup
import org.jsoup.nodes.Document
import org.scalatest.{FlatSpec, Matchers}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
class VideoEmbedCleanerTest extends FlatSpec with Matchers {
diff --git a/data/database/08159e58c1aeca7e4c23388225d709862a99f0386bf27bdc9dce092b213b366e b/data/database/0170bcdcf523e17120fc6b27e1ca67edc824daf0d3571cd11637b7ce8f8ee6bc
similarity index 91%
rename from data/database/08159e58c1aeca7e4c23388225d709862a99f0386bf27bdc9dce092b213b366e
rename to data/database/0170bcdcf523e17120fc6b27e1ca67edc824daf0d3571cd11637b7ce8f8ee6bc
index f2962605642a..9c8ec14e2b3b 100644
Binary files a/data/database/08159e58c1aeca7e4c23388225d709862a99f0386bf27bdc9dce092b213b366e and b/data/database/0170bcdcf523e17120fc6b27e1ca67edc824daf0d3571cd11637b7ce8f8ee6bc differ
diff --git a/data/database/041afd392fe6d23ced00426ffeb23353ee59c24046110266b7d673ee1a86e29a b/data/database/041afd392fe6d23ced00426ffeb23353ee59c24046110266b7d673ee1a86e29a
deleted file mode 100644
index 138f55053f0a..000000000000
Binary files a/data/database/041afd392fe6d23ced00426ffeb23353ee59c24046110266b7d673ee1a86e29a and /dev/null differ
diff --git a/data/database/0535efce400ce109464d224f74b1a661efa98f1a74db50ca7ee2516e2b081840 b/data/database/0535efce400ce109464d224f74b1a661efa98f1a74db50ca7ee2516e2b081840
deleted file mode 100644
index 473f4d626eea..000000000000
Binary files a/data/database/0535efce400ce109464d224f74b1a661efa98f1a74db50ca7ee2516e2b081840 and /dev/null differ
diff --git a/data/database/6c84da95d68744278169dbce83c6a17f7e3d177578662bcc3577b3032723254f b/data/database/06d6fb2aad2b4abee2250d39a0870f46a35b5088603a64cd36a262960bab5f19
similarity index 100%
rename from data/database/6c84da95d68744278169dbce83c6a17f7e3d177578662bcc3577b3032723254f
rename to data/database/06d6fb2aad2b4abee2250d39a0870f46a35b5088603a64cd36a262960bab5f19
diff --git a/data/database/0774a33b694580432c13e89cd59e2191a6846a0e72a3b837c36362cf849327e2 b/data/database/0774a33b694580432c13e89cd59e2191a6846a0e72a3b837c36362cf849327e2
deleted file mode 100644
index 820a923bb24d..000000000000
Binary files a/data/database/0774a33b694580432c13e89cd59e2191a6846a0e72a3b837c36362cf849327e2 and /dev/null differ
diff --git a/data/database/877f4baac8155b4ba95ecaea70ae2ed5c8bc1e28c462a34f4c6462bd4751b935 b/data/database/0916affcc11263f6732688314ad5c45a2a9dd49f11829359957893fc2e921a50
similarity index 100%
rename from data/database/877f4baac8155b4ba95ecaea70ae2ed5c8bc1e28c462a34f4c6462bd4751b935
rename to data/database/0916affcc11263f6732688314ad5c45a2a9dd49f11829359957893fc2e921a50
diff --git a/data/database/0a1a525f84f245fb7f41c9d2cbadb7c91201ff14a1559dbcd19d9a05e33e8804 b/data/database/0a1a525f84f245fb7f41c9d2cbadb7c91201ff14a1559dbcd19d9a05e33e8804
deleted file mode 100644
index 5cd44b5994bd..000000000000
Binary files a/data/database/0a1a525f84f245fb7f41c9d2cbadb7c91201ff14a1559dbcd19d9a05e33e8804 and /dev/null differ
diff --git a/data/database/bb7c32c508a96405c9e4c1f3eb979f826145adc178fa6c6d57b721a3499d2316 b/data/database/0a61eddad259b2a1a4d7ea7bc8047d2f634bdcf0b035a5bd1636fd0950377b85
similarity index 52%
rename from data/database/bb7c32c508a96405c9e4c1f3eb979f826145adc178fa6c6d57b721a3499d2316
rename to data/database/0a61eddad259b2a1a4d7ea7bc8047d2f634bdcf0b035a5bd1636fd0950377b85
index 7d45d6bc58cf..21886f3af0c1 100644
Binary files a/data/database/bb7c32c508a96405c9e4c1f3eb979f826145adc178fa6c6d57b721a3499d2316 and b/data/database/0a61eddad259b2a1a4d7ea7bc8047d2f634bdcf0b035a5bd1636fd0950377b85 differ
diff --git a/data/database/90f83f1aeeda79d0d8fbcfbb76892026daca62e2f8ce72164453f9085dd86e5e b/data/database/0b48adbff571b55760d36fec2c8e19d9059d826fecd5f35f10366b00019cecdb
similarity index 100%
rename from data/database/90f83f1aeeda79d0d8fbcfbb76892026daca62e2f8ce72164453f9085dd86e5e
rename to data/database/0b48adbff571b55760d36fec2c8e19d9059d826fecd5f35f10366b00019cecdb
diff --git a/data/database/0ea91967ebcb5cfcb46623535b664fe78514be4b9afd6faba52e751ca633c8c9 b/data/database/0ea91967ebcb5cfcb46623535b664fe78514be4b9afd6faba52e751ca633c8c9
deleted file mode 100644
index 58feb3512b17..000000000000
Binary files a/data/database/0ea91967ebcb5cfcb46623535b664fe78514be4b9afd6faba52e751ca633c8c9 and /dev/null differ
diff --git a/data/database/24b959861198bfd51e4ce769235582c3fa50b48135e7aa7f2dc51b0344ba4486 b/data/database/0ee0cb7a30a46f4614963df6113b2a2599766b43ad409e143717eb93f5d78e3c
similarity index 100%
rename from data/database/24b959861198bfd51e4ce769235582c3fa50b48135e7aa7f2dc51b0344ba4486
rename to data/database/0ee0cb7a30a46f4614963df6113b2a2599766b43ad409e143717eb93f5d78e3c
diff --git a/data/database/f56d002c45d6abcc7d194213fe7d2814f4431e0f2cf5bb4f44c5365718087536 b/data/database/10a9285945a354ed48aefcf201ac68d660fa10cdb69fc8c09cdb67578c303b19
similarity index 93%
rename from data/database/f56d002c45d6abcc7d194213fe7d2814f4431e0f2cf5bb4f44c5365718087536
rename to data/database/10a9285945a354ed48aefcf201ac68d660fa10cdb69fc8c09cdb67578c303b19
index b111e704b3e6..6321376a4883 100644
Binary files a/data/database/f56d002c45d6abcc7d194213fe7d2814f4431e0f2cf5bb4f44c5365718087536 and b/data/database/10a9285945a354ed48aefcf201ac68d660fa10cdb69fc8c09cdb67578c303b19 differ
diff --git a/data/database/10ddc8c26b89fa1e003806c4d343174ebfbaa76f92ca36fab7ccf5b35649c568 b/data/database/10ddc8c26b89fa1e003806c4d343174ebfbaa76f92ca36fab7ccf5b35649c568
deleted file mode 100644
index de07af2e8cbb..000000000000
Binary files a/data/database/10ddc8c26b89fa1e003806c4d343174ebfbaa76f92ca36fab7ccf5b35649c568 and /dev/null differ
diff --git a/data/database/10e4bed52eb5fc09ef5e0985a34c3a89cb45b49ac39663659ad3c036a3d65618 b/data/database/10e4bed52eb5fc09ef5e0985a34c3a89cb45b49ac39663659ad3c036a3d65618
new file mode 100644
index 000000000000..57472ad7f80f
Binary files /dev/null and b/data/database/10e4bed52eb5fc09ef5e0985a34c3a89cb45b49ac39663659ad3c036a3d65618 differ
diff --git a/data/database/12303fef2ec83aa83a16d226afc4a37cd62309dac121bc404e963c2a310ffa34 b/data/database/12303fef2ec83aa83a16d226afc4a37cd62309dac121bc404e963c2a310ffa34
new file mode 100644
index 000000000000..e912fafc9d0a
Binary files /dev/null and b/data/database/12303fef2ec83aa83a16d226afc4a37cd62309dac121bc404e963c2a310ffa34 differ
diff --git a/data/database/0d39be36c6664e65c83d16e10eb1e498ea8adf00405c60fe221e97e6dd461d30 b/data/database/13047768323f18cbc0ebf7ffb224e042284dcd46c31134e0ed5c2e27e01714b6
similarity index 100%
rename from data/database/0d39be36c6664e65c83d16e10eb1e498ea8adf00405c60fe221e97e6dd461d30
rename to data/database/13047768323f18cbc0ebf7ffb224e042284dcd46c31134e0ed5c2e27e01714b6
diff --git a/data/database/30ba5a2020f8f4c19ec16aa290c6dcf000bfaf55e750c3bdaa785f24a0c4bdfb b/data/database/1313b1e94618dfe74e43e821c68f05297bb2276c4f6d96a92b05c2f2f198edda
similarity index 100%
rename from data/database/30ba5a2020f8f4c19ec16aa290c6dcf000bfaf55e750c3bdaa785f24a0c4bdfb
rename to data/database/1313b1e94618dfe74e43e821c68f05297bb2276c4f6d96a92b05c2f2f198edda
diff --git a/data/database/13374bcd3df93806cdcd77dff54b9e8ab39b3ee8f5503e76a0707eb52b0c1dce b/data/database/13374bcd3df93806cdcd77dff54b9e8ab39b3ee8f5503e76a0707eb52b0c1dce
new file mode 100644
index 000000000000..b0c4c4a7d0e1
Binary files /dev/null and b/data/database/13374bcd3df93806cdcd77dff54b9e8ab39b3ee8f5503e76a0707eb52b0c1dce differ
diff --git a/data/database/15d30e35bd374d33113a105ba607821b1ff7bb751908fda6f78cf0a3d9ab674e b/data/database/15d30e35bd374d33113a105ba607821b1ff7bb751908fda6f78cf0a3d9ab674e
deleted file mode 100644
index ef5a4f8200d4..000000000000
Binary files a/data/database/15d30e35bd374d33113a105ba607821b1ff7bb751908fda6f78cf0a3d9ab674e and /dev/null differ
diff --git a/data/database/16611e2a29e7c23ddce11b5f1b62aa0d257cd93a848979107e0e524af0340b0c b/data/database/16611e2a29e7c23ddce11b5f1b62aa0d257cd93a848979107e0e524af0340b0c
deleted file mode 100644
index 0f30785bd929..000000000000
Binary files a/data/database/16611e2a29e7c23ddce11b5f1b62aa0d257cd93a848979107e0e524af0340b0c and /dev/null differ
diff --git a/data/database/16962e8b9c2d13b33883785a8071a047a373ec7cb15cbb9c790dc2c068e3a26d b/data/database/16962e8b9c2d13b33883785a8071a047a373ec7cb15cbb9c790dc2c068e3a26d
deleted file mode 100644
index 6f0904e56238..000000000000
Binary files a/data/database/16962e8b9c2d13b33883785a8071a047a373ec7cb15cbb9c790dc2c068e3a26d and /dev/null differ
diff --git a/data/database/16ca57ee7744a52720060323eabb6ab9db59e3b589f5c8e946e9b9965143e2ec b/data/database/16ca57ee7744a52720060323eabb6ab9db59e3b589f5c8e946e9b9965143e2ec
deleted file mode 100644
index 939afc069760..000000000000
Binary files a/data/database/16ca57ee7744a52720060323eabb6ab9db59e3b589f5c8e946e9b9965143e2ec and /dev/null differ
diff --git a/data/database/19dc635587bd3d757aae7a31f1104038f4581927a37611e928b3bf7dd1fb9534 b/data/database/19dc635587bd3d757aae7a31f1104038f4581927a37611e928b3bf7dd1fb9534
new file mode 100644
index 000000000000..08eedacff1f1
Binary files /dev/null and b/data/database/19dc635587bd3d757aae7a31f1104038f4581927a37611e928b3bf7dd1fb9534 differ
diff --git a/data/database/19ec752ac09dc89517d89aa9d0c666e6709f6ce2ac491cd94d70420880ea4f07 b/data/database/19ec752ac09dc89517d89aa9d0c666e6709f6ce2ac491cd94d70420880ea4f07
deleted file mode 100644
index f06f728c6cb3..000000000000
Binary files a/data/database/19ec752ac09dc89517d89aa9d0c666e6709f6ce2ac491cd94d70420880ea4f07 and /dev/null differ
diff --git a/data/database/1a3379ce98a43d8a109e13f31d851eab3a36fd1d311edbcbe33077742217bed6 b/data/database/1a3379ce98a43d8a109e13f31d851eab3a36fd1d311edbcbe33077742217bed6
deleted file mode 100644
index 549eec94266e..000000000000
Binary files a/data/database/1a3379ce98a43d8a109e13f31d851eab3a36fd1d311edbcbe33077742217bed6 and /dev/null differ
diff --git a/data/database/0d3cf8295cffdfc71df679e20ae4ce6f92b984b435d54b5a496dac4b2bf2ec66 b/data/database/1a3d270f9bedba300686583a0606fa305380559f4998dce581cc1e02623caace
similarity index 100%
rename from data/database/0d3cf8295cffdfc71df679e20ae4ce6f92b984b435d54b5a496dac4b2bf2ec66
rename to data/database/1a3d270f9bedba300686583a0606fa305380559f4998dce581cc1e02623caace
diff --git a/data/database/1b0422959b5881cca93fabd751993672d943e66408d866004df23aa77706c798 b/data/database/1b0422959b5881cca93fabd751993672d943e66408d866004df23aa77706c798
deleted file mode 100644
index 12fa5522eee9..000000000000
Binary files a/data/database/1b0422959b5881cca93fabd751993672d943e66408d866004df23aa77706c798 and /dev/null differ
diff --git a/data/database/56e28b24b4b672053eee4cba5c0dc8eab013af0a9fb133c04fb5a3af58c4da92 b/data/database/1b99135f7912bff0c570246b753d473f7d95876dec245acf365d83fff326a88f
similarity index 100%
rename from data/database/56e28b24b4b672053eee4cba5c0dc8eab013af0a9fb133c04fb5a3af58c4da92
rename to data/database/1b99135f7912bff0c570246b753d473f7d95876dec245acf365d83fff326a88f
diff --git a/data/database/7169dc93de16a2a608c0cf054c3b33ada38e90ffbdd10ad5789e91ec7f69244e b/data/database/1db13b7da82f7db85cf678fc7139597a40505e0a3f6209a65c73d6fadb337697
similarity index 100%
rename from data/database/7169dc93de16a2a608c0cf054c3b33ada38e90ffbdd10ad5789e91ec7f69244e
rename to data/database/1db13b7da82f7db85cf678fc7139597a40505e0a3f6209a65c73d6fadb337697
diff --git a/data/database/d9f91828bf1144004b88df065df3014df5e2ae3d51e994f5565f4379f7a57c3a b/data/database/1dc526566875c2034f632405c72bdebd741fdb6fcf96f6cce4e20aa4abee47ca
similarity index 100%
rename from data/database/d9f91828bf1144004b88df065df3014df5e2ae3d51e994f5565f4379f7a57c3a
rename to data/database/1dc526566875c2034f632405c72bdebd741fdb6fcf96f6cce4e20aa4abee47ca
diff --git a/data/database/1e3c03ee34c50b1d2ac75f385d2aad16bb5110f165ee23260944c1c598799711 b/data/database/1e3c03ee34c50b1d2ac75f385d2aad16bb5110f165ee23260944c1c598799711
deleted file mode 100644
index 64c3812be2a5..000000000000
Binary files a/data/database/1e3c03ee34c50b1d2ac75f385d2aad16bb5110f165ee23260944c1c598799711 and /dev/null differ
diff --git a/data/database/1ed1769d3a13d0dc3fc9ed728a2ae8e841366cb7fe2eddcec2de195b8eef59e8 b/data/database/1ed1769d3a13d0dc3fc9ed728a2ae8e841366cb7fe2eddcec2de195b8eef59e8
deleted file mode 100644
index 1ea818519037..000000000000
Binary files a/data/database/1ed1769d3a13d0dc3fc9ed728a2ae8e841366cb7fe2eddcec2de195b8eef59e8 and /dev/null differ
diff --git a/data/database/1f2e3903321051f0127c20016eee261b1b65d2e8451d55f4321b21afd667e46d b/data/database/1f2e3903321051f0127c20016eee261b1b65d2e8451d55f4321b21afd667e46d
deleted file mode 100644
index e9b5fc081e88..000000000000
Binary files a/data/database/1f2e3903321051f0127c20016eee261b1b65d2e8451d55f4321b21afd667e46d and /dev/null differ
diff --git a/data/database/1f882f68c05c3a3d38acb709020e52c2acefce8136697b495b3c50690b996dce b/data/database/1f882f68c05c3a3d38acb709020e52c2acefce8136697b495b3c50690b996dce
deleted file mode 100644
index bcb026a16095..000000000000
Binary files a/data/database/1f882f68c05c3a3d38acb709020e52c2acefce8136697b495b3c50690b996dce and /dev/null differ
diff --git a/data/database/20f6f0f0ccf5df5e47a47258febf28ff9d1025cbee7094ba656d99a9fe7fd333 b/data/database/20f6f0f0ccf5df5e47a47258febf28ff9d1025cbee7094ba656d99a9fe7fd333
new file mode 100644
index 000000000000..9cbba4b40418
Binary files /dev/null and b/data/database/20f6f0f0ccf5df5e47a47258febf28ff9d1025cbee7094ba656d99a9fe7fd333 differ
diff --git a/data/database/8681ff97677eae0d2603d53bbb1b6e465ffa3032a1f8ec9a3452345472638ad2 b/data/database/2129fb24a20d1ef1cb9ece4b7a677bbb046ac510ec43d264b7d39d45dfa46cad
similarity index 100%
rename from data/database/8681ff97677eae0d2603d53bbb1b6e465ffa3032a1f8ec9a3452345472638ad2
rename to data/database/2129fb24a20d1ef1cb9ece4b7a677bbb046ac510ec43d264b7d39d45dfa46cad
diff --git a/data/database/22421488dd27978d6dc93e08ab3edbdf733996683ac0af55700c48162d8131c9 b/data/database/21694c115356a6f4b912d608fb9766cce1629ed8606463386ccb4af56c560a1c
similarity index 100%
rename from data/database/22421488dd27978d6dc93e08ab3edbdf733996683ac0af55700c48162d8131c9
rename to data/database/21694c115356a6f4b912d608fb9766cce1629ed8606463386ccb4af56c560a1c
diff --git a/data/database/1732027116a0e2ee340ab80fb00c3fe6419ab7c69ff85e7df15c9936b21ae3ce b/data/database/23bb4874a034bfc6d50511918555a70c0d84d620a5cd76b9698ae97014d8551b
similarity index 100%
rename from data/database/1732027116a0e2ee340ab80fb00c3fe6419ab7c69ff85e7df15c9936b21ae3ce
rename to data/database/23bb4874a034bfc6d50511918555a70c0d84d620a5cd76b9698ae97014d8551b
diff --git a/data/database/8d35026acb17749959d5c26621455fa0b2e6512f9feb60c903224f9f409c5535 b/data/database/24c6dc9e5eb59552f6ba23be40d5e662f40562277d40ec0d38a40d897f8b70fb
similarity index 100%
rename from data/database/8d35026acb17749959d5c26621455fa0b2e6512f9feb60c903224f9f409c5535
rename to data/database/24c6dc9e5eb59552f6ba23be40d5e662f40562277d40ec0d38a40d897f8b70fb
diff --git a/data/database/2620884aadedc03340e7e0cda81489e4a7a88afaf3045a0a2c63afa439a0baa9 b/data/database/2620884aadedc03340e7e0cda81489e4a7a88afaf3045a0a2c63afa439a0baa9
new file mode 100644
index 000000000000..f97f30c85e9c
Binary files /dev/null and b/data/database/2620884aadedc03340e7e0cda81489e4a7a88afaf3045a0a2c63afa439a0baa9 differ
diff --git a/data/database/789c8d1fd23dd9f5eb60218503815d305ad56f531b95bb2773c8bd79b86bb2b3 b/data/database/26749d8cef1f2dc01660ace5a6daafe8f697aebc996d48a55db9fa03b3aeb2ec
similarity index 100%
rename from data/database/789c8d1fd23dd9f5eb60218503815d305ad56f531b95bb2773c8bd79b86bb2b3
rename to data/database/26749d8cef1f2dc01660ace5a6daafe8f697aebc996d48a55db9fa03b3aeb2ec
diff --git a/data/database/200fcd5291377ce8136f7e149c58ca52d66e2b9b310eaaa0388aa403879051f4 b/data/database/26dc1be298d4efa8e49d3a2dc50e88be4e8ddd12dab9f9dbb8f36c0b22bdf4fb
similarity index 100%
rename from data/database/200fcd5291377ce8136f7e149c58ca52d66e2b9b310eaaa0388aa403879051f4
rename to data/database/26dc1be298d4efa8e49d3a2dc50e88be4e8ddd12dab9f9dbb8f36c0b22bdf4fb
diff --git a/data/database/b355d5a3e01daa32784cc9c3b19bc1913eab9d6db8e251bfc6e459d4d2742f0f b/data/database/2767b60504347302b381f26675a2d83c324e4011aaf2469026b7352d82604b0a
similarity index 78%
rename from data/database/b355d5a3e01daa32784cc9c3b19bc1913eab9d6db8e251bfc6e459d4d2742f0f
rename to data/database/2767b60504347302b381f26675a2d83c324e4011aaf2469026b7352d82604b0a
index 9f7048adf155..bee94e6f68a1 100644
Binary files a/data/database/b355d5a3e01daa32784cc9c3b19bc1913eab9d6db8e251bfc6e459d4d2742f0f and b/data/database/2767b60504347302b381f26675a2d83c324e4011aaf2469026b7352d82604b0a differ
diff --git a/data/database/d96cc62df0da173a3dcb7c9b4f51b8458fc8ef69499e6994e627c32cc02c6db2 b/data/database/2a4125639dd2854982eef216210f2fccb2114b2101db8aa7fcac219d0349162e
similarity index 100%
rename from data/database/d96cc62df0da173a3dcb7c9b4f51b8458fc8ef69499e6994e627c32cc02c6db2
rename to data/database/2a4125639dd2854982eef216210f2fccb2114b2101db8aa7fcac219d0349162e
diff --git a/data/database/2a43a8b07e78cc95db7c32ecff2a39d826c4385f84b0b1b9c25433430d19fc3e b/data/database/2a43a8b07e78cc95db7c32ecff2a39d826c4385f84b0b1b9c25433430d19fc3e
deleted file mode 100644
index a7f452983489..000000000000
Binary files a/data/database/2a43a8b07e78cc95db7c32ecff2a39d826c4385f84b0b1b9c25433430d19fc3e and /dev/null differ
diff --git a/data/database/a58322eb85749806327483fcf2e5119d94748279d265b09a8f6608590d4446d3 b/data/database/2ca07ade47a23f58ffe33252fe050d44921fe51aedb46b9e1d0840fd9e321a99
similarity index 100%
rename from data/database/a58322eb85749806327483fcf2e5119d94748279d265b09a8f6608590d4446d3
rename to data/database/2ca07ade47a23f58ffe33252fe050d44921fe51aedb46b9e1d0840fd9e321a99
diff --git a/data/database/2dfb3e6ba365c20fd17d0f35bc749423e05ea9ca867297706a64446d2e072b02 b/data/database/2dfb3e6ba365c20fd17d0f35bc749423e05ea9ca867297706a64446d2e072b02
deleted file mode 100644
index 0d4ac9612fd8..000000000000
Binary files a/data/database/2dfb3e6ba365c20fd17d0f35bc749423e05ea9ca867297706a64446d2e072b02 and /dev/null differ
diff --git a/data/database/6cdd19396c9ac9e65058b09638c3dcbe26db1366ce5723b82f7f156059740c1d b/data/database/30154917ac662ae1143927b43e6146b279463a47ea9bea38b42b87b1a523c4d1
similarity index 100%
rename from data/database/6cdd19396c9ac9e65058b09638c3dcbe26db1366ce5723b82f7f156059740c1d
rename to data/database/30154917ac662ae1143927b43e6146b279463a47ea9bea38b42b87b1a523c4d1
diff --git a/data/database/320ca8cd707ae119ca2a02c24c7be95c10e0790ba076c355086a5c837feb6fe6 b/data/database/320ca8cd707ae119ca2a02c24c7be95c10e0790ba076c355086a5c837feb6fe6
deleted file mode 100644
index f0daa91b4333..000000000000
Binary files a/data/database/320ca8cd707ae119ca2a02c24c7be95c10e0790ba076c355086a5c837feb6fe6 and /dev/null differ
diff --git a/data/database/071071b5fd8ae2538328d6c30242b959d54d74c13c6bb477aa82077c2b637b54 b/data/database/32285325848420b087baab12d5de1da42944b6dad68f83dd52a38df6a63bac13
similarity index 100%
rename from data/database/071071b5fd8ae2538328d6c30242b959d54d74c13c6bb477aa82077c2b637b54
rename to data/database/32285325848420b087baab12d5de1da42944b6dad68f83dd52a38df6a63bac13
diff --git a/data/database/5e3a51e5b137a2924e1e9784b45ea7307d0c71c0b85845d63cae144392f4f78c b/data/database/322ffdc64929e3d6f17dba281fce4f331a847dd354692b369a2b56a4c15520a4
similarity index 100%
rename from data/database/5e3a51e5b137a2924e1e9784b45ea7307d0c71c0b85845d63cae144392f4f78c
rename to data/database/322ffdc64929e3d6f17dba281fce4f331a847dd354692b369a2b56a4c15520a4
diff --git a/data/database/3313dd9868eaa9978fc72ab0a4595f100a985f13c91e3d76391ffbe3a9a22cb6 b/data/database/3313dd9868eaa9978fc72ab0a4595f100a985f13c91e3d76391ffbe3a9a22cb6
deleted file mode 100644
index 5f1421f43ac0..000000000000
Binary files a/data/database/3313dd9868eaa9978fc72ab0a4595f100a985f13c91e3d76391ffbe3a9a22cb6 and /dev/null differ
diff --git a/data/database/00c725b43931fc44cbe08d04c5743dda181e025632a714f2d0ae53283f07b6fc b/data/database/33f93c32ab09b46f1e5a3b0f14f4613f2b5bf98c112bf0ec6c2aea1d3d595dc7
similarity index 100%
rename from data/database/00c725b43931fc44cbe08d04c5743dda181e025632a714f2d0ae53283f07b6fc
rename to data/database/33f93c32ab09b46f1e5a3b0f14f4613f2b5bf98c112bf0ec6c2aea1d3d595dc7
diff --git a/data/database/342b3556b37607adf267a210e70476e75db06e52628b5be820083df1290a6cd0 b/data/database/342b3556b37607adf267a210e70476e75db06e52628b5be820083df1290a6cd0
deleted file mode 100644
index 2f03d4eb53b5..000000000000
Binary files a/data/database/342b3556b37607adf267a210e70476e75db06e52628b5be820083df1290a6cd0 and /dev/null differ
diff --git a/data/database/34760f56c0858ce784edcb12db42e403128891ec0860a381c8b5a097c6408b4d b/data/database/34760f56c0858ce784edcb12db42e403128891ec0860a381c8b5a097c6408b4d
deleted file mode 100644
index 810ccce91dd1..000000000000
Binary files a/data/database/34760f56c0858ce784edcb12db42e403128891ec0860a381c8b5a097c6408b4d and /dev/null differ
diff --git a/data/database/e3bd03f046073947ed37d8273b9fa1fef5f24e78c7004083dcaddd14b3538d61 b/data/database/347e652cf328c2159251fa49dbbd620277b7f13b4f503d373833d0cfcf992222
similarity index 100%
rename from data/database/e3bd03f046073947ed37d8273b9fa1fef5f24e78c7004083dcaddd14b3538d61
rename to data/database/347e652cf328c2159251fa49dbbd620277b7f13b4f503d373833d0cfcf992222
diff --git a/data/database/34fda226dce6576432d03933c2df014a15146ca18fdc64af9f091167814ea9a4 b/data/database/34fda226dce6576432d03933c2df014a15146ca18fdc64af9f091167814ea9a4
deleted file mode 100644
index 730b220fac2b..000000000000
Binary files a/data/database/34fda226dce6576432d03933c2df014a15146ca18fdc64af9f091167814ea9a4 and /dev/null differ
diff --git a/data/database/9fe93ba8790ab21691b80af72cb6f912148ade38ba5513274d1b8efa9b34b88a b/data/database/356764ac25b52636ebf63f6dd4bdfbfc9ba461804dd58f40e6348d5862a47378
similarity index 100%
rename from data/database/9fe93ba8790ab21691b80af72cb6f912148ade38ba5513274d1b8efa9b34b88a
rename to data/database/356764ac25b52636ebf63f6dd4bdfbfc9ba461804dd58f40e6348d5862a47378
diff --git a/data/database/cb519d9ab689dc3f18956d0bc03fa153f43ed3c7cd5f0e4ae6c637c13fdc95b6 b/data/database/369388565cd90cbb90d165e6ac594ce00d67d6c97c9ec6a52d32f7f3afdf7057
similarity index 100%
rename from data/database/cb519d9ab689dc3f18956d0bc03fa153f43ed3c7cd5f0e4ae6c637c13fdc95b6
rename to data/database/369388565cd90cbb90d165e6ac594ce00d67d6c97c9ec6a52d32f7f3afdf7057
diff --git a/data/database/e743ac873ca0e2bb859db06f4de2f8ac1bac2370dfdd6a52cd4479650914d1af b/data/database/36ab4ff37d8a4ef27b61020877c3f8cbb18fe17eff4c4e1d49b9e88ee98913bd
similarity index 100%
rename from data/database/e743ac873ca0e2bb859db06f4de2f8ac1bac2370dfdd6a52cd4479650914d1af
rename to data/database/36ab4ff37d8a4ef27b61020877c3f8cbb18fe17eff4c4e1d49b9e88ee98913bd
diff --git a/data/database/37dbcae97882562e3dd35c10aa6bbc6241f52df0da066f63557a1cf890fc62e0 b/data/database/37dbcae97882562e3dd35c10aa6bbc6241f52df0da066f63557a1cf890fc62e0
deleted file mode 100644
index a1704b5294ce..000000000000
Binary files a/data/database/37dbcae97882562e3dd35c10aa6bbc6241f52df0da066f63557a1cf890fc62e0 and /dev/null differ
diff --git a/data/database/26768739b0789c9916a487dce072bb09073ba630d5f284baba64a38a990f47c3 b/data/database/380abcabc7265a467c460c8edec638c8c23f9db45ad168024ccbc287dc2e1683
similarity index 100%
rename from data/database/26768739b0789c9916a487dce072bb09073ba630d5f284baba64a38a990f47c3
rename to data/database/380abcabc7265a467c460c8edec638c8c23f9db45ad168024ccbc287dc2e1683
diff --git a/data/database/7f439159ea13c43d345c7e291bb2b5b9abf66686218bb60f1b5ed1c1672e7341 b/data/database/38d3463f5299aa9e4cd5c55480cabbbb80aa7bc735debe2601cf0d06876c6a59
similarity index 100%
rename from data/database/7f439159ea13c43d345c7e291bb2b5b9abf66686218bb60f1b5ed1c1672e7341
rename to data/database/38d3463f5299aa9e4cd5c55480cabbbb80aa7bc735debe2601cf0d06876c6a59
diff --git a/data/database/3a1b7979d2297909b1d69575c77a8fac9d53001d9190b0b8ed17dceec97f2490 b/data/database/3a1b7979d2297909b1d69575c77a8fac9d53001d9190b0b8ed17dceec97f2490
deleted file mode 100644
index c547b2931e1f..000000000000
Binary files a/data/database/3a1b7979d2297909b1d69575c77a8fac9d53001d9190b0b8ed17dceec97f2490 and /dev/null differ
diff --git a/data/database/3a93cb73b0352fc9eabdfe910ea47cca219523d24e08f39a1d2f3f2dbd40bcd6 b/data/database/3a93cb73b0352fc9eabdfe910ea47cca219523d24e08f39a1d2f3f2dbd40bcd6
deleted file mode 100644
index bd1b2c2eb78e..000000000000
Binary files a/data/database/3a93cb73b0352fc9eabdfe910ea47cca219523d24e08f39a1d2f3f2dbd40bcd6 and /dev/null differ
diff --git a/data/database/3cc24d77217b0ab2624e759442d49dae743b9b9f2f0eba64cc97fca0e6abe004 b/data/database/3cc24d77217b0ab2624e759442d49dae743b9b9f2f0eba64cc97fca0e6abe004
new file mode 100644
index 000000000000..5af5115e5c06
Binary files /dev/null and b/data/database/3cc24d77217b0ab2624e759442d49dae743b9b9f2f0eba64cc97fca0e6abe004 differ
diff --git a/data/database/3d34e6b5f05408b3bf6daee964214a72173f0656d77940ce66399666a0d47889 b/data/database/3d34e6b5f05408b3bf6daee964214a72173f0656d77940ce66399666a0d47889
deleted file mode 100644
index 2f57e7d35c04..000000000000
Binary files a/data/database/3d34e6b5f05408b3bf6daee964214a72173f0656d77940ce66399666a0d47889 and /dev/null differ
diff --git a/data/database/e3c080aa5e6fd504637deaef1d6345bac57aad4fdc1dcc76088f0e80a5deac94 b/data/database/3f7308a98880841fe88a2cdb5afdd4ae274f715cc223422527598b1489158171
similarity index 100%
rename from data/database/e3c080aa5e6fd504637deaef1d6345bac57aad4fdc1dcc76088f0e80a5deac94
rename to data/database/3f7308a98880841fe88a2cdb5afdd4ae274f715cc223422527598b1489158171
diff --git a/data/database/3f8c8e926f93a3043b7aa9c5f79f4cae5791681d9d4538a3f68de7d4a13719df b/data/database/3f8c8e926f93a3043b7aa9c5f79f4cae5791681d9d4538a3f68de7d4a13719df
deleted file mode 100644
index 158f374f5d95..000000000000
Binary files a/data/database/3f8c8e926f93a3043b7aa9c5f79f4cae5791681d9d4538a3f68de7d4a13719df and /dev/null differ
diff --git a/data/database/96cfe9c4d0fd8c52249cc19cb19b27f8c10c27ef86c5666adb6d6890d21c94a5 b/data/database/403525671debee38c4d682df2c159d622c1127cb867c4dc270d5ca6069576bdb
similarity index 62%
rename from data/database/96cfe9c4d0fd8c52249cc19cb19b27f8c10c27ef86c5666adb6d6890d21c94a5
rename to data/database/403525671debee38c4d682df2c159d622c1127cb867c4dc270d5ca6069576bdb
index be4e2ffce805..00aef6d253d7 100644
Binary files a/data/database/96cfe9c4d0fd8c52249cc19cb19b27f8c10c27ef86c5666adb6d6890d21c94a5 and b/data/database/403525671debee38c4d682df2c159d622c1127cb867c4dc270d5ca6069576bdb differ
diff --git a/data/database/c06a8338715738b07b342d89c585a668001c1c922c42b5c12b915d7402048004 b/data/database/4184fc4e3335ca64a57298e997938b0cd590ea20789f65a10c26dd0112d423d0
similarity index 93%
rename from data/database/c06a8338715738b07b342d89c585a668001c1c922c42b5c12b915d7402048004
rename to data/database/4184fc4e3335ca64a57298e997938b0cd590ea20789f65a10c26dd0112d423d0
index 25b06707877c..85ad499bcbdd 100644
Binary files a/data/database/c06a8338715738b07b342d89c585a668001c1c922c42b5c12b915d7402048004 and b/data/database/4184fc4e3335ca64a57298e997938b0cd590ea20789f65a10c26dd0112d423d0 differ
diff --git a/data/database/57d485097e12a7a2d9cf9f550697c8ff14e4dea385a7293fc445de2c276506db b/data/database/41c5e862a19fb7252a09f275e77516b73e031bc65072783d18c680528ea12e30
similarity index 100%
rename from data/database/57d485097e12a7a2d9cf9f550697c8ff14e4dea385a7293fc445de2c276506db
rename to data/database/41c5e862a19fb7252a09f275e77516b73e031bc65072783d18c680528ea12e30
diff --git a/data/database/3433074086b271e3cfbedeb890a4178848ee1b3963718b3ad212d22a28ac0fff b/data/database/4294f37fe7de7d1f5dccd0ed555c82dfb679db875ca2f086b5245eeb5c1de494
similarity index 100%
rename from data/database/3433074086b271e3cfbedeb890a4178848ee1b3963718b3ad212d22a28ac0fff
rename to data/database/4294f37fe7de7d1f5dccd0ed555c82dfb679db875ca2f086b5245eeb5c1de494
diff --git a/data/database/3619be639ab593da656171033849b2f0c6434298ad0abe52accacf318b5d150f b/data/database/43aa062a660ea23adf0155d42a4718c0e4aa2da940ee5755f8dbac4ca4b242dd
similarity index 100%
rename from data/database/3619be639ab593da656171033849b2f0c6434298ad0abe52accacf318b5d150f
rename to data/database/43aa062a660ea23adf0155d42a4718c0e4aa2da940ee5755f8dbac4ca4b242dd
diff --git a/data/database/6e6ce6df0642cc649ddbbaf94fbc5e94c8a0a50896e400cc016c3d6584907c14 b/data/database/44bcd715e6820aca2da68087fe5265407a58864d745a1cca35ea4346cdcb0f44
similarity index 100%
rename from data/database/6e6ce6df0642cc649ddbbaf94fbc5e94c8a0a50896e400cc016c3d6584907c14
rename to data/database/44bcd715e6820aca2da68087fe5265407a58864d745a1cca35ea4346cdcb0f44
diff --git a/data/database/46b6a742a582995a1007ac96d164d0e9ebe7506f3b4dec29afd05b561e7aa3b9 b/data/database/46b6a742a582995a1007ac96d164d0e9ebe7506f3b4dec29afd05b561e7aa3b9
deleted file mode 100644
index f4da4ee4c23f..000000000000
Binary files a/data/database/46b6a742a582995a1007ac96d164d0e9ebe7506f3b4dec29afd05b561e7aa3b9 and /dev/null differ
diff --git a/data/database/4726b2b456c594a3f28f0c1d52dbcb37b7e0effea71aa9b8a2bf25b79d52faa8 b/data/database/4726b2b456c594a3f28f0c1d52dbcb37b7e0effea71aa9b8a2bf25b79d52faa8
deleted file mode 100644
index e098f11a9f1b..000000000000
Binary files a/data/database/4726b2b456c594a3f28f0c1d52dbcb37b7e0effea71aa9b8a2bf25b79d52faa8 and /dev/null differ
diff --git a/data/database/47a559fc3768aa00a686683acb1242c05d3585ceb3720d516346f85dc873452c b/data/database/47a559fc3768aa00a686683acb1242c05d3585ceb3720d516346f85dc873452c
deleted file mode 100644
index 670f9f031a94..000000000000
Binary files a/data/database/47a559fc3768aa00a686683acb1242c05d3585ceb3720d516346f85dc873452c and /dev/null differ
diff --git a/data/database/4b4fa170eca7f38b929d2d4206d2b87c5ec9ae2c3aa140c7b5c51eba661561ef b/data/database/4864c059c367d63cbaace8736c4a060bb25482b33cfa0c3fad882f596688c823
similarity index 100%
rename from data/database/4b4fa170eca7f38b929d2d4206d2b87c5ec9ae2c3aa140c7b5c51eba661561ef
rename to data/database/4864c059c367d63cbaace8736c4a060bb25482b33cfa0c3fad882f596688c823
diff --git a/data/database/487dcfab99073f346ffcab408337c55696b995ec0c2d548e86c246fced34e0f8 b/data/database/487dcfab99073f346ffcab408337c55696b995ec0c2d548e86c246fced34e0f8
deleted file mode 100644
index cf67f38c4c92..000000000000
Binary files a/data/database/487dcfab99073f346ffcab408337c55696b995ec0c2d548e86c246fced34e0f8 and /dev/null differ
diff --git a/data/database/4887856c2d2dabf0533e79c5238af66500479a9bb8fac7d3ed1d6e5bc88668ca b/data/database/4887856c2d2dabf0533e79c5238af66500479a9bb8fac7d3ed1d6e5bc88668ca
deleted file mode 100644
index 9c2f5a2f2af0..000000000000
Binary files a/data/database/4887856c2d2dabf0533e79c5238af66500479a9bb8fac7d3ed1d6e5bc88668ca and /dev/null differ
diff --git a/data/database/495e19c6f88b478424336d6f419ea277a30248a8b3e137d0588fdca5b7c25b84 b/data/database/495e19c6f88b478424336d6f419ea277a30248a8b3e137d0588fdca5b7c25b84
deleted file mode 100644
index aa9aec405e29..000000000000
Binary files a/data/database/495e19c6f88b478424336d6f419ea277a30248a8b3e137d0588fdca5b7c25b84 and /dev/null differ
diff --git a/data/database/4a2916bfcc490adced6c35c90c92d297d35d5ead9d76ba82226ccaef65ededb9 b/data/database/4a2916bfcc490adced6c35c90c92d297d35d5ead9d76ba82226ccaef65ededb9
new file mode 100644
index 000000000000..0baeb77b9d0e
Binary files /dev/null and b/data/database/4a2916bfcc490adced6c35c90c92d297d35d5ead9d76ba82226ccaef65ededb9 differ
diff --git a/data/database/b642c5567babdf3e450fe9c2fbb45f952ca7590c8b1f91da7ce3e55f53057091 b/data/database/4a484aa487d36da07c3fdc14b311e02e0cd108d13c36650dba084353d252e0b6
similarity index 85%
rename from data/database/b642c5567babdf3e450fe9c2fbb45f952ca7590c8b1f91da7ce3e55f53057091
rename to data/database/4a484aa487d36da07c3fdc14b311e02e0cd108d13c36650dba084353d252e0b6
index 20ea95642f1d..08a632a431da 100644
Binary files a/data/database/b642c5567babdf3e450fe9c2fbb45f952ca7590c8b1f91da7ce3e55f53057091 and b/data/database/4a484aa487d36da07c3fdc14b311e02e0cd108d13c36650dba084353d252e0b6 differ
diff --git a/data/database/edd669971f0fd1b70ceffff46f2c0e8dff3a997ef7fbcaabcdd39589972ecf96 b/data/database/4c6dc04c5dd7eefc1a669806395614b411aef858d8209e74d2a58f624f0f2b06
similarity index 99%
rename from data/database/edd669971f0fd1b70ceffff46f2c0e8dff3a997ef7fbcaabcdd39589972ecf96
rename to data/database/4c6dc04c5dd7eefc1a669806395614b411aef858d8209e74d2a58f624f0f2b06
index bf13ff94b2a0..945d94b98571 100644
Binary files a/data/database/edd669971f0fd1b70ceffff46f2c0e8dff3a997ef7fbcaabcdd39589972ecf96 and b/data/database/4c6dc04c5dd7eefc1a669806395614b411aef858d8209e74d2a58f624f0f2b06 differ
diff --git a/data/database/18c20b1da56e378fbe028b029d1670cda9ce07fedef7965f0fb3e6c53ed09f8a b/data/database/4f251273cdd4192472b61f9603187e54bf7c018e98b51feb3b8b632443fd9b50
similarity index 94%
rename from data/database/18c20b1da56e378fbe028b029d1670cda9ce07fedef7965f0fb3e6c53ed09f8a
rename to data/database/4f251273cdd4192472b61f9603187e54bf7c018e98b51feb3b8b632443fd9b50
index 5395d601194a..726da2ba7313 100644
Binary files a/data/database/18c20b1da56e378fbe028b029d1670cda9ce07fedef7965f0fb3e6c53ed09f8a and b/data/database/4f251273cdd4192472b61f9603187e54bf7c018e98b51feb3b8b632443fd9b50 differ
diff --git a/data/database/4f987a13eb0ed4b005f1d29fd18b897fedfb9f2975c9dfee3229c227185c4e1d b/data/database/4f987a13eb0ed4b005f1d29fd18b897fedfb9f2975c9dfee3229c227185c4e1d
deleted file mode 100644
index 70a4a0ece478..000000000000
Binary files a/data/database/4f987a13eb0ed4b005f1d29fd18b897fedfb9f2975c9dfee3229c227185c4e1d and /dev/null differ
diff --git a/data/database/d406a0754015fdaa90eb473821c00589c66c9a35445cdacb78f6c30738cb2e24 b/data/database/50add0b92e4d7b68b2b0ad50206dfcd72b4660250cf0ecfa5d8716198a99923b
similarity index 100%
rename from data/database/d406a0754015fdaa90eb473821c00589c66c9a35445cdacb78f6c30738cb2e24
rename to data/database/50add0b92e4d7b68b2b0ad50206dfcd72b4660250cf0ecfa5d8716198a99923b
diff --git a/data/database/513bc260244991bd4a73dd87e7666c66686bdda60da57ade4f2156f66349de41 b/data/database/513bc260244991bd4a73dd87e7666c66686bdda60da57ade4f2156f66349de41
deleted file mode 100644
index 52977625941b..000000000000
Binary files a/data/database/513bc260244991bd4a73dd87e7666c66686bdda60da57ade4f2156f66349de41 and /dev/null differ
diff --git a/data/database/51e0282b062a273ac7d3db8bcf155096ac41bffb9190270c9078c1ce94e9590a b/data/database/51e0282b062a273ac7d3db8bcf155096ac41bffb9190270c9078c1ce94e9590a
deleted file mode 100644
index 14f1aafe67cd..000000000000
Binary files a/data/database/51e0282b062a273ac7d3db8bcf155096ac41bffb9190270c9078c1ce94e9590a and /dev/null differ
diff --git a/data/database/5232e52b3118976acde5a92913184342c79fa3af16921e4405216eae986db0f2 b/data/database/5232e52b3118976acde5a92913184342c79fa3af16921e4405216eae986db0f2
deleted file mode 100644
index dd905142dccc..000000000000
Binary files a/data/database/5232e52b3118976acde5a92913184342c79fa3af16921e4405216eae986db0f2 and /dev/null differ
diff --git a/data/database/523be3cc9a8e6893f5244a0e96253f1b0ca14b505ce3e063d843c2846a0e6346 b/data/database/523be3cc9a8e6893f5244a0e96253f1b0ca14b505ce3e063d843c2846a0e6346
deleted file mode 100644
index 734c14c1feb9..000000000000
Binary files a/data/database/523be3cc9a8e6893f5244a0e96253f1b0ca14b505ce3e063d843c2846a0e6346 and /dev/null differ
diff --git a/data/database/52891c928f39b1d30942a2250264d19bd7ab5326ad7d3b6d47bc04fbd3c52e16 b/data/database/52891c928f39b1d30942a2250264d19bd7ab5326ad7d3b6d47bc04fbd3c52e16
deleted file mode 100644
index 37ea87e2ab24..000000000000
Binary files a/data/database/52891c928f39b1d30942a2250264d19bd7ab5326ad7d3b6d47bc04fbd3c52e16 and /dev/null differ
diff --git a/data/database/52972b774270bbac77ccf6b5b6b577f37e488359c3119126c76e0f15f59ef28b b/data/database/52972b774270bbac77ccf6b5b6b577f37e488359c3119126c76e0f15f59ef28b
deleted file mode 100644
index 1120ad387cfb..000000000000
Binary files a/data/database/52972b774270bbac77ccf6b5b6b577f37e488359c3119126c76e0f15f59ef28b and /dev/null differ
diff --git a/data/database/8624bef59f32f7926eba9408584519c763d95766adf319cbd5bb541dd3b60e18 b/data/database/53529a007bb81389e9b2153269e26ff6b1051bff19654f2f4a137e75517209cd
similarity index 100%
rename from data/database/8624bef59f32f7926eba9408584519c763d95766adf319cbd5bb541dd3b60e18
rename to data/database/53529a007bb81389e9b2153269e26ff6b1051bff19654f2f4a137e75517209cd
diff --git a/data/database/53b3cd9320a82f7b8d6c4bd50a30b4ccdb67e607dccabf366daac2d86cbf53c8 b/data/database/53b3cd9320a82f7b8d6c4bd50a30b4ccdb67e607dccabf366daac2d86cbf53c8
new file mode 100644
index 000000000000..207a44b3a4e4
Binary files /dev/null and b/data/database/53b3cd9320a82f7b8d6c4bd50a30b4ccdb67e607dccabf366daac2d86cbf53c8 differ
diff --git a/data/database/55e2a0a0fedca6b6d38fcd64ddfeded740ae32174b805ef3568e3ffef3de9cb5 b/data/database/55e2a0a0fedca6b6d38fcd64ddfeded740ae32174b805ef3568e3ffef3de9cb5
deleted file mode 100644
index f8a0b6c23ae3..000000000000
Binary files a/data/database/55e2a0a0fedca6b6d38fcd64ddfeded740ae32174b805ef3568e3ffef3de9cb5 and /dev/null differ
diff --git a/data/database/4d55699df1d4586cb74e4642d4c96eb8dc8c524353360ee19a6ecab981743912 b/data/database/5728b6aefecc888edb62baadc543273c04ecf1d2a6001c4a1d4cd8c0f2801e41
similarity index 100%
rename from data/database/4d55699df1d4586cb74e4642d4c96eb8dc8c524353360ee19a6ecab981743912
rename to data/database/5728b6aefecc888edb62baadc543273c04ecf1d2a6001c4a1d4cd8c0f2801e41
diff --git a/data/database/59a6189086115b5d5ae79792052ef75b38d1e5c0feda648a7bac69841a0fb858 b/data/database/59a6189086115b5d5ae79792052ef75b38d1e5c0feda648a7bac69841a0fb858
deleted file mode 100644
index e4a66782c40a..000000000000
Binary files a/data/database/59a6189086115b5d5ae79792052ef75b38d1e5c0feda648a7bac69841a0fb858 and /dev/null differ
diff --git a/data/database/fb4f92bb8089121b51135bb2c9adb5c1f0dd861e88ae009cbf2b8b6c2ecf4dcd b/data/database/5a227318dd483d613ae4d207ca7aa4b3cc1fda7ab13447249785cadbea75b897
similarity index 100%
rename from data/database/fb4f92bb8089121b51135bb2c9adb5c1f0dd861e88ae009cbf2b8b6c2ecf4dcd
rename to data/database/5a227318dd483d613ae4d207ca7aa4b3cc1fda7ab13447249785cadbea75b897
diff --git a/data/database/1b747bc33b59a3e975f175b0edf23607db5e1b55ab3a339834c6d1ad3dd0a73b b/data/database/5acc9f4d9fbba89e9dad21d427b5b7342617ae06f2200171370c86aa4c71bcb7
similarity index 100%
rename from data/database/1b747bc33b59a3e975f175b0edf23607db5e1b55ab3a339834c6d1ad3dd0a73b
rename to data/database/5acc9f4d9fbba89e9dad21d427b5b7342617ae06f2200171370c86aa4c71bcb7
diff --git a/data/database/867fe3f8efffdc4f47fbc876895023e8fe0bd440eeaa05a81fc7afe4610a7d58 b/data/database/5b1543690b144915f1cdae835f739ed099a43a4726db680c5b9ab00bf0d64d82
similarity index 96%
rename from data/database/867fe3f8efffdc4f47fbc876895023e8fe0bd440eeaa05a81fc7afe4610a7d58
rename to data/database/5b1543690b144915f1cdae835f739ed099a43a4726db680c5b9ab00bf0d64d82
index c547b2931e1f..507d7c1304f5 100644
Binary files a/data/database/867fe3f8efffdc4f47fbc876895023e8fe0bd440eeaa05a81fc7afe4610a7d58 and b/data/database/5b1543690b144915f1cdae835f739ed099a43a4726db680c5b9ab00bf0d64d82 differ
diff --git a/data/database/5be5bf9623e3c89648af1f1cd13bf2ecb9295a1d231fe89b228491ffc0bc3f78 b/data/database/5be5bf9623e3c89648af1f1cd13bf2ecb9295a1d231fe89b228491ffc0bc3f78
deleted file mode 100644
index 8791ace3630d..000000000000
Binary files a/data/database/5be5bf9623e3c89648af1f1cd13bf2ecb9295a1d231fe89b228491ffc0bc3f78 and /dev/null differ
diff --git a/data/database/5c2f2bb95897c85d7eaf772e0441740beeca127d0d2df3df04fd3b1b40d44c68 b/data/database/5c2f2bb95897c85d7eaf772e0441740beeca127d0d2df3df04fd3b1b40d44c68
deleted file mode 100644
index 4c120322fe56..000000000000
Binary files a/data/database/5c2f2bb95897c85d7eaf772e0441740beeca127d0d2df3df04fd3b1b40d44c68 and /dev/null differ
diff --git a/data/database/5c304b396a2905362f20ca778b26e1264f33f76f903e7ac2fdd53a1f2a8cb358 b/data/database/5c304b396a2905362f20ca778b26e1264f33f76f903e7ac2fdd53a1f2a8cb358
new file mode 100644
index 000000000000..0361c9bd4b43
Binary files /dev/null and b/data/database/5c304b396a2905362f20ca778b26e1264f33f76f903e7ac2fdd53a1f2a8cb358 differ
diff --git a/data/database/5cd14ca8480a75ac54420eb2ceba6a0755cde4d2331b66d28c3f5c2a9a2899c6 b/data/database/5cd14ca8480a75ac54420eb2ceba6a0755cde4d2331b66d28c3f5c2a9a2899c6
deleted file mode 100644
index 2cf69ff2a4f1..000000000000
Binary files a/data/database/5cd14ca8480a75ac54420eb2ceba6a0755cde4d2331b66d28c3f5c2a9a2899c6 and /dev/null differ
diff --git a/data/database/18ba8e17afd9dd359ab5630c9dd285923dd21516aa8fb63875644851349a812c b/data/database/5d9569838568198d18e61e3a470becd613101fb9f4685749b0ad6f0227748273
similarity index 100%
rename from data/database/18ba8e17afd9dd359ab5630c9dd285923dd21516aa8fb63875644851349a812c
rename to data/database/5d9569838568198d18e61e3a470becd613101fb9f4685749b0ad6f0227748273
diff --git a/data/database/39d99a8f2c211867247d2d1fea723802bbcc0daf9e0f3c484cc1b1662a43e102 b/data/database/5de04419d92bc0b573e891bd3a9e8e41aea074e56b3b1661cbe22b086444c414
similarity index 100%
rename from data/database/39d99a8f2c211867247d2d1fea723802bbcc0daf9e0f3c484cc1b1662a43e102
rename to data/database/5de04419d92bc0b573e891bd3a9e8e41aea074e56b3b1661cbe22b086444c414
diff --git a/data/database/5ecdbd63becc2685b21702566df4f84aae382f262ad07a1c2b78d1202196ba59 b/data/database/5ecdbd63becc2685b21702566df4f84aae382f262ad07a1c2b78d1202196ba59
deleted file mode 100644
index 173554343e90..000000000000
Binary files a/data/database/5ecdbd63becc2685b21702566df4f84aae382f262ad07a1c2b78d1202196ba59 and /dev/null differ
diff --git a/data/database/4bffeec961a41f6c4169d411e6400cfc3914b17876be0aea1be45dbcaf180bde b/data/database/5fc8b6d8b696067a998a6ca48384ac031145437e0618566e94b994504fae99ac
similarity index 100%
rename from data/database/4bffeec961a41f6c4169d411e6400cfc3914b17876be0aea1be45dbcaf180bde
rename to data/database/5fc8b6d8b696067a998a6ca48384ac031145437e0618566e94b994504fae99ac
diff --git a/data/database/616c1d549e7de96e42badc2b01868781bdda527e30f434dad443f94b2a05e4a3 b/data/database/616c1d549e7de96e42badc2b01868781bdda527e30f434dad443f94b2a05e4a3
deleted file mode 100644
index ac64e5345ae9..000000000000
Binary files a/data/database/616c1d549e7de96e42badc2b01868781bdda527e30f434dad443f94b2a05e4a3 and /dev/null differ
diff --git a/data/database/7f4d4a49ba5006293ef765774c1ab79afb83dfb3eb23aa61062a0e8152dadf4a b/data/database/6236eb9db072cfb5dc085d08f4aa9256e7bf240862ea0e3c85fa7d1b11a7202c
similarity index 84%
rename from data/database/7f4d4a49ba5006293ef765774c1ab79afb83dfb3eb23aa61062a0e8152dadf4a
rename to data/database/6236eb9db072cfb5dc085d08f4aa9256e7bf240862ea0e3c85fa7d1b11a7202c
index 3e3c224dfca4..61d31032f606 100644
Binary files a/data/database/7f4d4a49ba5006293ef765774c1ab79afb83dfb3eb23aa61062a0e8152dadf4a and b/data/database/6236eb9db072cfb5dc085d08f4aa9256e7bf240862ea0e3c85fa7d1b11a7202c differ
diff --git a/data/database/635406cc1841adc9ffb3b3a41315348b23572e71455d3eeac0d967e5d0586c84 b/data/database/635406cc1841adc9ffb3b3a41315348b23572e71455d3eeac0d967e5d0586c84
deleted file mode 100644
index 6aacff0c4913..000000000000
Binary files a/data/database/635406cc1841adc9ffb3b3a41315348b23572e71455d3eeac0d967e5d0586c84 and /dev/null differ
diff --git a/data/database/63809b2984cf19e6d9807fcd3a335e2d7630c0fff45dda21eb43f9bd84f58f8e b/data/database/63809b2984cf19e6d9807fcd3a335e2d7630c0fff45dda21eb43f9bd84f58f8e
deleted file mode 100644
index 56f7ff94c1e8..000000000000
Binary files a/data/database/63809b2984cf19e6d9807fcd3a335e2d7630c0fff45dda21eb43f9bd84f58f8e and /dev/null differ
diff --git a/data/database/adaa57240bd7fe2cc13504d090f106f8abae153d0be0a147fea253b76fea5cd2 b/data/database/6440e0e2820d7dc68e837148b4841c3182a8597a1cdda6d9161d2ca8df249540
similarity index 100%
rename from data/database/adaa57240bd7fe2cc13504d090f106f8abae153d0be0a147fea253b76fea5cd2
rename to data/database/6440e0e2820d7dc68e837148b4841c3182a8597a1cdda6d9161d2ca8df249540
diff --git a/data/database/64f8fe776192fe9cd5547e4d9b370dc113543cbfb048e4873430594609c50abd b/data/database/64f8fe776192fe9cd5547e4d9b370dc113543cbfb048e4873430594609c50abd
deleted file mode 100644
index de8751525856..000000000000
Binary files a/data/database/64f8fe776192fe9cd5547e4d9b370dc113543cbfb048e4873430594609c50abd and /dev/null differ
diff --git a/data/database/2c1cb4c6a522f5fd2114d42a9397a877d0694a20f2552e8fe188e0a4508e27af b/data/database/654ec4838a7ded0dd302d98bd3a459040a62d6702e8a413bfdd21bbcd588d8fd
similarity index 100%
rename from data/database/2c1cb4c6a522f5fd2114d42a9397a877d0694a20f2552e8fe188e0a4508e27af
rename to data/database/654ec4838a7ded0dd302d98bd3a459040a62d6702e8a413bfdd21bbcd588d8fd
diff --git a/data/database/bb1cf217d622a91a5bffa7fcf7f5729b91f72a34c9509a89ea0f67ae7da2f045 b/data/database/65dc6d70c095c2a4f88997e6acfe731ac23f5aaac7613978c88625cabbf03b82
similarity index 100%
rename from data/database/bb1cf217d622a91a5bffa7fcf7f5729b91f72a34c9509a89ea0f67ae7da2f045
rename to data/database/65dc6d70c095c2a4f88997e6acfe731ac23f5aaac7613978c88625cabbf03b82
diff --git a/data/database/673cbecdd0d6f4bfc2ca1aab01732d9d31f1f0025c2e536bf3327adbd2833679 b/data/database/673cbecdd0d6f4bfc2ca1aab01732d9d31f1f0025c2e536bf3327adbd2833679
deleted file mode 100644
index 7ae783e1180d..000000000000
Binary files a/data/database/673cbecdd0d6f4bfc2ca1aab01732d9d31f1f0025c2e536bf3327adbd2833679 and /dev/null differ
diff --git a/data/database/8a7514ac2e78a263a09be94ee5d86efd65530666a040068d9018d7592767c2c0 b/data/database/678589bdba76524fcd2d4810ef19b8a3fd2a7973e7fb55d9e6424a44c22619e6
similarity index 100%
rename from data/database/8a7514ac2e78a263a09be94ee5d86efd65530666a040068d9018d7592767c2c0
rename to data/database/678589bdba76524fcd2d4810ef19b8a3fd2a7973e7fb55d9e6424a44c22619e6
diff --git a/data/database/692dc673494ad67d2c1c53dd0856b952be9a9424e0c723c4153a7cb408b39798 b/data/database/692dc673494ad67d2c1c53dd0856b952be9a9424e0c723c4153a7cb408b39798
deleted file mode 100644
index 16e8d6df02f0..000000000000
Binary files a/data/database/692dc673494ad67d2c1c53dd0856b952be9a9424e0c723c4153a7cb408b39798 and /dev/null differ
diff --git a/data/database/6949182baf1fd348bd5b96ab65c2d2cfc817fc463c67251d458664a67abbb7ca b/data/database/6949182baf1fd348bd5b96ab65c2d2cfc817fc463c67251d458664a67abbb7ca
deleted file mode 100644
index 9667f396ea06..000000000000
Binary files a/data/database/6949182baf1fd348bd5b96ab65c2d2cfc817fc463c67251d458664a67abbb7ca and /dev/null differ
diff --git a/data/database/698ef628ee4a4f5503719dd446a418bc072937c6ed9db556ad2052a0e22d3223 b/data/database/69abbc2d699f79439743c57d2061155c8564bea973962e7593c436664e8521f3
similarity index 100%
rename from data/database/698ef628ee4a4f5503719dd446a418bc072937c6ed9db556ad2052a0e22d3223
rename to data/database/69abbc2d699f79439743c57d2061155c8564bea973962e7593c436664e8521f3
diff --git a/data/database/6b08f96bda27610dc435dd34c48c62541b0bb0a9ce9907281749cc9523a2842a b/data/database/6b08f96bda27610dc435dd34c48c62541b0bb0a9ce9907281749cc9523a2842a
deleted file mode 100644
index dc0df1d753b3..000000000000
Binary files a/data/database/6b08f96bda27610dc435dd34c48c62541b0bb0a9ce9907281749cc9523a2842a and /dev/null differ
diff --git a/data/database/6b6058fe97505bdc462cd1577e7985b4b8887975c13f80b2fbfa7c21cfb05a9b b/data/database/6b6058fe97505bdc462cd1577e7985b4b8887975c13f80b2fbfa7c21cfb05a9b
deleted file mode 100644
index 7af2194fd546..000000000000
Binary files a/data/database/6b6058fe97505bdc462cd1577e7985b4b8887975c13f80b2fbfa7c21cfb05a9b and /dev/null differ
diff --git a/data/database/c31bc17e41889d69af13976dee974ea2654ae96d6c200646387f9e43ef94ef7d b/data/database/6b7e5bd7309a00555f129ab323acf14044dc039490936cd88dc2561b91bbfd2c
similarity index 100%
rename from data/database/c31bc17e41889d69af13976dee974ea2654ae96d6c200646387f9e43ef94ef7d
rename to data/database/6b7e5bd7309a00555f129ab323acf14044dc039490936cd88dc2561b91bbfd2c
diff --git a/data/database/76afec1103ed1471eab496761c14f5a4c8feb817ccaa76da14b88e862f343bc1 b/data/database/6bd40d3d4cd2b802cc2a37db304db99b84c836671f55d02a765e6c53948499f8
similarity index 100%
rename from data/database/76afec1103ed1471eab496761c14f5a4c8feb817ccaa76da14b88e862f343bc1
rename to data/database/6bd40d3d4cd2b802cc2a37db304db99b84c836671f55d02a765e6c53948499f8
diff --git a/data/database/6e2893f047a64341a8aac726e8b0ab538304acb72a9bbfc247ef98fce0df7997 b/data/database/6e2893f047a64341a8aac726e8b0ab538304acb72a9bbfc247ef98fce0df7997
deleted file mode 100644
index 2f0244e79a61..000000000000
Binary files a/data/database/6e2893f047a64341a8aac726e8b0ab538304acb72a9bbfc247ef98fce0df7997 and /dev/null differ
diff --git a/data/database/6e743367ba0bdc50ab4614913866261b641f9c046a0898e2fcc0607380c02936 b/data/database/6e743367ba0bdc50ab4614913866261b641f9c046a0898e2fcc0607380c02936
deleted file mode 100644
index 95172219a06c..000000000000
Binary files a/data/database/6e743367ba0bdc50ab4614913866261b641f9c046a0898e2fcc0607380c02936 and /dev/null differ
diff --git a/data/database/6f2d9577dbe8f654cd42063cfccd80f3efb3e59a34422e5cb70b5ac7fa984034 b/data/database/6f2d9577dbe8f654cd42063cfccd80f3efb3e59a34422e5cb70b5ac7fa984034
deleted file mode 100644
index fc2c7a573bc2..000000000000
Binary files a/data/database/6f2d9577dbe8f654cd42063cfccd80f3efb3e59a34422e5cb70b5ac7fa984034 and /dev/null differ
diff --git a/data/database/6f91b13e360c0a74454196bf51c68f5344d22ca3d2539a755b03ab86305493c6 b/data/database/6f91b13e360c0a74454196bf51c68f5344d22ca3d2539a755b03ab86305493c6
deleted file mode 100644
index c372e9b3bb83..000000000000
Binary files a/data/database/6f91b13e360c0a74454196bf51c68f5344d22ca3d2539a755b03ab86305493c6 and /dev/null differ
diff --git a/data/database/71292532e42531597ce68e0444b56888528418d5eb5dc5ea2f2f5d6328537b6f b/data/database/71292532e42531597ce68e0444b56888528418d5eb5dc5ea2f2f5d6328537b6f
deleted file mode 100644
index 6e7fa40e4f67..000000000000
Binary files a/data/database/71292532e42531597ce68e0444b56888528418d5eb5dc5ea2f2f5d6328537b6f and /dev/null differ
diff --git a/data/database/14f9580ddc399e5d97ddd6da73d45c442564ca71b4f4ba9a98ee4b1640e5c80e b/data/database/7174b1c71b5c356c5b60480e68fede8b93992bba11f2c389a8a23d76cfd3e777
similarity index 100%
rename from data/database/14f9580ddc399e5d97ddd6da73d45c442564ca71b4f4ba9a98ee4b1640e5c80e
rename to data/database/7174b1c71b5c356c5b60480e68fede8b93992bba11f2c389a8a23d76cfd3e777
diff --git a/data/database/6194d20e298944d7ae1a357437f7269ec3b7fa009412733bbe6d291ca7f30e8c b/data/database/718f8f3a28a3de6f135f55bc84614407085a4b343f698331a3c99db792125812
similarity index 100%
rename from data/database/6194d20e298944d7ae1a357437f7269ec3b7fa009412733bbe6d291ca7f30e8c
rename to data/database/718f8f3a28a3de6f135f55bc84614407085a4b343f698331a3c99db792125812
diff --git a/data/database/fc077789f3b10ae90280252814289ec5804f535c4f5fdd55d8d0293c4e81524b b/data/database/71f475ef8d53ebeaf5ac0db560dccc47c944aae17321a9f00fc5bf0e9cd17da5
similarity index 100%
rename from data/database/fc077789f3b10ae90280252814289ec5804f535c4f5fdd55d8d0293c4e81524b
rename to data/database/71f475ef8d53ebeaf5ac0db560dccc47c944aae17321a9f00fc5bf0e9cd17da5
diff --git a/data/database/75ce0ce011d2a3eefafd9aeed5b9bb82658c3844116b3bb7089251d1d894d9f6 b/data/database/72962fe415cb37df2f25b22a1c5047f104005176e8ab24d9a57579e3aa61f011
similarity index 100%
rename from data/database/75ce0ce011d2a3eefafd9aeed5b9bb82658c3844116b3bb7089251d1d894d9f6
rename to data/database/72962fe415cb37df2f25b22a1c5047f104005176e8ab24d9a57579e3aa61f011
diff --git a/data/database/744db703ae50aa48edcebf6a772d154a47a8daff12bf54b65691aed244f21d2a b/data/database/744db703ae50aa48edcebf6a772d154a47a8daff12bf54b65691aed244f21d2a
deleted file mode 100644
index 8455f183990e..000000000000
Binary files a/data/database/744db703ae50aa48edcebf6a772d154a47a8daff12bf54b65691aed244f21d2a and /dev/null differ
diff --git a/data/database/538a9704b60f1f0e8d62c753543f2a414175c7538c1a466860fe4067d3194c97 b/data/database/74c028560b4d13db6718fec35a323dbfd2cfb739247d374cb5211c71140d55ba
similarity index 100%
rename from data/database/538a9704b60f1f0e8d62c753543f2a414175c7538c1a466860fe4067d3194c97
rename to data/database/74c028560b4d13db6718fec35a323dbfd2cfb739247d374cb5211c71140d55ba
diff --git a/data/database/7756a9f643fd6e77dc34d1037de7b19997ca8236a5fc33081e2c07152e1e6efb b/data/database/7756a9f643fd6e77dc34d1037de7b19997ca8236a5fc33081e2c07152e1e6efb
deleted file mode 100644
index dbdd4a98aa4c..000000000000
Binary files a/data/database/7756a9f643fd6e77dc34d1037de7b19997ca8236a5fc33081e2c07152e1e6efb and /dev/null differ
diff --git a/data/database/777913829eb0af8f02214e8555a8dac8d8ac49026f60907771844b9236a9aad2 b/data/database/777913829eb0af8f02214e8555a8dac8d8ac49026f60907771844b9236a9aad2
deleted file mode 100644
index 507771a2a887..000000000000
Binary files a/data/database/777913829eb0af8f02214e8555a8dac8d8ac49026f60907771844b9236a9aad2 and /dev/null differ
diff --git a/data/database/77e20c3a8a520046c0502d6129a8a95832810ef3fc03d15c461b5a4da2e5be7e b/data/database/77e20c3a8a520046c0502d6129a8a95832810ef3fc03d15c461b5a4da2e5be7e
deleted file mode 100644
index a6cecf7258a7..000000000000
Binary files a/data/database/77e20c3a8a520046c0502d6129a8a95832810ef3fc03d15c461b5a4da2e5be7e and /dev/null differ
diff --git a/data/database/9cd7224f52da931b75fa626538a9adca455da1cb283b9710f31b5895c11f63a1 b/data/database/77f92d3c307caa1090878a8890da123a6a307ba4cb8e6e23b736c222e4a1675b
similarity index 100%
rename from data/database/9cd7224f52da931b75fa626538a9adca455da1cb283b9710f31b5895c11f63a1
rename to data/database/77f92d3c307caa1090878a8890da123a6a307ba4cb8e6e23b736c222e4a1675b
diff --git a/data/database/77fb43f04b03892e70ec1dcaf67f26e997ecd90b92e6781a13b3cab81cb4f39a b/data/database/77fb43f04b03892e70ec1dcaf67f26e997ecd90b92e6781a13b3cab81cb4f39a
deleted file mode 100644
index 1eaea29db912..000000000000
Binary files a/data/database/77fb43f04b03892e70ec1dcaf67f26e997ecd90b92e6781a13b3cab81cb4f39a and /dev/null differ
diff --git a/data/database/16e12a5ce19567e79c7600b80886e587b1e7ea711ec70e734f324dbaf8c6bec1 b/data/database/79f9c6f4bf1ab489d52942198d3bbf2a324a5f8cd80e50fe39421f789630ea87
similarity index 100%
rename from data/database/16e12a5ce19567e79c7600b80886e587b1e7ea711ec70e734f324dbaf8c6bec1
rename to data/database/79f9c6f4bf1ab489d52942198d3bbf2a324a5f8cd80e50fe39421f789630ea87
diff --git a/data/database/1c27141935bc99c201ae686d27bf4b144f1589d70ea8c02117832c44e141f65b b/data/database/7a80c125f7ee7a7793964a58c6079d8d5be76f74958e96cc0d77f652a4cb0b90
similarity index 100%
rename from data/database/1c27141935bc99c201ae686d27bf4b144f1589d70ea8c02117832c44e141f65b
rename to data/database/7a80c125f7ee7a7793964a58c6079d8d5be76f74958e96cc0d77f652a4cb0b90
diff --git a/data/database/7f5bff6fd41fae929aa21a2e6e554c985eddf275aa755dce582073d89b23f90a b/data/database/7b468972e74fa96acee460cdf2685620c4a0fce7222e12ea29a6c63410dcbb1b
similarity index 100%
rename from data/database/7f5bff6fd41fae929aa21a2e6e554c985eddf275aa755dce582073d89b23f90a
rename to data/database/7b468972e74fa96acee460cdf2685620c4a0fce7222e12ea29a6c63410dcbb1b
diff --git a/data/database/b22b43268d72ad2145259a6391691855abe87dee1bc4b02c6f22b51f979e951c b/data/database/7bfeabbc72e0df58ff85eab40ceaf62b293373ce6a0d302a7a03f48650c284a8
similarity index 100%
rename from data/database/b22b43268d72ad2145259a6391691855abe87dee1bc4b02c6f22b51f979e951c
rename to data/database/7bfeabbc72e0df58ff85eab40ceaf62b293373ce6a0d302a7a03f48650c284a8
diff --git a/data/database/0d428e7dd56282c285e1755ff03be3ebca6cb8d0c8632ec27385367334178704 b/data/database/7c17f6f7c9f95a1dbf0ff9aa525a0460e9a514ad98d04b1d839d9846a1012540
similarity index 100%
rename from data/database/0d428e7dd56282c285e1755ff03be3ebca6cb8d0c8632ec27385367334178704
rename to data/database/7c17f6f7c9f95a1dbf0ff9aa525a0460e9a514ad98d04b1d839d9846a1012540
diff --git a/data/database/7cbbc126d4d6c06304676221447f15b147d0a479897b636b9cd7aff97301606e b/data/database/7cbbc126d4d6c06304676221447f15b147d0a479897b636b9cd7aff97301606e
deleted file mode 100644
index 6d3ae46e3016..000000000000
Binary files a/data/database/7cbbc126d4d6c06304676221447f15b147d0a479897b636b9cd7aff97301606e and /dev/null differ
diff --git a/data/database/8e56e90e6b84c089323c338fcb4a166b07e8af350bfa00c1bfa7bf7e937a6101 b/data/database/7d3446d9120267e23489ec573c869a342219cf756b0332a656285bdeb0efc208
similarity index 100%
rename from data/database/8e56e90e6b84c089323c338fcb4a166b07e8af350bfa00c1bfa7bf7e937a6101
rename to data/database/7d3446d9120267e23489ec573c869a342219cf756b0332a656285bdeb0efc208
diff --git a/data/database/7f238940020aa10daab86516faa6ca525a811db66b93593455d510385e7b70e0 b/data/database/7f238940020aa10daab86516faa6ca525a811db66b93593455d510385e7b70e0
new file mode 100644
index 000000000000..fb9240915ad9
Binary files /dev/null and b/data/database/7f238940020aa10daab86516faa6ca525a811db66b93593455d510385e7b70e0 differ
diff --git a/data/database/7fa6fb3fc6edf32cd0fa7edc1ac32f9ba0ad1590295764f90c5f11ea25798a28 b/data/database/7fa6fb3fc6edf32cd0fa7edc1ac32f9ba0ad1590295764f90c5f11ea25798a28
deleted file mode 100644
index a3baa3bb4789..000000000000
Binary files a/data/database/7fa6fb3fc6edf32cd0fa7edc1ac32f9ba0ad1590295764f90c5f11ea25798a28 and /dev/null differ
diff --git a/data/database/aeb7c856ba27a27aace738aff7ffe56deae19a6370cbeabb0ae9821df9dd789e b/data/database/8034d46eaa85957feb9b3c4c5ff6405dad1f5272aece8517f39c626428fd6086
similarity index 100%
rename from data/database/aeb7c856ba27a27aace738aff7ffe56deae19a6370cbeabb0ae9821df9dd789e
rename to data/database/8034d46eaa85957feb9b3c4c5ff6405dad1f5272aece8517f39c626428fd6086
diff --git a/data/database/e808f84337d13936807f64098305a9a997433b69b992d366ebba87b5f63c7417 b/data/database/804148a8e314a1402643dcfbc03725164fe387e2f0fb01f1664f330484ad183f
similarity index 100%
rename from data/database/e808f84337d13936807f64098305a9a997433b69b992d366ebba87b5f63c7417
rename to data/database/804148a8e314a1402643dcfbc03725164fe387e2f0fb01f1664f330484ad183f
diff --git a/data/database/83d228c41ef2556294605285abaeb02f98e96568177bb3ad27a558e5be914e80 b/data/database/808c9b1ff072ac93783e690f28711320e064137b9ce82cebd6f4c014d150fc1f
similarity index 100%
rename from data/database/83d228c41ef2556294605285abaeb02f98e96568177bb3ad27a558e5be914e80
rename to data/database/808c9b1ff072ac93783e690f28711320e064137b9ce82cebd6f4c014d150fc1f
diff --git a/data/database/817cceb9d5cdbfc01b3ba79cb9f6aa168ee488aafd13b7513bd9130788463c19 b/data/database/817cceb9d5cdbfc01b3ba79cb9f6aa168ee488aafd13b7513bd9130788463c19
deleted file mode 100644
index 52112c4165c6..000000000000
Binary files a/data/database/817cceb9d5cdbfc01b3ba79cb9f6aa168ee488aafd13b7513bd9130788463c19 and /dev/null differ
diff --git a/data/database/aff1e6b6b74aa45e268e3904ae3a5fbadd44905caf6dd69ea2fdf9ca8179685d b/data/database/827a52e011397bbd665babd8cb4539da792d410705d7b06828e82269754bb689
similarity index 99%
rename from data/database/aff1e6b6b74aa45e268e3904ae3a5fbadd44905caf6dd69ea2fdf9ca8179685d
rename to data/database/827a52e011397bbd665babd8cb4539da792d410705d7b06828e82269754bb689
index 8f9d9fc2f3b5..84814b64feac 100644
Binary files a/data/database/aff1e6b6b74aa45e268e3904ae3a5fbadd44905caf6dd69ea2fdf9ca8179685d and b/data/database/827a52e011397bbd665babd8cb4539da792d410705d7b06828e82269754bb689 differ
diff --git a/data/database/8346cce1a6fca08c64d11f97e791d571caf01332a865f1ec62a981a783046124 b/data/database/8346cce1a6fca08c64d11f97e791d571caf01332a865f1ec62a981a783046124
deleted file mode 100644
index 4c13fbb7d987..000000000000
Binary files a/data/database/8346cce1a6fca08c64d11f97e791d571caf01332a865f1ec62a981a783046124 and /dev/null differ
diff --git a/data/database/36bc44997dc76c1d5a5069a33427fdf018f2df1f45fbf39dcf48c5e22ab5d00c b/data/database/841d63c0a107fe558d32f442362cf0f8d6afe8e3e49a16595a5f7c0c54fabb18
similarity index 100%
rename from data/database/36bc44997dc76c1d5a5069a33427fdf018f2df1f45fbf39dcf48c5e22ab5d00c
rename to data/database/841d63c0a107fe558d32f442362cf0f8d6afe8e3e49a16595a5f7c0c54fabb18
diff --git a/data/database/2337e63f4a991586be6b7de91426ec3db1fc81d1d5d0c625115b4cc1245d612e b/data/database/8526ac2b7e0d0fc8d4862d7130c66385886de7af4b6af64d0856d89d92d2ae5e
similarity index 100%
rename from data/database/2337e63f4a991586be6b7de91426ec3db1fc81d1d5d0c625115b4cc1245d612e
rename to data/database/8526ac2b7e0d0fc8d4862d7130c66385886de7af4b6af64d0856d89d92d2ae5e
diff --git a/data/database/82a4be5882afb6d554d8fce631dce0bd0774329535aa59a04245bd93f3eaa415 b/data/database/871fc9d21b027641e3ff336ab62c6ed697d99aa9117b28f47e58f2981c23d40f
similarity index 100%
rename from data/database/82a4be5882afb6d554d8fce631dce0bd0774329535aa59a04245bd93f3eaa415
rename to data/database/871fc9d21b027641e3ff336ab62c6ed697d99aa9117b28f47e58f2981c23d40f
diff --git a/data/database/877fdeed1adb174620d54dc8b834c4e3b2b5f444f102259195ae045f535a494c b/data/database/877fdeed1adb174620d54dc8b834c4e3b2b5f444f102259195ae045f535a494c
deleted file mode 100644
index 6be710da4ae9..000000000000
Binary files a/data/database/877fdeed1adb174620d54dc8b834c4e3b2b5f444f102259195ae045f535a494c and /dev/null differ
diff --git a/data/database/8833e527da0ad52f79c20febe8fc825652b952510622a476422e3afefeff8311 b/data/database/8833e527da0ad52f79c20febe8fc825652b952510622a476422e3afefeff8311
deleted file mode 100644
index 670f9f031a94..000000000000
Binary files a/data/database/8833e527da0ad52f79c20febe8fc825652b952510622a476422e3afefeff8311 and /dev/null differ
diff --git a/data/database/884e57123963802b7197190f6559a6543d970dc7acef07a0b71d478a5e9c7b5a b/data/database/884e57123963802b7197190f6559a6543d970dc7acef07a0b71d478a5e9c7b5a
deleted file mode 100644
index 254b576e1ae2..000000000000
Binary files a/data/database/884e57123963802b7197190f6559a6543d970dc7acef07a0b71d478a5e9c7b5a and /dev/null differ
diff --git a/data/database/dbb87f7de4a711ebec12ef9545f5af9a757c7c9fd16e5ae202097c647c4f3abf b/data/database/88679985976c2895059ef7692664f335c3eba11134048be8f981094929fdbe68
similarity index 100%
rename from data/database/dbb87f7de4a711ebec12ef9545f5af9a757c7c9fd16e5ae202097c647c4f3abf
rename to data/database/88679985976c2895059ef7692664f335c3eba11134048be8f981094929fdbe68
diff --git a/data/database/89d4eac1d06616c8524e98eb633e1454e4a35283782a987715eab64bac1fb25a b/data/database/89d4eac1d06616c8524e98eb633e1454e4a35283782a987715eab64bac1fb25a
deleted file mode 100644
index 5040bd844d49..000000000000
Binary files a/data/database/89d4eac1d06616c8524e98eb633e1454e4a35283782a987715eab64bac1fb25a and /dev/null differ
diff --git a/data/database/cdce853bcf23b7a0222902b10d631e550a2cb4873ea92e0c85ad8ef578bdee68 b/data/database/8bb5314e8dd640c126e1adcbe4974614bb230fe18c36168e7d091d09ec74ad2b
similarity index 100%
rename from data/database/cdce853bcf23b7a0222902b10d631e550a2cb4873ea92e0c85ad8ef578bdee68
rename to data/database/8bb5314e8dd640c126e1adcbe4974614bb230fe18c36168e7d091d09ec74ad2b
diff --git a/data/database/8c1965cfaf1789b71309d2b2d5c6ef7614afc83eb740e02466753885206a1673 b/data/database/8c1965cfaf1789b71309d2b2d5c6ef7614afc83eb740e02466753885206a1673
deleted file mode 100644
index 93f9035683fd..000000000000
Binary files a/data/database/8c1965cfaf1789b71309d2b2d5c6ef7614afc83eb740e02466753885206a1673 and /dev/null differ
diff --git a/data/database/8c219684bffc8e40b0f0ddc14f755f21698a5c66df8b80c66be5fa480cdc5467 b/data/database/8c219684bffc8e40b0f0ddc14f755f21698a5c66df8b80c66be5fa480cdc5467
deleted file mode 100644
index 8bad0af7ee9c..000000000000
Binary files a/data/database/8c219684bffc8e40b0f0ddc14f755f21698a5c66df8b80c66be5fa480cdc5467 and /dev/null differ
diff --git a/data/database/8e035c9e7f425e6b58be49ec12955c7420458805fa71aa52c17a6d3f80cdc937 b/data/database/8e035c9e7f425e6b58be49ec12955c7420458805fa71aa52c17a6d3f80cdc937
deleted file mode 100644
index 1120ad387cfb..000000000000
Binary files a/data/database/8e035c9e7f425e6b58be49ec12955c7420458805fa71aa52c17a6d3f80cdc937 and /dev/null differ
diff --git a/data/database/8e23821fe75f8c5b7fab610876c61e38f3feb6679119c4625d1c06df28e711c5 b/data/database/8e23821fe75f8c5b7fab610876c61e38f3feb6679119c4625d1c06df28e711c5
deleted file mode 100644
index 74a516e1ba6c..000000000000
Binary files a/data/database/8e23821fe75f8c5b7fab610876c61e38f3feb6679119c4625d1c06df28e711c5 and /dev/null differ
diff --git a/data/database/d41ee9d550e25169a2a9869741dc12ccecd3d3d380afff90b09393161e0799b3 b/data/database/90082834436545317276b0de97c8d2fbfaea4501ddb8f4e5b78de9794eee105b
similarity index 99%
rename from data/database/d41ee9d550e25169a2a9869741dc12ccecd3d3d380afff90b09393161e0799b3
rename to data/database/90082834436545317276b0de97c8d2fbfaea4501ddb8f4e5b78de9794eee105b
index 735cc9fe97a9..70b2e64d59ef 100644
Binary files a/data/database/d41ee9d550e25169a2a9869741dc12ccecd3d3d380afff90b09393161e0799b3 and b/data/database/90082834436545317276b0de97c8d2fbfaea4501ddb8f4e5b78de9794eee105b differ
diff --git a/data/database/15afd0a1aed2395980c847944c34fb3d2700b3ae3ec9e466b347f831649d0088 b/data/database/9050dcdaf4dc6c2deff625e262a0ef7362057e1a836208a0e5b129970da1190f
similarity index 100%
rename from data/database/15afd0a1aed2395980c847944c34fb3d2700b3ae3ec9e466b347f831649d0088
rename to data/database/9050dcdaf4dc6c2deff625e262a0ef7362057e1a836208a0e5b129970da1190f
diff --git a/data/database/3c038e15d3832a50572e2e6f4e139854a5eeb82c492713e4928871cc9bb53e42 b/data/database/90958659c301acc839154bf7ccb66fb8537a4ab22bce253a250eade2f4c9bd89
similarity index 94%
rename from data/database/3c038e15d3832a50572e2e6f4e139854a5eeb82c492713e4928871cc9bb53e42
rename to data/database/90958659c301acc839154bf7ccb66fb8537a4ab22bce253a250eade2f4c9bd89
index 448cb91e2d73..aa7fadb0b8f3 100644
Binary files a/data/database/3c038e15d3832a50572e2e6f4e139854a5eeb82c492713e4928871cc9bb53e42 and b/data/database/90958659c301acc839154bf7ccb66fb8537a4ab22bce253a250eade2f4c9bd89 differ
diff --git a/data/database/ee1c55187d6bae929bd4b8c0a46e30d16e3732340342b89e486720cdeb392163 b/data/database/920f8eca27fd28c45f753c741ce930e147bf7e80bf2b92c089076b4f6d2fb8cc
similarity index 100%
rename from data/database/ee1c55187d6bae929bd4b8c0a46e30d16e3732340342b89e486720cdeb392163
rename to data/database/920f8eca27fd28c45f753c741ce930e147bf7e80bf2b92c089076b4f6d2fb8cc
diff --git a/data/database/96fe617ec28eb2ad84ec45141aa2578b5b75bf6c1d2d3ace93103b15b737319e b/data/database/96fe617ec28eb2ad84ec45141aa2578b5b75bf6c1d2d3ace93103b15b737319e
deleted file mode 100644
index 9ed2dd966f5c..000000000000
Binary files a/data/database/96fe617ec28eb2ad84ec45141aa2578b5b75bf6c1d2d3ace93103b15b737319e and /dev/null differ
diff --git a/data/database/62ebd1a765482bc94ff283e8a2e7e00a2861f89ac38d6910b53edddd82b30cd5 b/data/database/97e7d8baa4efa647eafac3b1f08573e11f88d8ae649c4bbc9e9bfe21a6eeb027
similarity index 93%
rename from data/database/62ebd1a765482bc94ff283e8a2e7e00a2861f89ac38d6910b53edddd82b30cd5
rename to data/database/97e7d8baa4efa647eafac3b1f08573e11f88d8ae649c4bbc9e9bfe21a6eeb027
index 3c3c9bfd4160..1ceb5e8ad347 100644
Binary files a/data/database/62ebd1a765482bc94ff283e8a2e7e00a2861f89ac38d6910b53edddd82b30cd5 and b/data/database/97e7d8baa4efa647eafac3b1f08573e11f88d8ae649c4bbc9e9bfe21a6eeb027 differ
diff --git a/data/database/97ee18283692de2e3f5e1aa9bb2e660aa65056c7fa4e84b4f23cf37bbe43c5f3 b/data/database/97ee18283692de2e3f5e1aa9bb2e660aa65056c7fa4e84b4f23cf37bbe43c5f3
deleted file mode 100644
index 68ac4b05216b..000000000000
Binary files a/data/database/97ee18283692de2e3f5e1aa9bb2e660aa65056c7fa4e84b4f23cf37bbe43c5f3 and /dev/null differ
diff --git a/data/database/9839962a24a86c01673e6d8da3e37d303189834c7c8c5d6fa29f15c1ac47c02e b/data/database/9839962a24a86c01673e6d8da3e37d303189834c7c8c5d6fa29f15c1ac47c02e
deleted file mode 100644
index 639eca85ff7a..000000000000
Binary files a/data/database/9839962a24a86c01673e6d8da3e37d303189834c7c8c5d6fa29f15c1ac47c02e and /dev/null differ
diff --git a/data/database/024b676a81f71c3193b8fa6367501ea4326ec3457035b259489159b19a44972b b/data/database/990b4a60802c8e0449e2fb7d3a8535624ad5cd4277c6dd34b5bd5dd1d0463396
similarity index 100%
rename from data/database/024b676a81f71c3193b8fa6367501ea4326ec3457035b259489159b19a44972b
rename to data/database/990b4a60802c8e0449e2fb7d3a8535624ad5cd4277c6dd34b5bd5dd1d0463396
diff --git a/data/database/9a0389ec8937dbdf2ee72d6a858c10b6b11462940ac3a12275d61bee9fa93415 b/data/database/9a0389ec8937dbdf2ee72d6a858c10b6b11462940ac3a12275d61bee9fa93415
deleted file mode 100644
index 51c54ca02a10..000000000000
Binary files a/data/database/9a0389ec8937dbdf2ee72d6a858c10b6b11462940ac3a12275d61bee9fa93415 and /dev/null differ
diff --git a/data/database/92c0c7f5648bd9b4aed319c3bfeab576f775895aaceb418a232e92c36324f414 b/data/database/9a1f9ff2e3bc42e8d97c884aaf63dba1d09291b3263f112e81beb57757a5f9bc
similarity index 100%
rename from data/database/92c0c7f5648bd9b4aed319c3bfeab576f775895aaceb418a232e92c36324f414
rename to data/database/9a1f9ff2e3bc42e8d97c884aaf63dba1d09291b3263f112e81beb57757a5f9bc
diff --git a/data/database/9a59e5f6fdd07555c55d4de4b5cc3e8f633cc63c446ae45c53e2e1308d168c7c b/data/database/9a59e5f6fdd07555c55d4de4b5cc3e8f633cc63c446ae45c53e2e1308d168c7c
deleted file mode 100644
index 9cd941f6c388..000000000000
Binary files a/data/database/9a59e5f6fdd07555c55d4de4b5cc3e8f633cc63c446ae45c53e2e1308d168c7c and /dev/null differ
diff --git a/data/database/9c445ce52f9c9b1d54b85c2a5c3ef5665499030d60bf5cbde9ede1a81a7804aa b/data/database/9c445ce52f9c9b1d54b85c2a5c3ef5665499030d60bf5cbde9ede1a81a7804aa
deleted file mode 100644
index 03a9ac6b02bd..000000000000
Binary files a/data/database/9c445ce52f9c9b1d54b85c2a5c3ef5665499030d60bf5cbde9ede1a81a7804aa and /dev/null differ
diff --git a/data/database/9c93003484e688ba08103456f8c2eebdf9d2c037d5c20414a2564b7cfb921e7f b/data/database/9c93003484e688ba08103456f8c2eebdf9d2c037d5c20414a2564b7cfb921e7f
deleted file mode 100644
index 68de5fdacbde..000000000000
Binary files a/data/database/9c93003484e688ba08103456f8c2eebdf9d2c037d5c20414a2564b7cfb921e7f and /dev/null differ
diff --git a/data/database/9dcf3dcb40c128ec52f61aaea23fb72c4419f439f07855fd148e7baa88d98360 b/data/database/9dcf3dcb40c128ec52f61aaea23fb72c4419f439f07855fd148e7baa88d98360
deleted file mode 100644
index 35c67440ace5..000000000000
Binary files a/data/database/9dcf3dcb40c128ec52f61aaea23fb72c4419f439f07855fd148e7baa88d98360 and /dev/null differ
diff --git a/data/database/9e103e9be3f57ba184de248860eea8e811b9544a34253a7a0499104f95000462 b/data/database/9e103e9be3f57ba184de248860eea8e811b9544a34253a7a0499104f95000462
deleted file mode 100644
index dc8add11383e..000000000000
Binary files a/data/database/9e103e9be3f57ba184de248860eea8e811b9544a34253a7a0499104f95000462 and /dev/null differ
diff --git a/data/database/9e63a9f2c901f599f8dff641ac04420c5b074b9f7250bdfdaccee0baf3902845 b/data/database/9e63a9f2c901f599f8dff641ac04420c5b074b9f7250bdfdaccee0baf3902845
deleted file mode 100644
index dc69b0742e9b..000000000000
Binary files a/data/database/9e63a9f2c901f599f8dff641ac04420c5b074b9f7250bdfdaccee0baf3902845 and /dev/null differ
diff --git a/data/database/a2580f6f8064ad70f4b5c69c8ea264fc50b3f512aa93757e21d25ee634e8e614 b/data/database/a2580f6f8064ad70f4b5c69c8ea264fc50b3f512aa93757e21d25ee634e8e614
deleted file mode 100644
index 411f33d33195..000000000000
Binary files a/data/database/a2580f6f8064ad70f4b5c69c8ea264fc50b3f512aa93757e21d25ee634e8e614 and /dev/null differ
diff --git a/data/database/3a4543ca6f5bc554a43c9c1bd7f3046aed2d3556040a5d6ccd22ab1e03433775 b/data/database/a33109772e93cffae9f23c2c49100044b980a788106bccb491cf472e095093b8
similarity index 99%
rename from data/database/3a4543ca6f5bc554a43c9c1bd7f3046aed2d3556040a5d6ccd22ab1e03433775
rename to data/database/a33109772e93cffae9f23c2c49100044b980a788106bccb491cf472e095093b8
index 16015c4aed90..01c752ccd7fc 100644
Binary files a/data/database/3a4543ca6f5bc554a43c9c1bd7f3046aed2d3556040a5d6ccd22ab1e03433775 and b/data/database/a33109772e93cffae9f23c2c49100044b980a788106bccb491cf472e095093b8 differ
diff --git a/data/database/042ea8421e7b3bfdd2d31b6aecaf2f8dce9bee9ccd32289cdfe5a225a4b6ccce b/data/database/a38a8e15bcf331ea7bba61d2d2adb4b5d586f6aa9e9b0d56694039e8b6b10039
similarity index 99%
rename from data/database/042ea8421e7b3bfdd2d31b6aecaf2f8dce9bee9ccd32289cdfe5a225a4b6ccce
rename to data/database/a38a8e15bcf331ea7bba61d2d2adb4b5d586f6aa9e9b0d56694039e8b6b10039
index b0e3f35ba26d..453c3ae8d921 100644
Binary files a/data/database/042ea8421e7b3bfdd2d31b6aecaf2f8dce9bee9ccd32289cdfe5a225a4b6ccce and b/data/database/a38a8e15bcf331ea7bba61d2d2adb4b5d586f6aa9e9b0d56694039e8b6b10039 differ
diff --git a/data/database/a4f3b5aefcdda815ff477626d6d65d55f5704027f1c28a540126d0852256c632 b/data/database/a4f3b5aefcdda815ff477626d6d65d55f5704027f1c28a540126d0852256c632
deleted file mode 100644
index 1ea340eaa58c..000000000000
Binary files a/data/database/a4f3b5aefcdda815ff477626d6d65d55f5704027f1c28a540126d0852256c632 and /dev/null differ
diff --git a/data/database/a4f5e10b4d0112366a42848e20aec36a1754e4ba7cfc392715bc35b2a428f0f0 b/data/database/a4f5e10b4d0112366a42848e20aec36a1754e4ba7cfc392715bc35b2a428f0f0
deleted file mode 100644
index f83b861e2fbf..000000000000
Binary files a/data/database/a4f5e10b4d0112366a42848e20aec36a1754e4ba7cfc392715bc35b2a428f0f0 and /dev/null differ
diff --git a/data/database/a532dbf12d6bc6c7b0d783a2c2cd6dbb86c3dcebf10375cd3bcd26dd8b3ba308 b/data/database/a532dbf12d6bc6c7b0d783a2c2cd6dbb86c3dcebf10375cd3bcd26dd8b3ba308
deleted file mode 100644
index e7583d608854..000000000000
Binary files a/data/database/a532dbf12d6bc6c7b0d783a2c2cd6dbb86c3dcebf10375cd3bcd26dd8b3ba308 and /dev/null differ
diff --git a/data/database/a5c94cf2467a5c075af48a35d2512362389f0fe13ae65f36963607d6c8ba0031 b/data/database/a5c94cf2467a5c075af48a35d2512362389f0fe13ae65f36963607d6c8ba0031
deleted file mode 100644
index 75f6b86f4031..000000000000
Binary files a/data/database/a5c94cf2467a5c075af48a35d2512362389f0fe13ae65f36963607d6c8ba0031 and /dev/null differ
diff --git a/data/database/a656c5f8670b61f23eef207df2d7536f3ff9433849b725645b95ef6cc72be601 b/data/database/a656c5f8670b61f23eef207df2d7536f3ff9433849b725645b95ef6cc72be601
new file mode 100644
index 000000000000..ff2ba252637e
Binary files /dev/null and b/data/database/a656c5f8670b61f23eef207df2d7536f3ff9433849b725645b95ef6cc72be601 differ
diff --git a/data/database/a6627f283edcf50ba14c23fcc0f094708db93713fdc0772e7e88170ebc3029bc b/data/database/a6627f283edcf50ba14c23fcc0f094708db93713fdc0772e7e88170ebc3029bc
deleted file mode 100644
index 11180a3b175c..000000000000
Binary files a/data/database/a6627f283edcf50ba14c23fcc0f094708db93713fdc0772e7e88170ebc3029bc and /dev/null differ
diff --git a/data/database/a7c29dcaba5aee39d9dd77273bfaed426d6bb647459634a92af6695ab1aa4fb0 b/data/database/a7c29dcaba5aee39d9dd77273bfaed426d6bb647459634a92af6695ab1aa4fb0
deleted file mode 100644
index a9f9e2fbc6f5..000000000000
Binary files a/data/database/a7c29dcaba5aee39d9dd77273bfaed426d6bb647459634a92af6695ab1aa4fb0 and /dev/null differ
diff --git a/data/database/a7d7f5751419893e297f6addf45b0505b48d1da49e939600e7a0c717eb5cd6a0 b/data/database/a7d7f5751419893e297f6addf45b0505b48d1da49e939600e7a0c717eb5cd6a0
deleted file mode 100644
index 6cd2740a5d2f..000000000000
Binary files a/data/database/a7d7f5751419893e297f6addf45b0505b48d1da49e939600e7a0c717eb5cd6a0 and /dev/null differ
diff --git a/data/database/da3bf4ef2cdb26d95c621f63034279a51a3184ce8916db1dc11a7ac4ccc36d93 b/data/database/a9b52cabba349c3f336d895f8273b0b8e9a6fab8a78368534aee586daf99d01c
similarity index 100%
rename from data/database/da3bf4ef2cdb26d95c621f63034279a51a3184ce8916db1dc11a7ac4ccc36d93
rename to data/database/a9b52cabba349c3f336d895f8273b0b8e9a6fab8a78368534aee586daf99d01c
diff --git a/data/database/a9d9e1e794f684e58b1aa3c99a908639ae635c22c20ac5f0c33a97b58c0a3547 b/data/database/a9d9e1e794f684e58b1aa3c99a908639ae635c22c20ac5f0c33a97b58c0a3547
deleted file mode 100644
index f6dffff3ecaa..000000000000
Binary files a/data/database/a9d9e1e794f684e58b1aa3c99a908639ae635c22c20ac5f0c33a97b58c0a3547 and /dev/null differ
diff --git a/data/database/0fc8e58d6814d7fd3b987ce3f230bd5a8282532851dad2f1b5dfa97c5d134789 b/data/database/ab306813626964d53a6c4d3d84157b86dd2027a0453c2b94290e1d2e77d8bbf3
similarity index 100%
rename from data/database/0fc8e58d6814d7fd3b987ce3f230bd5a8282532851dad2f1b5dfa97c5d134789
rename to data/database/ab306813626964d53a6c4d3d84157b86dd2027a0453c2b94290e1d2e77d8bbf3
diff --git a/data/database/ab5da16abe661a260c8876ba6caf963df9236436eabfa6f9267b3bcebd583f40 b/data/database/ab5da16abe661a260c8876ba6caf963df9236436eabfa6f9267b3bcebd583f40
deleted file mode 100644
index 25efaf320ab1..000000000000
Binary files a/data/database/ab5da16abe661a260c8876ba6caf963df9236436eabfa6f9267b3bcebd583f40 and /dev/null differ
diff --git a/data/database/ab909c2fed41e215d68d7e591f8752316f6e97c37e2d0f37ffa88ab0c09be44c b/data/database/ab909c2fed41e215d68d7e591f8752316f6e97c37e2d0f37ffa88ab0c09be44c
deleted file mode 100644
index ef5022cc326f..000000000000
Binary files a/data/database/ab909c2fed41e215d68d7e591f8752316f6e97c37e2d0f37ffa88ab0c09be44c and /dev/null differ
diff --git a/data/database/5b628c27beefa18e666dc08efd17dd63d6a2c26576bf02995991f38d0e142eb7 b/data/database/ab99e0fc47c030c0d30f4af2570e5e924e871e0aac9c815d27483a5c6706d8ae
similarity index 100%
rename from data/database/5b628c27beefa18e666dc08efd17dd63d6a2c26576bf02995991f38d0e142eb7
rename to data/database/ab99e0fc47c030c0d30f4af2570e5e924e871e0aac9c815d27483a5c6706d8ae
diff --git a/data/database/abdf4a9f385c5437390cff2e8345ed9e2ce2fc40b044619f3fc8c05950ff7b77 b/data/database/abdf4a9f385c5437390cff2e8345ed9e2ce2fc40b044619f3fc8c05950ff7b77
new file mode 100644
index 000000000000..66770dbdc1f2
Binary files /dev/null and b/data/database/abdf4a9f385c5437390cff2e8345ed9e2ce2fc40b044619f3fc8c05950ff7b77 differ
diff --git a/data/database/ac10737d4078b8c3fa6a767059df2107c7637a87500235111fa4f3c800dbadc0 b/data/database/ac10737d4078b8c3fa6a767059df2107c7637a87500235111fa4f3c800dbadc0
deleted file mode 100644
index 59385e76d976..000000000000
Binary files a/data/database/ac10737d4078b8c3fa6a767059df2107c7637a87500235111fa4f3c800dbadc0 and /dev/null differ
diff --git a/data/database/2767c0dc20b7588c76edca726441bfe1e6fd973d57d67ba8033479408b7feee0 b/data/database/ac71ec0fec6d7f46fe47c2750c39c8529122591f238a5faf7938a4a10aba8dd7
similarity index 100%
rename from data/database/2767c0dc20b7588c76edca726441bfe1e6fd973d57d67ba8033479408b7feee0
rename to data/database/ac71ec0fec6d7f46fe47c2750c39c8529122591f238a5faf7938a4a10aba8dd7
diff --git a/data/database/05daa0fef2d0a5a694d2e7f9af07044452b57a0528ce98fd0c217c83cb7da11c b/data/database/af53882b7cac6c8a823e0ff7331395a7f28c0d237c2b1e4319de0e9de63ce480
similarity index 100%
rename from data/database/05daa0fef2d0a5a694d2e7f9af07044452b57a0528ce98fd0c217c83cb7da11c
rename to data/database/af53882b7cac6c8a823e0ff7331395a7f28c0d237c2b1e4319de0e9de63ce480
diff --git a/data/database/fb9cda23c1ed84c590febde6f07120d6e0b9778ab9f5b90f1d7119a8f5409f5f b/data/database/afdf77971f4619772b99ed237e9871cbfed08c9b22f67060919ae03dc9131c0d
similarity index 100%
rename from data/database/fb9cda23c1ed84c590febde6f07120d6e0b9778ab9f5b90f1d7119a8f5409f5f
rename to data/database/afdf77971f4619772b99ed237e9871cbfed08c9b22f67060919ae03dc9131c0d
diff --git a/data/database/30ccdf79892198eb404e2f313449ab707a3ff59a07cca029d80f22d08b26d41b b/data/database/aff77c2d8ffd31c3570924f1cb7e5637a59b1e01243d9b2ef4f699ce8647bdbe
similarity index 100%
rename from data/database/30ccdf79892198eb404e2f313449ab707a3ff59a07cca029d80f22d08b26d41b
rename to data/database/aff77c2d8ffd31c3570924f1cb7e5637a59b1e01243d9b2ef4f699ce8647bdbe
diff --git a/data/database/4dbaf6fdf039d4ffe944ec6bd1f13ed3d8f93d83f5fa48bcd75f7303d271dc5a b/data/database/b045491106212d9b390a5e7420c42ec5842b00118162e749749645c6cc3aa4cf
similarity index 100%
rename from data/database/4dbaf6fdf039d4ffe944ec6bd1f13ed3d8f93d83f5fa48bcd75f7303d271dc5a
rename to data/database/b045491106212d9b390a5e7420c42ec5842b00118162e749749645c6cc3aa4cf
diff --git a/data/database/b0becd66e6a05660e6817129df2d9337a8b89cd64062eaa20917d16d762c7272 b/data/database/b0becd66e6a05660e6817129df2d9337a8b89cd64062eaa20917d16d762c7272
deleted file mode 100644
index e203f5aa13b5..000000000000
Binary files a/data/database/b0becd66e6a05660e6817129df2d9337a8b89cd64062eaa20917d16d762c7272 and /dev/null differ
diff --git a/data/database/16d456148b8020c6622deaea2fd347e148f0f1cae425635efe2655f757a76d67 b/data/database/b159528d6c5efc05d0767d28e846e3167c0ca17712dbad9394204f870ac6e921
similarity index 100%
rename from data/database/16d456148b8020c6622deaea2fd347e148f0f1cae425635efe2655f757a76d67
rename to data/database/b159528d6c5efc05d0767d28e846e3167c0ca17712dbad9394204f870ac6e921
diff --git a/data/database/b222eac4a8ee802d66fd65b6a89644cab461c4c31d815bb48051ee167893671a b/data/database/b222eac4a8ee802d66fd65b6a89644cab461c4c31d815bb48051ee167893671a
deleted file mode 100644
index 83e41aa8f6d5..000000000000
Binary files a/data/database/b222eac4a8ee802d66fd65b6a89644cab461c4c31d815bb48051ee167893671a and /dev/null differ
diff --git a/data/database/b2867354103fb1a4e05c68de0b26ee9a22e3437ff0f58152a7c18d7128cf2dfb b/data/database/b2867354103fb1a4e05c68de0b26ee9a22e3437ff0f58152a7c18d7128cf2dfb
deleted file mode 100644
index 33ed4703a66e..000000000000
Binary files a/data/database/b2867354103fb1a4e05c68de0b26ee9a22e3437ff0f58152a7c18d7128cf2dfb and /dev/null differ
diff --git a/data/database/ae79b369628a92682f8f67718bebbc953b957c7fd3ed80558f6ac9aa60fe5337 b/data/database/b348739a7b52c0dacbe37045da04fa4a8ea983acc9b84b28e21c5b72615ba22a
similarity index 66%
rename from data/database/ae79b369628a92682f8f67718bebbc953b957c7fd3ed80558f6ac9aa60fe5337
rename to data/database/b348739a7b52c0dacbe37045da04fa4a8ea983acc9b84b28e21c5b72615ba22a
index fa46ed79ff18..75ac93aefa27 100644
Binary files a/data/database/ae79b369628a92682f8f67718bebbc953b957c7fd3ed80558f6ac9aa60fe5337 and b/data/database/b348739a7b52c0dacbe37045da04fa4a8ea983acc9b84b28e21c5b72615ba22a differ
diff --git a/data/database/b3d603cb2744aea83abba5ef18bbd05c5612d3d6e78b1bad877d6ce33a5dd95b b/data/database/b3d603cb2744aea83abba5ef18bbd05c5612d3d6e78b1bad877d6ce33a5dd95b
deleted file mode 100644
index f2896809759b..000000000000
Binary files a/data/database/b3d603cb2744aea83abba5ef18bbd05c5612d3d6e78b1bad877d6ce33a5dd95b and /dev/null differ
diff --git a/data/database/b6534c913a4fb54b01987f7ea6615671d9530b73b5d66040cad15e11ad18c48f b/data/database/b6534c913a4fb54b01987f7ea6615671d9530b73b5d66040cad15e11ad18c48f
deleted file mode 100644
index 3f74872892ef..000000000000
Binary files a/data/database/b6534c913a4fb54b01987f7ea6615671d9530b73b5d66040cad15e11ad18c48f and /dev/null differ
diff --git a/data/database/b76b34ed2d666cbbf1ef3f974b5b10a4bb4ae89dada15eb200844f7504931482 b/data/database/b76b34ed2d666cbbf1ef3f974b5b10a4bb4ae89dada15eb200844f7504931482
deleted file mode 100644
index 670f9f031a94..000000000000
Binary files a/data/database/b76b34ed2d666cbbf1ef3f974b5b10a4bb4ae89dada15eb200844f7504931482 and /dev/null differ
diff --git a/data/database/b7d629b7e2cbe6d4f7bf1e0d41b51192dea0d2316d74e510318c53c51dec8551 b/data/database/b7d629b7e2cbe6d4f7bf1e0d41b51192dea0d2316d74e510318c53c51dec8551
deleted file mode 100644
index 4b44457c0079..000000000000
Binary files a/data/database/b7d629b7e2cbe6d4f7bf1e0d41b51192dea0d2316d74e510318c53c51dec8551 and /dev/null differ
diff --git a/data/database/b8184206813dc43f93e8c8b0e773a91523fb5468a7209428e10e5e231d3146dd b/data/database/b8184206813dc43f93e8c8b0e773a91523fb5468a7209428e10e5e231d3146dd
deleted file mode 100644
index bd1b2c2eb78e..000000000000
Binary files a/data/database/b8184206813dc43f93e8c8b0e773a91523fb5468a7209428e10e5e231d3146dd and /dev/null differ
diff --git a/data/database/b81e101efcdb7a6d824763e47e4bb178351743361de45f097195a62b8a4b87b7 b/data/database/b81e101efcdb7a6d824763e47e4bb178351743361de45f097195a62b8a4b87b7
deleted file mode 100644
index 937652b303e9..000000000000
Binary files a/data/database/b81e101efcdb7a6d824763e47e4bb178351743361de45f097195a62b8a4b87b7 and /dev/null differ
diff --git a/data/database/b8ae8fddbc3ec02fa10ff235a1971c8e77c96f0d42a24bda1ac59d5ac2b134f7 b/data/database/b8ae8fddbc3ec02fa10ff235a1971c8e77c96f0d42a24bda1ac59d5ac2b134f7
deleted file mode 100644
index e9c5e7d18283..000000000000
Binary files a/data/database/b8ae8fddbc3ec02fa10ff235a1971c8e77c96f0d42a24bda1ac59d5ac2b134f7 and /dev/null differ
diff --git a/data/database/10bca5283f289461a823c5252bf9915305e66d2c615d2ce0be52303b790dcdb9 b/data/database/bb27ea51fcb41de1d8cdd7d79757cca052a5fe59acefc6482b5305cd4393a724
similarity index 100%
rename from data/database/10bca5283f289461a823c5252bf9915305e66d2c615d2ce0be52303b790dcdb9
rename to data/database/bb27ea51fcb41de1d8cdd7d79757cca052a5fe59acefc6482b5305cd4393a724
diff --git a/data/database/c7933413bed7f5f22f19d7a0cc972ba1694916a7e91d7da9bc5ed304c6635222 b/data/database/bbc13fde8b5651cf139240fbf268c8a137c4330955a90ab80622a183e9e7f382
similarity index 100%
rename from data/database/c7933413bed7f5f22f19d7a0cc972ba1694916a7e91d7da9bc5ed304c6635222
rename to data/database/bbc13fde8b5651cf139240fbf268c8a137c4330955a90ab80622a183e9e7f382
diff --git a/data/database/bc724f701ded82d7d653e42514365812d945b83d3be9227994a69bab7398548a b/data/database/bc724f701ded82d7d653e42514365812d945b83d3be9227994a69bab7398548a
deleted file mode 100644
index 8d631c4b4421..000000000000
Binary files a/data/database/bc724f701ded82d7d653e42514365812d945b83d3be9227994a69bab7398548a and /dev/null differ
diff --git a/data/database/bca326520593bd6f634101a5c097b50a9f3a7a5a8e444ce284c5e5d0d0f39147 b/data/database/bca326520593bd6f634101a5c097b50a9f3a7a5a8e444ce284c5e5d0d0f39147
deleted file mode 100644
index 7673c6a31bd7..000000000000
Binary files a/data/database/bca326520593bd6f634101a5c097b50a9f3a7a5a8e444ce284c5e5d0d0f39147 and /dev/null differ
diff --git a/data/database/bd4d1de5df2bf55e01bf0d739ff4d04bc0f80fb5cf057a0d020b81e9a668ff8e b/data/database/bd4d1de5df2bf55e01bf0d739ff4d04bc0f80fb5cf057a0d020b81e9a668ff8e
deleted file mode 100644
index 8d631c4b4421..000000000000
Binary files a/data/database/bd4d1de5df2bf55e01bf0d739ff4d04bc0f80fb5cf057a0d020b81e9a668ff8e and /dev/null differ
diff --git a/data/database/50fc45b5075077a7f990b3b929af30f3dbed2ecda91a8e7e11444d89c304963b b/data/database/bd6484854db0e43117e8f5eb683397a64e9347a9b977339c1084fa8566823d9f
similarity index 100%
rename from data/database/50fc45b5075077a7f990b3b929af30f3dbed2ecda91a8e7e11444d89c304963b
rename to data/database/bd6484854db0e43117e8f5eb683397a64e9347a9b977339c1084fa8566823d9f
diff --git a/data/database/be16f898c27e85169f7926697ee605fa32f04758ca4500b0b78052624e5a5b5c b/data/database/be16f898c27e85169f7926697ee605fa32f04758ca4500b0b78052624e5a5b5c
deleted file mode 100644
index 14f1aafe67cd..000000000000
Binary files a/data/database/be16f898c27e85169f7926697ee605fa32f04758ca4500b0b78052624e5a5b5c and /dev/null differ
diff --git a/data/database/be57353616b16fa9fc6be8890212076714b523e7c433a6be72a929972335a1f0 b/data/database/be57353616b16fa9fc6be8890212076714b523e7c433a6be72a929972335a1f0
deleted file mode 100644
index 568b2d28c873..000000000000
Binary files a/data/database/be57353616b16fa9fc6be8890212076714b523e7c433a6be72a929972335a1f0 and /dev/null differ
diff --git a/data/database/be8d36f16b95d0cbbe7698d09baf9cda5e3e36dd7b57d7c586c2a383fc88a55f b/data/database/be8d36f16b95d0cbbe7698d09baf9cda5e3e36dd7b57d7c586c2a383fc88a55f
deleted file mode 100644
index ca3be1998e20..000000000000
Binary files a/data/database/be8d36f16b95d0cbbe7698d09baf9cda5e3e36dd7b57d7c586c2a383fc88a55f and /dev/null differ
diff --git a/data/database/9bb593a7112b7fab8c40d5f465b7f4d806fe721e933c4d759ead1bb4a36716e8 b/data/database/bf057de2c6d57c5f9070b91e96d1aa3e42e1b2e9ec3a7ada9d278f605b8db735
similarity index 100%
rename from data/database/9bb593a7112b7fab8c40d5f465b7f4d806fe721e933c4d759ead1bb4a36716e8
rename to data/database/bf057de2c6d57c5f9070b91e96d1aa3e42e1b2e9ec3a7ada9d278f605b8db735
diff --git a/data/database/bf702e3b651a6553811df4a21848799191fa70a67a2eb14d4a82d6d0a29b4ac8 b/data/database/bf702e3b651a6553811df4a21848799191fa70a67a2eb14d4a82d6d0a29b4ac8
deleted file mode 100644
index ea058d52ff88..000000000000
Binary files a/data/database/bf702e3b651a6553811df4a21848799191fa70a67a2eb14d4a82d6d0a29b4ac8 and /dev/null differ
diff --git a/data/database/c0b5321c16640af17e112b5094ecfb85ae2366cce184b60e868daae08d8acb91 b/data/database/c0b5321c16640af17e112b5094ecfb85ae2366cce184b60e868daae08d8acb91
deleted file mode 100644
index 68ac4b05216b..000000000000
Binary files a/data/database/c0b5321c16640af17e112b5094ecfb85ae2366cce184b60e868daae08d8acb91 and /dev/null differ
diff --git a/data/database/c1441e2ea22d652744d8357ca46de206875712853ac36dd8c31af1f18b8c15fc b/data/database/c1441e2ea22d652744d8357ca46de206875712853ac36dd8c31af1f18b8c15fc
deleted file mode 100644
index 8c3e36bb4ac6..000000000000
Binary files a/data/database/c1441e2ea22d652744d8357ca46de206875712853ac36dd8c31af1f18b8c15fc and /dev/null differ
diff --git a/data/database/c1cc835a43e4ef01073be40ab4e6ed23fde2de4d0fd87495bf1f64dae76335b7 b/data/database/c1cc835a43e4ef01073be40ab4e6ed23fde2de4d0fd87495bf1f64dae76335b7
deleted file mode 100644
index fc78e162a1db..000000000000
Binary files a/data/database/c1cc835a43e4ef01073be40ab4e6ed23fde2de4d0fd87495bf1f64dae76335b7 and /dev/null differ
diff --git a/data/database/c259e4eb9c93c50546758f634b63b067b24c313e02f937c841b55af73dbe1ae6 b/data/database/c259e4eb9c93c50546758f634b63b067b24c313e02f937c841b55af73dbe1ae6
deleted file mode 100644
index fc40df4af177..000000000000
Binary files a/data/database/c259e4eb9c93c50546758f634b63b067b24c313e02f937c841b55af73dbe1ae6 and /dev/null differ
diff --git a/data/database/4810a3aab3576b685c80cc4a1d365e6b839b967f4beb4f110d76aa019157979f b/data/database/c265d45a63830d02c18446dc5ccd093ca57bfffbf3946d8b91bede5653d6fcd3
similarity index 100%
rename from data/database/4810a3aab3576b685c80cc4a1d365e6b839b967f4beb4f110d76aa019157979f
rename to data/database/c265d45a63830d02c18446dc5ccd093ca57bfffbf3946d8b91bede5653d6fcd3
diff --git a/data/database/c26ca1f1512f74b7a5f650591e954c5ef8a1e0acc1b02f499a5727f47abdb804 b/data/database/c26ca1f1512f74b7a5f650591e954c5ef8a1e0acc1b02f499a5727f47abdb804
deleted file mode 100644
index 0fd5e833d6ff..000000000000
Binary files a/data/database/c26ca1f1512f74b7a5f650591e954c5ef8a1e0acc1b02f499a5727f47abdb804 and /dev/null differ
diff --git a/data/database/c6112d73479a078ce51ed67bd6d051bcc69011900b0151e9ce98dc4597ed45b5 b/data/database/c6112d73479a078ce51ed67bd6d051bcc69011900b0151e9ce98dc4597ed45b5
deleted file mode 100644
index 8cbc46055083..000000000000
Binary files a/data/database/c6112d73479a078ce51ed67bd6d051bcc69011900b0151e9ce98dc4597ed45b5 and /dev/null differ
diff --git a/data/database/c68abe4e3e00fb98509f9699fc510116269a78a93bb00b6265b6559c6376f1b0 b/data/database/c68abe4e3e00fb98509f9699fc510116269a78a93bb00b6265b6559c6376f1b0
deleted file mode 100644
index 1231f2d0eb6c..000000000000
Binary files a/data/database/c68abe4e3e00fb98509f9699fc510116269a78a93bb00b6265b6559c6376f1b0 and /dev/null differ
diff --git a/data/database/c6fbc030bf00587d7709369aa8b08e9f75e7b1ea70e420c29563cf8385c5f743 b/data/database/c6fbc030bf00587d7709369aa8b08e9f75e7b1ea70e420c29563cf8385c5f743
deleted file mode 100644
index 058ab69195ab..000000000000
Binary files a/data/database/c6fbc030bf00587d7709369aa8b08e9f75e7b1ea70e420c29563cf8385c5f743 and /dev/null differ
diff --git a/data/database/ba288b8676df88116e6c0e318b0fc9373818544e94bfaca930a7a159fd024c1d b/data/database/c75fca0d7d41f8a46739cf76da8b250ad82e1a4faa5f0c198ad047c01f41b0f1
similarity index 100%
rename from data/database/ba288b8676df88116e6c0e318b0fc9373818544e94bfaca930a7a159fd024c1d
rename to data/database/c75fca0d7d41f8a46739cf76da8b250ad82e1a4faa5f0c198ad047c01f41b0f1
diff --git a/data/database/9393dadf1299a24ccfbda5e52dccfd51327edf62a3f8439b95e7b4341c967277 b/data/database/c76246d951cf96a3e5c3ea3cc1286fe5bd96ded5500808091510d6196633d70c
similarity index 100%
rename from data/database/9393dadf1299a24ccfbda5e52dccfd51327edf62a3f8439b95e7b4341c967277
rename to data/database/c76246d951cf96a3e5c3ea3cc1286fe5bd96ded5500808091510d6196633d70c
diff --git a/data/database/c8cd418d910f0e939ffdb549287886c1fe60653b5e3be1eaf5ac0d312e3ef9ed b/data/database/c808bdac2a0b9880240474405b58911aff9cc762565f190dbecb0e1473deec4e
similarity index 100%
rename from data/database/c8cd418d910f0e939ffdb549287886c1fe60653b5e3be1eaf5ac0d312e3ef9ed
rename to data/database/c808bdac2a0b9880240474405b58911aff9cc762565f190dbecb0e1473deec4e
diff --git a/data/database/c8473a76ff71532eafc951c3f0debedbb1e1eac01ad95e35d4c3a06687c473c9 b/data/database/c8473a76ff71532eafc951c3f0debedbb1e1eac01ad95e35d4c3a06687c473c9
deleted file mode 100644
index 7b9805b5ef3b..000000000000
Binary files a/data/database/c8473a76ff71532eafc951c3f0debedbb1e1eac01ad95e35d4c3a06687c473c9 and /dev/null differ
diff --git a/data/database/047a063255ca19741df408277a881823ff5c54b35c44c14fc2e01bc96ae3a7a8 b/data/database/c8f8a2db2ef512148b6b28f621d39f5df5a67a5a70e68f68f9ae6fb40ac56f5b
similarity index 100%
rename from data/database/047a063255ca19741df408277a881823ff5c54b35c44c14fc2e01bc96ae3a7a8
rename to data/database/c8f8a2db2ef512148b6b28f621d39f5df5a67a5a70e68f68f9ae6fb40ac56f5b
diff --git a/data/database/c9d1f01f4a357f48e190e39fa6149a506865c9b3295bb403ab28df5f2f793899 b/data/database/c9d1f01f4a357f48e190e39fa6149a506865c9b3295bb403ab28df5f2f793899
deleted file mode 100644
index 25efaf320ab1..000000000000
Binary files a/data/database/c9d1f01f4a357f48e190e39fa6149a506865c9b3295bb403ab28df5f2f793899 and /dev/null differ
diff --git a/data/database/ca15ccc53a5b3d6fae1b02c228eb0b3a2cf6e5a635b4bd26d36e4b830dfb7935 b/data/database/ca15ccc53a5b3d6fae1b02c228eb0b3a2cf6e5a635b4bd26d36e4b830dfb7935
new file mode 100644
index 000000000000..267c75046ddc
Binary files /dev/null and b/data/database/ca15ccc53a5b3d6fae1b02c228eb0b3a2cf6e5a635b4bd26d36e4b830dfb7935 differ
diff --git a/data/database/ca414e4bf6b6743840bdd7b6a66fe758a2b839b489f6cb5a8dab6079433ff51f b/data/database/ca414e4bf6b6743840bdd7b6a66fe758a2b839b489f6cb5a8dab6079433ff51f
deleted file mode 100644
index a70f3e5903f0..000000000000
Binary files a/data/database/ca414e4bf6b6743840bdd7b6a66fe758a2b839b489f6cb5a8dab6079433ff51f and /dev/null differ
diff --git a/data/database/ca82fc781f38a6ab3cc8b88e91a1a0bb57fa16703353f8e193d9919abeb8f213 b/data/database/ca82fc781f38a6ab3cc8b88e91a1a0bb57fa16703353f8e193d9919abeb8f213
new file mode 100644
index 000000000000..4dd06397df1c
Binary files /dev/null and b/data/database/ca82fc781f38a6ab3cc8b88e91a1a0bb57fa16703353f8e193d9919abeb8f213 differ
diff --git a/data/database/ca9fd24dc39e18fbf2539c733788f67123709be86e2b91c8a84f97e486ee15aa b/data/database/ca9fd24dc39e18fbf2539c733788f67123709be86e2b91c8a84f97e486ee15aa
deleted file mode 100644
index 90bdcaa9639e..000000000000
Binary files a/data/database/ca9fd24dc39e18fbf2539c733788f67123709be86e2b91c8a84f97e486ee15aa and /dev/null differ
diff --git a/data/database/2d985b7270b8659051738cd002a4371177747ad10e8e67f0e126a886de2314a9 b/data/database/cb2ed1d9132399ab181cbcd55a81f123e3aa33099f7392866d61d358ebfe4f8c
similarity index 100%
rename from data/database/2d985b7270b8659051738cd002a4371177747ad10e8e67f0e126a886de2314a9
rename to data/database/cb2ed1d9132399ab181cbcd55a81f123e3aa33099f7392866d61d358ebfe4f8c
diff --git a/data/database/4aec5e28f827eeb6759121d890f2b9a8e2c9d3aca0e8a57e0d01bcea0fce76ae b/data/database/cb4845afb10aab2aee2973584b23244f45fa780976982a5c26c7d71fa8c01a14
similarity index 100%
rename from data/database/4aec5e28f827eeb6759121d890f2b9a8e2c9d3aca0e8a57e0d01bcea0fce76ae
rename to data/database/cb4845afb10aab2aee2973584b23244f45fa780976982a5c26c7d71fa8c01a14
diff --git a/data/database/cbbb432eff970c4e1b86f81f4dc34c8adf29e88b1250182813c35ac7ec4dedfb b/data/database/cbbb432eff970c4e1b86f81f4dc34c8adf29e88b1250182813c35ac7ec4dedfb
deleted file mode 100644
index 6f5dbbe16faa..000000000000
Binary files a/data/database/cbbb432eff970c4e1b86f81f4dc34c8adf29e88b1250182813c35ac7ec4dedfb and /dev/null differ
diff --git a/data/database/cc2d9bdf26879069fedeb32d491a4abba67302a43569a5bd761fe3eaa42c7073 b/data/database/cc2d9bdf26879069fedeb32d491a4abba67302a43569a5bd761fe3eaa42c7073
deleted file mode 100644
index a2868f1ae1f7..000000000000
Binary files a/data/database/cc2d9bdf26879069fedeb32d491a4abba67302a43569a5bd761fe3eaa42c7073 and /dev/null differ
diff --git a/data/database/cc302fa1d32cbadbe3faa9f6ac5fb6ac592cfcce6058e3f1a94ca07fcc193247 b/data/database/cc302fa1d32cbadbe3faa9f6ac5fb6ac592cfcce6058e3f1a94ca07fcc193247
deleted file mode 100644
index c547b2931e1f..000000000000
Binary files a/data/database/cc302fa1d32cbadbe3faa9f6ac5fb6ac592cfcce6058e3f1a94ca07fcc193247 and /dev/null differ
diff --git a/data/database/cc6222620d2d4f510a67768f6a9f370f04975f240b9ad04fabcf58095d8443df b/data/database/cc6222620d2d4f510a67768f6a9f370f04975f240b9ad04fabcf58095d8443df
deleted file mode 100644
index f142cc761915..000000000000
Binary files a/data/database/cc6222620d2d4f510a67768f6a9f370f04975f240b9ad04fabcf58095d8443df and /dev/null differ
diff --git a/data/database/cc6db2a111143ef82e528429c9520ec3271ee2ff70f35d67bb4b0b126623303c b/data/database/cc6db2a111143ef82e528429c9520ec3271ee2ff70f35d67bb4b0b126623303c
deleted file mode 100644
index 414c07f4b769..000000000000
Binary files a/data/database/cc6db2a111143ef82e528429c9520ec3271ee2ff70f35d67bb4b0b126623303c and /dev/null differ
diff --git a/data/database/f311fd934bfee4f38334274e0f0312051353294c6e010dd7cc0d55029e67e6ef b/data/database/ccaba012161642f7b50746e075650ee70cafd4a94afb1799ce4b3b66c70b3311
similarity index 100%
rename from data/database/f311fd934bfee4f38334274e0f0312051353294c6e010dd7cc0d55029e67e6ef
rename to data/database/ccaba012161642f7b50746e075650ee70cafd4a94afb1799ce4b3b66c70b3311
diff --git a/data/database/2bc00684d52642f55b9d73a02bff4607b2db6848b865cdd7550a16b828d94075 b/data/database/cd3ba5949c52b1a8f4645ac6ed86dcfca9d5e1aa1439d6088b62c413db22d5f7
similarity index 100%
rename from data/database/2bc00684d52642f55b9d73a02bff4607b2db6848b865cdd7550a16b828d94075
rename to data/database/cd3ba5949c52b1a8f4645ac6ed86dcfca9d5e1aa1439d6088b62c413db22d5f7
diff --git a/data/database/ce1dfcf0f769240c91d0bda6a56536aae86af5dd9d52693cf40f068c32100ec1 b/data/database/ce1dfcf0f769240c91d0bda6a56536aae86af5dd9d52693cf40f068c32100ec1
deleted file mode 100644
index e3b128a26980..000000000000
Binary files a/data/database/ce1dfcf0f769240c91d0bda6a56536aae86af5dd9d52693cf40f068c32100ec1 and /dev/null differ
diff --git a/data/database/ce5bd1cbf2cd1f7f8f91c2c0fdd12c9fe499c3763676e21a8d3f74b4b8fd0db4 b/data/database/ce5bd1cbf2cd1f7f8f91c2c0fdd12c9fe499c3763676e21a8d3f74b4b8fd0db4
deleted file mode 100644
index 893a69142ebc..000000000000
Binary files a/data/database/ce5bd1cbf2cd1f7f8f91c2c0fdd12c9fe499c3763676e21a8d3f74b4b8fd0db4 and /dev/null differ
diff --git a/data/database/ced261a36a5d5c2d958cdb7d449d04e3703711c476953b8cc317c213a5df2196 b/data/database/ced261a36a5d5c2d958cdb7d449d04e3703711c476953b8cc317c213a5df2196
deleted file mode 100644
index 417047c29815..000000000000
Binary files a/data/database/ced261a36a5d5c2d958cdb7d449d04e3703711c476953b8cc317c213a5df2196 and /dev/null differ
diff --git a/data/database/039ece76efd9835162fc2d8689088044ec5ce06797bed5ae71542bd2f1f5abbf b/data/database/cee3ab71ac3de0e4f84a18c763d4acc7bb977a54df97c47efab60fcbee4d4c3e
similarity index 100%
rename from data/database/039ece76efd9835162fc2d8689088044ec5ce06797bed5ae71542bd2f1f5abbf
rename to data/database/cee3ab71ac3de0e4f84a18c763d4acc7bb977a54df97c47efab60fcbee4d4c3e
diff --git a/data/database/b8c6ee68bdfb886657f82d76a741df9ba18715219508a567acc19c0d17c72b84 b/data/database/cf5e4c9d1e7120313412b1a8bd2aee9473a735621493edcfc832f9de0c18ebd6
similarity index 100%
rename from data/database/b8c6ee68bdfb886657f82d76a741df9ba18715219508a567acc19c0d17c72b84
rename to data/database/cf5e4c9d1e7120313412b1a8bd2aee9473a735621493edcfc832f9de0c18ebd6
diff --git a/data/database/cfd3fffa1fb8f31843973a0846832ee71e3b56e96dd850b67592336947eaf5db b/data/database/cfd3fffa1fb8f31843973a0846832ee71e3b56e96dd850b67592336947eaf5db
deleted file mode 100644
index 3045673b4007..000000000000
Binary files a/data/database/cfd3fffa1fb8f31843973a0846832ee71e3b56e96dd850b67592336947eaf5db and /dev/null differ
diff --git a/data/database/d0c9697104529a5072dfbe6e02c10f422e25b6c3dbbf88b5f2ecac2484a84e2f b/data/database/d0c9697104529a5072dfbe6e02c10f422e25b6c3dbbf88b5f2ecac2484a84e2f
deleted file mode 100644
index ddd5f7df81ea..000000000000
Binary files a/data/database/d0c9697104529a5072dfbe6e02c10f422e25b6c3dbbf88b5f2ecac2484a84e2f and /dev/null differ
diff --git a/data/database/2e01fbbd74412cad4111bd83ff287c497a7f5e2b9398901edfbde7d5b7e0ed1b b/data/database/d1081357767545ed57e09fe6b8f12e87d928c3f14e15f25dfe8c8f7fe1d7e17e
similarity index 100%
rename from data/database/2e01fbbd74412cad4111bd83ff287c497a7f5e2b9398901edfbde7d5b7e0ed1b
rename to data/database/d1081357767545ed57e09fe6b8f12e87d928c3f14e15f25dfe8c8f7fe1d7e17e
diff --git a/data/database/d10da6b021c40fa2e0890b09f9765be8b3c3b73900fdd7402e116124c352c58b b/data/database/d10da6b021c40fa2e0890b09f9765be8b3c3b73900fdd7402e116124c352c58b
deleted file mode 100644
index b29cfdbb6b4b..000000000000
Binary files a/data/database/d10da6b021c40fa2e0890b09f9765be8b3c3b73900fdd7402e116124c352c58b and /dev/null differ
diff --git a/data/database/6fb040022caa1c42f5f73ce9597c30a2fc396e65be1550ca2ff4b7f403dff3e1 b/data/database/d13df5ff96d821ea5d2f06262ed5364498fd404c00c421b6edc032f4c33dab75
similarity index 100%
rename from data/database/6fb040022caa1c42f5f73ce9597c30a2fc396e65be1550ca2ff4b7f403dff3e1
rename to data/database/d13df5ff96d821ea5d2f06262ed5364498fd404c00c421b6edc032f4c33dab75
diff --git a/data/database/63c7a8b804363c3126603b836161c1f9b92af8fd40689859dfc3b2b2316acf88 b/data/database/d152ef417854e83a015b362aa76530f03eec2a51915c91ea534fd162112a1196
similarity index 99%
rename from data/database/63c7a8b804363c3126603b836161c1f9b92af8fd40689859dfc3b2b2316acf88
rename to data/database/d152ef417854e83a015b362aa76530f03eec2a51915c91ea534fd162112a1196
index ff23a12d9872..cec416429d4e 100644
Binary files a/data/database/63c7a8b804363c3126603b836161c1f9b92af8fd40689859dfc3b2b2316acf88 and b/data/database/d152ef417854e83a015b362aa76530f03eec2a51915c91ea534fd162112a1196 differ
diff --git a/data/database/d214f7f906813b9af644b355a7be07796a3a4761742dbc59ee6570f9d837d495 b/data/database/d214f7f906813b9af644b355a7be07796a3a4761742dbc59ee6570f9d837d495
new file mode 100644
index 000000000000..935d4e5f6d69
Binary files /dev/null and b/data/database/d214f7f906813b9af644b355a7be07796a3a4761742dbc59ee6570f9d837d495 differ
diff --git a/data/database/8f72091d5d9cc60274d2ddcbd2d8e2bef6740d5db01b46b31dc570cb9730989f b/data/database/d35f2665f59d20ef2195fdbcc2283c0cb12139258b64e3eb58d690be4b731ba0
similarity index 100%
rename from data/database/8f72091d5d9cc60274d2ddcbd2d8e2bef6740d5db01b46b31dc570cb9730989f
rename to data/database/d35f2665f59d20ef2195fdbcc2283c0cb12139258b64e3eb58d690be4b731ba0
diff --git a/data/database/00ddc9940094f48d094c6e91f38170a83474e996f1f0e14ab2e487fd7c418809 b/data/database/d43e4138f8f43d3de4f902cceb52a3f8974ca32b65f325b7d123b1616510c05d
similarity index 100%
rename from data/database/00ddc9940094f48d094c6e91f38170a83474e996f1f0e14ab2e487fd7c418809
rename to data/database/d43e4138f8f43d3de4f902cceb52a3f8974ca32b65f325b7d123b1616510c05d
diff --git a/data/database/d48c7937c6adc9eb39ed6f706550f32fc015099982f55d4d5f3204222ea4dd57 b/data/database/d48c7937c6adc9eb39ed6f706550f32fc015099982f55d4d5f3204222ea4dd57
deleted file mode 100644
index b3c4234ddc61..000000000000
Binary files a/data/database/d48c7937c6adc9eb39ed6f706550f32fc015099982f55d4d5f3204222ea4dd57 and /dev/null differ
diff --git a/data/database/d4d006a8e18bc4ef1d6d686f7a2db7b72e245f9c1ed41dd2164a049099b12369 b/data/database/d4d006a8e18bc4ef1d6d686f7a2db7b72e245f9c1ed41dd2164a049099b12369
deleted file mode 100644
index 51c54ca02a10..000000000000
Binary files a/data/database/d4d006a8e18bc4ef1d6d686f7a2db7b72e245f9c1ed41dd2164a049099b12369 and /dev/null differ
diff --git a/data/database/d4ebdf74b07ec0877107391c7ec038d86e38e55d840654acfa3da1bbe7765e0e b/data/database/d4ebdf74b07ec0877107391c7ec038d86e38e55d840654acfa3da1bbe7765e0e
deleted file mode 100644
index 33ba11f52fc5..000000000000
Binary files a/data/database/d4ebdf74b07ec0877107391c7ec038d86e38e55d840654acfa3da1bbe7765e0e and /dev/null differ
diff --git a/data/database/d5c5a89757907e92dcc012c08a23fcda7e96d40e1c28f4b70b2218257f243679 b/data/database/d5c5a89757907e92dcc012c08a23fcda7e96d40e1c28f4b70b2218257f243679
deleted file mode 100644
index ca27064b4ba9..000000000000
Binary files a/data/database/d5c5a89757907e92dcc012c08a23fcda7e96d40e1c28f4b70b2218257f243679 and /dev/null differ
diff --git a/data/database/e340291839ad3c6b75780e356609efc564580db756d316d98fc3c362154e74a3 b/data/database/d5edc14897a9013920806769d7e1e46bfdfd3f9797ce796e5d2b219084de3e26
similarity index 96%
rename from data/database/e340291839ad3c6b75780e356609efc564580db756d316d98fc3c362154e74a3
rename to data/database/d5edc14897a9013920806769d7e1e46bfdfd3f9797ce796e5d2b219084de3e26
index c547b2931e1f..507d7c1304f5 100644
Binary files a/data/database/e340291839ad3c6b75780e356609efc564580db756d316d98fc3c362154e74a3 and b/data/database/d5edc14897a9013920806769d7e1e46bfdfd3f9797ce796e5d2b219084de3e26 differ
diff --git a/data/database/939c0d11ef192e85f93644793c102650f4aa8155da939113f14345839d9527b6 b/data/database/d7131e04f7abe1890300c2cb087e4f805d0c53eedc4f907ff1db0bf303d7a9a8
similarity index 100%
rename from data/database/939c0d11ef192e85f93644793c102650f4aa8155da939113f14345839d9527b6
rename to data/database/d7131e04f7abe1890300c2cb087e4f805d0c53eedc4f907ff1db0bf303d7a9a8
diff --git a/data/database/d776f7dde2d6448bc079ac34f32239b46106f6f29ef85a6d404233bf78260297 b/data/database/d776f7dde2d6448bc079ac34f32239b46106f6f29ef85a6d404233bf78260297
deleted file mode 100644
index 11eccb98a83d..000000000000
Binary files a/data/database/d776f7dde2d6448bc079ac34f32239b46106f6f29ef85a6d404233bf78260297 and /dev/null differ
diff --git a/data/database/1ebad39590cb2a34c65e0c067067f3929d8662e7bc95e7097622f15256321d48 b/data/database/d87b91a014d2e8e9d32470d52dc9f3b4263a9eb659eb032675027682346688b9
similarity index 100%
rename from data/database/1ebad39590cb2a34c65e0c067067f3929d8662e7bc95e7097622f15256321d48
rename to data/database/d87b91a014d2e8e9d32470d52dc9f3b4263a9eb659eb032675027682346688b9
diff --git a/data/database/8db1ca3ee966c9388fbd6e64b3d1b8072e60a68e19394239319ba20543cdcbb1 b/data/database/d88e05cf484a2fa55bd0888d856a037e8518dcfee3d69058270e4afdc5022952
similarity index 100%
rename from data/database/8db1ca3ee966c9388fbd6e64b3d1b8072e60a68e19394239319ba20543cdcbb1
rename to data/database/d88e05cf484a2fa55bd0888d856a037e8518dcfee3d69058270e4afdc5022952
diff --git a/data/database/b5bdafe0b69b1d9f7f8d874b5a146681b1092d2cbaeec0d48cbe010bd8df2725 b/data/database/d8fcc135e6fea152d25c095153b1568a1cd43775c6e3689a3e2e021bbb054d06
similarity index 100%
rename from data/database/b5bdafe0b69b1d9f7f8d874b5a146681b1092d2cbaeec0d48cbe010bd8df2725
rename to data/database/d8fcc135e6fea152d25c095153b1568a1cd43775c6e3689a3e2e021bbb054d06
diff --git a/data/database/d94b3ae93f6229f2d5176d049c985e5f4576b5159a279c7aafb3dab81af8409e b/data/database/d94b3ae93f6229f2d5176d049c985e5f4576b5159a279c7aafb3dab81af8409e
deleted file mode 100644
index 0f134ce6f319..000000000000
Binary files a/data/database/d94b3ae93f6229f2d5176d049c985e5f4576b5159a279c7aafb3dab81af8409e and /dev/null differ
diff --git a/data/database/d95e4c2bdc211bf30dfb11c0d4a2732f49144ab9c7c046f336e03732ac5d3b7d b/data/database/d95e4c2bdc211bf30dfb11c0d4a2732f49144ab9c7c046f336e03732ac5d3b7d
deleted file mode 100644
index 9f92af8b6d51..000000000000
Binary files a/data/database/d95e4c2bdc211bf30dfb11c0d4a2732f49144ab9c7c046f336e03732ac5d3b7d and /dev/null differ
diff --git a/data/database/d9bef8ce7c9facdc345ef980ea8f4ac745a8d64ec0a465c8c59c2d1e0a7750cb b/data/database/d9bef8ce7c9facdc345ef980ea8f4ac745a8d64ec0a465c8c59c2d1e0a7750cb
deleted file mode 100644
index 6c6934696d7c..000000000000
Binary files a/data/database/d9bef8ce7c9facdc345ef980ea8f4ac745a8d64ec0a465c8c59c2d1e0a7750cb and /dev/null differ
diff --git a/data/database/2e826746102fb56273dffa3c00be10469151117f1b82729803fda81b777f135d b/data/database/d9fd79b999891b381969dbed06af21e6431e5643898672700d1dd765b1c6fa9c
similarity index 100%
rename from data/database/2e826746102fb56273dffa3c00be10469151117f1b82729803fda81b777f135d
rename to data/database/d9fd79b999891b381969dbed06af21e6431e5643898672700d1dd765b1c6fa9c
diff --git a/data/database/db11a4e8bad8bd8d1c95d4053df8de26e45d6e5f8638df5b616e6b92de7ab9a1 b/data/database/db11a4e8bad8bd8d1c95d4053df8de26e45d6e5f8638df5b616e6b92de7ab9a1
deleted file mode 100644
index 9e38863b4ea6..000000000000
Binary files a/data/database/db11a4e8bad8bd8d1c95d4053df8de26e45d6e5f8638df5b616e6b92de7ab9a1 and /dev/null differ
diff --git a/data/database/db9ec410faf74859b4cd6b6dcc78343d9b7055084e01d6ad2a815b0b92f0a873 b/data/database/db9ec410faf74859b4cd6b6dcc78343d9b7055084e01d6ad2a815b0b92f0a873
deleted file mode 100644
index 14f1aafe67cd..000000000000
Binary files a/data/database/db9ec410faf74859b4cd6b6dcc78343d9b7055084e01d6ad2a815b0b92f0a873 and /dev/null differ
diff --git a/data/database/dbcb4803a0d0979a4cea19cd2fc1d64c580d5ba4c58ba6f4730a56e068f1fe73 b/data/database/dbcb4803a0d0979a4cea19cd2fc1d64c580d5ba4c58ba6f4730a56e068f1fe73
deleted file mode 100644
index 8d002ce6c1c2..000000000000
Binary files a/data/database/dbcb4803a0d0979a4cea19cd2fc1d64c580d5ba4c58ba6f4730a56e068f1fe73 and /dev/null differ
diff --git a/data/database/d6acf31a499553afaacd822fd0dc59f560fecf795c8e38105a7e9bdbafdcb9d8 b/data/database/dc76efb8b459da129d2f1ee5108b900e259a009ca0d016a70024c88ed8c9ce67
similarity index 100%
rename from data/database/d6acf31a499553afaacd822fd0dc59f560fecf795c8e38105a7e9bdbafdcb9d8
rename to data/database/dc76efb8b459da129d2f1ee5108b900e259a009ca0d016a70024c88ed8c9ce67
diff --git a/data/database/ddc0f3a8a56d0f65bc7e2e8710c351f83a62df029974e8debdeb2ee0caf53c4c b/data/database/dc7a21bede135d3042e3b6b8130aa29b41939e4bb5ca00d8799dc1e75939d2b6
similarity index 100%
rename from data/database/ddc0f3a8a56d0f65bc7e2e8710c351f83a62df029974e8debdeb2ee0caf53c4c
rename to data/database/dc7a21bede135d3042e3b6b8130aa29b41939e4bb5ca00d8799dc1e75939d2b6
diff --git a/data/database/dc7efc374ed54876815647c07d51cf6521022a5b2fbe6f64e8b1ec5b41c0a2ab b/data/database/dc7efc374ed54876815647c07d51cf6521022a5b2fbe6f64e8b1ec5b41c0a2ab
deleted file mode 100644
index d1b5d7afd10d..000000000000
Binary files a/data/database/dc7efc374ed54876815647c07d51cf6521022a5b2fbe6f64e8b1ec5b41c0a2ab and /dev/null differ
diff --git a/data/database/dcad132851399ab1faed6864a8db254580273097a5deb12c9d86b84e11b97968 b/data/database/dcad132851399ab1faed6864a8db254580273097a5deb12c9d86b84e11b97968
deleted file mode 100644
index 3ce3b1b1631d..000000000000
Binary files a/data/database/dcad132851399ab1faed6864a8db254580273097a5deb12c9d86b84e11b97968 and /dev/null differ
diff --git a/data/database/ce1d1fd7973dc204cfb23f63e767b708aaed046ca036b81cd715d04a51dc91c5 b/data/database/dcc0ff4f8abb31a47bb5c4594d3ac8dd5d518c25928da7dd61e19a97eda88a74
similarity index 100%
rename from data/database/ce1d1fd7973dc204cfb23f63e767b708aaed046ca036b81cd715d04a51dc91c5
rename to data/database/dcc0ff4f8abb31a47bb5c4594d3ac8dd5d518c25928da7dd61e19a97eda88a74
diff --git a/data/database/fc703e868abb5268720db62707a30e741535064224705aea9f5393f2099acb2c b/data/database/dd1941ca2ec2d446d6b0d4a09f703d838ff5468696505650d1b96791998ee8d9
similarity index 100%
rename from data/database/fc703e868abb5268720db62707a30e741535064224705aea9f5393f2099acb2c
rename to data/database/dd1941ca2ec2d446d6b0d4a09f703d838ff5468696505650d1b96791998ee8d9
diff --git a/data/database/dd975ebf0dbe330cbd075a001590f81d2a96d9d1f2018bb0829e462845b4e008 b/data/database/dd975ebf0dbe330cbd075a001590f81d2a96d9d1f2018bb0829e462845b4e008
deleted file mode 100644
index 907ab5f37cc2..000000000000
Binary files a/data/database/dd975ebf0dbe330cbd075a001590f81d2a96d9d1f2018bb0829e462845b4e008 and /dev/null differ
diff --git a/data/database/1cd232551cfcdccd4f72eb35cb6a6547781884dbc60718c041390923d7a18afc b/data/database/dfe891c1ba8cf785bd0b32f69f208b74b10a348511868a7157f4ca9e80efae10
similarity index 100%
rename from data/database/1cd232551cfcdccd4f72eb35cb6a6547781884dbc60718c041390923d7a18afc
rename to data/database/dfe891c1ba8cf785bd0b32f69f208b74b10a348511868a7157f4ca9e80efae10
diff --git a/data/database/d79190028635c9cbeea812de12e994898e6ce4c11015a0273b6e0c143ff990df b/data/database/e0392e0b38671e8a5a0b7df25ed775f1e337b4f51c6ec4d435da5e57d0a862f1
similarity index 76%
rename from data/database/d79190028635c9cbeea812de12e994898e6ce4c11015a0273b6e0c143ff990df
rename to data/database/e0392e0b38671e8a5a0b7df25ed775f1e337b4f51c6ec4d435da5e57d0a862f1
index 64c3812be2a5..49fc4485a85e 100644
Binary files a/data/database/d79190028635c9cbeea812de12e994898e6ce4c11015a0273b6e0c143ff990df and b/data/database/e0392e0b38671e8a5a0b7df25ed775f1e337b4f51c6ec4d435da5e57d0a862f1 differ
diff --git a/data/database/e0bc2209d524007cd874ed78069cf22d57548d630319885eb0dd8cc7e5651987 b/data/database/e0bc2209d524007cd874ed78069cf22d57548d630319885eb0dd8cc7e5651987
deleted file mode 100644
index 9c9e6796f7f4..000000000000
Binary files a/data/database/e0bc2209d524007cd874ed78069cf22d57548d630319885eb0dd8cc7e5651987 and /dev/null differ
diff --git a/data/database/e0c9d7ba1f0ea91896eeab4408fd3e1add77080dbce57c6d64a3aeb07a77877a b/data/database/e0c9d7ba1f0ea91896eeab4408fd3e1add77080dbce57c6d64a3aeb07a77877a
deleted file mode 100644
index f69bae7b8aea..000000000000
Binary files a/data/database/e0c9d7ba1f0ea91896eeab4408fd3e1add77080dbce57c6d64a3aeb07a77877a and /dev/null differ
diff --git a/data/database/e1b171c9b29ddb70c4506e7134f9101fc2f43d76eb719382e4a7ed38041306ff b/data/database/e1b171c9b29ddb70c4506e7134f9101fc2f43d76eb719382e4a7ed38041306ff
new file mode 100644
index 000000000000..1c28a2914e37
Binary files /dev/null and b/data/database/e1b171c9b29ddb70c4506e7134f9101fc2f43d76eb719382e4a7ed38041306ff differ
diff --git a/data/database/e1fb3b7a16ef48d10651d60ebd654274552d0552f7e6665f4a778a94cfcab9ad b/data/database/e1fb3b7a16ef48d10651d60ebd654274552d0552f7e6665f4a778a94cfcab9ad
deleted file mode 100644
index 58ec3afb9e68..000000000000
Binary files a/data/database/e1fb3b7a16ef48d10651d60ebd654274552d0552f7e6665f4a778a94cfcab9ad and /dev/null differ
diff --git a/data/database/e2b8408ba185250973df2572f0ce641764f7c52695df85cc82c127dc5961f60f b/data/database/e2b8408ba185250973df2572f0ce641764f7c52695df85cc82c127dc5961f60f
deleted file mode 100644
index 5f1421f43ac0..000000000000
Binary files a/data/database/e2b8408ba185250973df2572f0ce641764f7c52695df85cc82c127dc5961f60f and /dev/null differ
diff --git a/data/database/e36f93f6f757eb90c105910c4c2f3f33eab33422a9727298592083f27b73fd74 b/data/database/e36f93f6f757eb90c105910c4c2f3f33eab33422a9727298592083f27b73fd74
deleted file mode 100644
index 72e5a5413971..000000000000
Binary files a/data/database/e36f93f6f757eb90c105910c4c2f3f33eab33422a9727298592083f27b73fd74 and /dev/null differ
diff --git a/data/database/e3905673df71cb0f65aa504a04c2423b13c915185f7aae472183132122caaf4e b/data/database/e3905673df71cb0f65aa504a04c2423b13c915185f7aae472183132122caaf4e
deleted file mode 100644
index 7f7df8658c58..000000000000
Binary files a/data/database/e3905673df71cb0f65aa504a04c2423b13c915185f7aae472183132122caaf4e and /dev/null differ
diff --git a/data/database/e3bcc03b57388effd6e5c5bd53ba74186ddae98b663096e0cdc8fd9a30b72505 b/data/database/e3bcc03b57388effd6e5c5bd53ba74186ddae98b663096e0cdc8fd9a30b72505
deleted file mode 100644
index f51bfdd247f0..000000000000
Binary files a/data/database/e3bcc03b57388effd6e5c5bd53ba74186ddae98b663096e0cdc8fd9a30b72505 and /dev/null differ
diff --git a/data/database/e4bd9ad5bdeadb0416a027b7f0ee6e342cfe24702922a97095878fbe965c6efd b/data/database/e4bd9ad5bdeadb0416a027b7f0ee6e342cfe24702922a97095878fbe965c6efd
deleted file mode 100644
index 4b44457c0079..000000000000
Binary files a/data/database/e4bd9ad5bdeadb0416a027b7f0ee6e342cfe24702922a97095878fbe965c6efd and /dev/null differ
diff --git a/data/database/9f43319bbd3cbc370b6f467d29209b9a0175c33cea23a3c3901e12b5cbeece01 b/data/database/e51d678259b03827a2b48437e830c630b5a36a75288d8678a2e0ab4eaa12b404
similarity index 100%
rename from data/database/9f43319bbd3cbc370b6f467d29209b9a0175c33cea23a3c3901e12b5cbeece01
rename to data/database/e51d678259b03827a2b48437e830c630b5a36a75288d8678a2e0ab4eaa12b404
diff --git a/data/database/5121de6955f03a8244fede3182a1b647b8653037e50b5d6636ce10f88f7e7d92 b/data/database/e5f66566fc91642bb4d3485d323e722a324f29747e25be4988af464d5f3b694d
similarity index 100%
rename from data/database/5121de6955f03a8244fede3182a1b647b8653037e50b5d6636ce10f88f7e7d92
rename to data/database/e5f66566fc91642bb4d3485d323e722a324f29747e25be4988af464d5f3b694d
diff --git a/data/database/e604997328cb69004f66af6d754aa246090c9f3ea728cab171e665885b22bade b/data/database/e604997328cb69004f66af6d754aa246090c9f3ea728cab171e665885b22bade
new file mode 100644
index 000000000000..ed2155ce4e75
Binary files /dev/null and b/data/database/e604997328cb69004f66af6d754aa246090c9f3ea728cab171e665885b22bade differ
diff --git a/data/database/e61411f077f5b46c0aecb0f121de464183fd58f143b80ad607eaff296b49ef6e b/data/database/e61411f077f5b46c0aecb0f121de464183fd58f143b80ad607eaff296b49ef6e
deleted file mode 100644
index 3f1d75b31465..000000000000
Binary files a/data/database/e61411f077f5b46c0aecb0f121de464183fd58f143b80ad607eaff296b49ef6e and /dev/null differ
diff --git a/data/database/e634665ea1a85eb8c0d717df3b04bb7d708ba45462a0cfc874dfff9fc8d36024 b/data/database/e634665ea1a85eb8c0d717df3b04bb7d708ba45462a0cfc874dfff9fc8d36024
deleted file mode 100644
index 68ac9eb3d957..000000000000
Binary files a/data/database/e634665ea1a85eb8c0d717df3b04bb7d708ba45462a0cfc874dfff9fc8d36024 and /dev/null differ
diff --git a/data/database/e68017b2b9bbaa4b0c962ef6eeddbe670f63587c766345f290381009d232139a b/data/database/e68017b2b9bbaa4b0c962ef6eeddbe670f63587c766345f290381009d232139a
deleted file mode 100644
index c3bb1c5dc2e5..000000000000
Binary files a/data/database/e68017b2b9bbaa4b0c962ef6eeddbe670f63587c766345f290381009d232139a and /dev/null differ
diff --git a/data/database/7b5acb9bd57f3bd1e65eff7babc9056733074b784af9f7c3f8263d1bf14e4b23 b/data/database/e6c0eb7aeab86949280de074000bc0ee9a143496f3822f1f9a363eff8e74d02c
similarity index 100%
rename from data/database/7b5acb9bd57f3bd1e65eff7babc9056733074b784af9f7c3f8263d1bf14e4b23
rename to data/database/e6c0eb7aeab86949280de074000bc0ee9a143496f3822f1f9a363eff8e74d02c
diff --git a/data/database/e772e8771642c98648813e705e3274a97067a09b7943f02db89b138f9a97e18a b/data/database/e772e8771642c98648813e705e3274a97067a09b7943f02db89b138f9a97e18a
deleted file mode 100644
index 621c691ed165..000000000000
Binary files a/data/database/e772e8771642c98648813e705e3274a97067a09b7943f02db89b138f9a97e18a and /dev/null differ
diff --git a/data/database/e7fad6e4b8bdae613cfe05e458352d5e8c94e01b73cfc2c3c747f73f8149dbf8 b/data/database/e7fad6e4b8bdae613cfe05e458352d5e8c94e01b73cfc2c3c747f73f8149dbf8
deleted file mode 100644
index fead68d95173..000000000000
Binary files a/data/database/e7fad6e4b8bdae613cfe05e458352d5e8c94e01b73cfc2c3c747f73f8149dbf8 and /dev/null differ
diff --git a/data/database/e8199b842ec5fc784b7381f154fcef06add42f42f41a0db60c12b4707a3ae0ab b/data/database/e8199b842ec5fc784b7381f154fcef06add42f42f41a0db60c12b4707a3ae0ab
deleted file mode 100644
index 14fc5993c621..000000000000
Binary files a/data/database/e8199b842ec5fc784b7381f154fcef06add42f42f41a0db60c12b4707a3ae0ab and /dev/null differ
diff --git a/data/database/a100a32228b5f144d3b5431fab684867b461ab3413c62ef2fd0c8ab76695b4bf b/data/database/ea0fad995358d9a547596801ae68547d62260242e450bc6b3cc1171ae2e9d9e8
similarity index 100%
rename from data/database/a100a32228b5f144d3b5431fab684867b461ab3413c62ef2fd0c8ab76695b4bf
rename to data/database/ea0fad995358d9a547596801ae68547d62260242e450bc6b3cc1171ae2e9d9e8
diff --git a/data/database/ea6c1d723ea71d8ec139c7b53f0b3bd523db28f5ea418cf88fae7e59d9d11c0c b/data/database/ea6c1d723ea71d8ec139c7b53f0b3bd523db28f5ea418cf88fae7e59d9d11c0c
deleted file mode 100644
index 86f00b89c943..000000000000
Binary files a/data/database/ea6c1d723ea71d8ec139c7b53f0b3bd523db28f5ea418cf88fae7e59d9d11c0c and /dev/null differ
diff --git a/data/database/eabc3e63e89d1017fe9020b38c33c484a7f49cda67af9f66c922f6d0305f435a b/data/database/eabc3e63e89d1017fe9020b38c33c484a7f49cda67af9f66c922f6d0305f435a
deleted file mode 100644
index b2cc145c8d48..000000000000
Binary files a/data/database/eabc3e63e89d1017fe9020b38c33c484a7f49cda67af9f66c922f6d0305f435a and /dev/null differ
diff --git a/data/database/8a1b8af1e97bef88b9fdbe4c7e48d5132fafec5cce68c25aeaaf5cb10eb2ef63 b/data/database/eafd74adbd3a21d76a9fe66c4ca0e398553b73ae89156908cebe18355b2bf16b
similarity index 76%
rename from data/database/8a1b8af1e97bef88b9fdbe4c7e48d5132fafec5cce68c25aeaaf5cb10eb2ef63
rename to data/database/eafd74adbd3a21d76a9fe66c4ca0e398553b73ae89156908cebe18355b2bf16b
index 5063e7f9252b..b12727b3e5d7 100644
Binary files a/data/database/8a1b8af1e97bef88b9fdbe4c7e48d5132fafec5cce68c25aeaaf5cb10eb2ef63 and b/data/database/eafd74adbd3a21d76a9fe66c4ca0e398553b73ae89156908cebe18355b2bf16b differ
diff --git a/data/database/e3167920aaaf54a55422b90ddf39b11ebd0e38a21824d50f231b38d0b2b1aac9 b/data/database/eb6df951c0690682e0780246e9547e4a8e9835f26b83da8c6d4d6c1c05c314d7
similarity index 100%
rename from data/database/e3167920aaaf54a55422b90ddf39b11ebd0e38a21824d50f231b38d0b2b1aac9
rename to data/database/eb6df951c0690682e0780246e9547e4a8e9835f26b83da8c6d4d6c1c05c314d7
diff --git a/data/database/ec526ecb7905b0549511241f75f3064719d67622e3c0e630e265b24f42cbb9c8 b/data/database/ec526ecb7905b0549511241f75f3064719d67622e3c0e630e265b24f42cbb9c8
deleted file mode 100644
index 242da5eebc9d..000000000000
Binary files a/data/database/ec526ecb7905b0549511241f75f3064719d67622e3c0e630e265b24f42cbb9c8 and /dev/null differ
diff --git a/data/database/ecb8bd66fa94d6e858a4e6fff184a1825bcc4cc2917f51dc944e060b7770a346 b/data/database/ecb8bd66fa94d6e858a4e6fff184a1825bcc4cc2917f51dc944e060b7770a346
deleted file mode 100644
index b82a6912253f..000000000000
Binary files a/data/database/ecb8bd66fa94d6e858a4e6fff184a1825bcc4cc2917f51dc944e060b7770a346 and /dev/null differ
diff --git a/data/database/58d20a37ccb3274b8cf9d19da9f4c9fa2fe28a3ee3f43f3e0669045a225711ff b/data/database/edb2857967319806b9af62c5b73e9f57373a05c0f062bc45bb325ab502fcb927
similarity index 100%
rename from data/database/58d20a37ccb3274b8cf9d19da9f4c9fa2fe28a3ee3f43f3e0669045a225711ff
rename to data/database/edb2857967319806b9af62c5b73e9f57373a05c0f062bc45bb325ab502fcb927
diff --git a/data/database/ee93c7ef6bf7f5ca6370c66c1780e336344f1178ecc4dac5cfb9a97a9ab2fd8c b/data/database/ee93c7ef6bf7f5ca6370c66c1780e336344f1178ecc4dac5cfb9a97a9ab2fd8c
deleted file mode 100644
index 0e07889d2703..000000000000
Binary files a/data/database/ee93c7ef6bf7f5ca6370c66c1780e336344f1178ecc4dac5cfb9a97a9ab2fd8c and /dev/null differ
diff --git a/data/database/dd3c3e6afc9b87792e99ccee9a1492a7dd29f97d74eaa09fef5a2ab472564a31 b/data/database/eecd508e6777bc9a9271808fc74f36344f0e61278c1dcddf874ae6e8d7c24aa8
similarity index 99%
rename from data/database/dd3c3e6afc9b87792e99ccee9a1492a7dd29f97d74eaa09fef5a2ab472564a31
rename to data/database/eecd508e6777bc9a9271808fc74f36344f0e61278c1dcddf874ae6e8d7c24aa8
index 1f64695666fb..5edb7bfc4458 100644
Binary files a/data/database/dd3c3e6afc9b87792e99ccee9a1492a7dd29f97d74eaa09fef5a2ab472564a31 and b/data/database/eecd508e6777bc9a9271808fc74f36344f0e61278c1dcddf874ae6e8d7c24aa8 differ
diff --git a/data/database/ce44f2cc42aa6940acfe9601377d4ce1516b5af27cf329be4c47bd3e7d1cff3b b/data/database/eef5bed02469f1ed650258c60ef68fd81bd827a3ceb6e80c94c26b665996462d
similarity index 84%
rename from data/database/ce44f2cc42aa6940acfe9601377d4ce1516b5af27cf329be4c47bd3e7d1cff3b
rename to data/database/eef5bed02469f1ed650258c60ef68fd81bd827a3ceb6e80c94c26b665996462d
index 8c576d27a485..dd5c358047c9 100644
Binary files a/data/database/ce44f2cc42aa6940acfe9601377d4ce1516b5af27cf329be4c47bd3e7d1cff3b and b/data/database/eef5bed02469f1ed650258c60ef68fd81bd827a3ceb6e80c94c26b665996462d differ
diff --git a/data/database/32bb1713870b48484231277d36a6667184bf2f0284a26757c84cfe095a183342 b/data/database/ef7781860dd7487e0e6703b54653e60d602e6ee6baef165a98d39e781b98fd36
similarity index 100%
rename from data/database/32bb1713870b48484231277d36a6667184bf2f0284a26757c84cfe095a183342
rename to data/database/ef7781860dd7487e0e6703b54653e60d602e6ee6baef165a98d39e781b98fd36
diff --git a/data/database/805f47d482eda2a5b004f739411354152cfa0bb4bf5c96f223828560c61c52ca b/data/database/ef91c62b5c714b9c4e7d47d350d324ba533b7c11e6ee961f882883e73447baad
similarity index 100%
rename from data/database/805f47d482eda2a5b004f739411354152cfa0bb4bf5c96f223828560c61c52ca
rename to data/database/ef91c62b5c714b9c4e7d47d350d324ba533b7c11e6ee961f882883e73447baad
diff --git a/data/database/8903e38045568adb8a61ffde2bdc654ddfc1b50b78d5d7af3ce9729af4ade3a4 b/data/database/f0019fba6ac425e3f6ea2eb4f26ea86e26f8590ad4e421ffe19efbd98f55708e
similarity index 100%
rename from data/database/8903e38045568adb8a61ffde2bdc654ddfc1b50b78d5d7af3ce9729af4ade3a4
rename to data/database/f0019fba6ac425e3f6ea2eb4f26ea86e26f8590ad4e421ffe19efbd98f55708e
diff --git a/data/database/331252b93c133f0d34bb32544e97efd9880dae27519269d5c21761ef319008bd b/data/database/f0c5a7ab5497c2369ce5384260932a8060c7ea00fc10850ae6c584e4fdb43e1a
similarity index 99%
rename from data/database/331252b93c133f0d34bb32544e97efd9880dae27519269d5c21761ef319008bd
rename to data/database/f0c5a7ab5497c2369ce5384260932a8060c7ea00fc10850ae6c584e4fdb43e1a
index 1f488f31a9e8..696ee4231bb4 100644
Binary files a/data/database/331252b93c133f0d34bb32544e97efd9880dae27519269d5c21761ef319008bd and b/data/database/f0c5a7ab5497c2369ce5384260932a8060c7ea00fc10850ae6c584e4fdb43e1a differ
diff --git a/data/database/f1daa2afd3f9b63b6aee80faade4cf5f864b125174f6c227392bb6a65e5bcdf0 b/data/database/f1daa2afd3f9b63b6aee80faade4cf5f864b125174f6c227392bb6a65e5bcdf0
deleted file mode 100644
index ae78c30eac25..000000000000
Binary files a/data/database/f1daa2afd3f9b63b6aee80faade4cf5f864b125174f6c227392bb6a65e5bcdf0 and /dev/null differ
diff --git a/data/database/f238a2f0ccc2ba2018fcf29752fb38c0c515ce3af6ee8b519bd57fd74e293eb1 b/data/database/f238a2f0ccc2ba2018fcf29752fb38c0c515ce3af6ee8b519bd57fd74e293eb1
deleted file mode 100644
index 69a51b4cd719..000000000000
Binary files a/data/database/f238a2f0ccc2ba2018fcf29752fb38c0c515ce3af6ee8b519bd57fd74e293eb1 and /dev/null differ
diff --git a/data/database/25736a42b239f7f54df681725d95fbfecda4c7ac82e3ec4dddab2b76c47ae8be b/data/database/f2a56cbe89b195454a7597ed47e8d3ad854c173e54e256b80b1f893b0b9a9d62
similarity index 100%
rename from data/database/25736a42b239f7f54df681725d95fbfecda4c7ac82e3ec4dddab2b76c47ae8be
rename to data/database/f2a56cbe89b195454a7597ed47e8d3ad854c173e54e256b80b1f893b0b9a9d62
diff --git a/data/database/f4c7bd83601ffcaa323ab14bbb46d9d6674f32c361951914a51fabd95f554bba b/data/database/f4c7bd83601ffcaa323ab14bbb46d9d6674f32c361951914a51fabd95f554bba
deleted file mode 100644
index dc8e14e78699..000000000000
Binary files a/data/database/f4c7bd83601ffcaa323ab14bbb46d9d6674f32c361951914a51fabd95f554bba and /dev/null differ
diff --git a/data/database/f581d8305f6c373fe09a2fd9e5626e26d9ea70bacf03a420102a70e8a44113d3 b/data/database/f581d8305f6c373fe09a2fd9e5626e26d9ea70bacf03a420102a70e8a44113d3
deleted file mode 100644
index 118eb151a86a..000000000000
Binary files a/data/database/f581d8305f6c373fe09a2fd9e5626e26d9ea70bacf03a420102a70e8a44113d3 and /dev/null differ
diff --git a/data/database/5c7f6aa328e42a7268a2083afbbb9afe6fd9d990f96b0ac188cd28a7b9247afa b/data/database/f5e9bf8ee5096b7d658766fa29dc5bf01c1e164af1f3c0986c21bc911eeef3f2
similarity index 90%
rename from data/database/5c7f6aa328e42a7268a2083afbbb9afe6fd9d990f96b0ac188cd28a7b9247afa
rename to data/database/f5e9bf8ee5096b7d658766fa29dc5bf01c1e164af1f3c0986c21bc911eeef3f2
index 9024be3c1aca..a75fa466540d 100644
Binary files a/data/database/5c7f6aa328e42a7268a2083afbbb9afe6fd9d990f96b0ac188cd28a7b9247afa and b/data/database/f5e9bf8ee5096b7d658766fa29dc5bf01c1e164af1f3c0986c21bc911eeef3f2 differ
diff --git a/data/database/f5eeedffa0d85344fe4d7032bcd4ede6409e8f8e0aeb7dec36ce59e3c43ba2f8 b/data/database/f5eeedffa0d85344fe4d7032bcd4ede6409e8f8e0aeb7dec36ce59e3c43ba2f8
deleted file mode 100644
index 39d2f3ec936d..000000000000
Binary files a/data/database/f5eeedffa0d85344fe4d7032bcd4ede6409e8f8e0aeb7dec36ce59e3c43ba2f8 and /dev/null differ
diff --git a/data/database/7ece401ccf5537f06912957165566e6a5aaad3551466aa0baade37b0df4689d9 b/data/database/f62e4e69bad23ea8941f07355b24ec46a0aa77df6339e6188c57f7f156a8e14d
similarity index 100%
rename from data/database/7ece401ccf5537f06912957165566e6a5aaad3551466aa0baade37b0df4689d9
rename to data/database/f62e4e69bad23ea8941f07355b24ec46a0aa77df6339e6188c57f7f156a8e14d
diff --git a/data/database/f697de49af37d973df7290ab8539f22cc88545f9f5f62d73dd0118e76e670ace b/data/database/f697de49af37d973df7290ab8539f22cc88545f9f5f62d73dd0118e76e670ace
deleted file mode 100644
index 8c3e36bb4ac6..000000000000
Binary files a/data/database/f697de49af37d973df7290ab8539f22cc88545f9f5f62d73dd0118e76e670ace and /dev/null differ
diff --git a/data/database/5c144b2c6dd5b668aa77ac2145362ceba058c3dbf0487618354fdb09fcf2dfa7 b/data/database/f720389275cdb50edb6e3c66c30bc7ac02348244a74eb84e798cf2103a7a2b3c
similarity index 100%
rename from data/database/5c144b2c6dd5b668aa77ac2145362ceba058c3dbf0487618354fdb09fcf2dfa7
rename to data/database/f720389275cdb50edb6e3c66c30bc7ac02348244a74eb84e798cf2103a7a2b3c
diff --git a/data/database/f7857a70fb7ee2deacd83ac2dba7b798cf032c83f61bc7387a419a99c25f284b b/data/database/f7857a70fb7ee2deacd83ac2dba7b798cf032c83f61bc7387a419a99c25f284b
deleted file mode 100644
index 1d072cf89760..000000000000
Binary files a/data/database/f7857a70fb7ee2deacd83ac2dba7b798cf032c83f61bc7387a419a99c25f284b and /dev/null differ
diff --git a/data/database/f7a448a0dacc0303dbd7f29e626479879b8d7bd82e9ba820b34a6459cccb162a b/data/database/f7a448a0dacc0303dbd7f29e626479879b8d7bd82e9ba820b34a6459cccb162a
deleted file mode 100644
index 2326b8ea7f4e..000000000000
Binary files a/data/database/f7a448a0dacc0303dbd7f29e626479879b8d7bd82e9ba820b34a6459cccb162a and /dev/null differ
diff --git a/data/database/f84a6344419960dd0e726d81c4962e6c10f2713f0cd9797dfb924e95571f90b7 b/data/database/f84a6344419960dd0e726d81c4962e6c10f2713f0cd9797dfb924e95571f90b7
deleted file mode 100644
index 8acb11fd02f3..000000000000
Binary files a/data/database/f84a6344419960dd0e726d81c4962e6c10f2713f0cd9797dfb924e95571f90b7 and /dev/null differ
diff --git a/data/database/f8cadab45e552caed0ddccab530010a70277ffdfe69b21d47e1db58f55c2f32d b/data/database/f8cadab45e552caed0ddccab530010a70277ffdfe69b21d47e1db58f55c2f32d
deleted file mode 100644
index 72e5a5413971..000000000000
Binary files a/data/database/f8cadab45e552caed0ddccab530010a70277ffdfe69b21d47e1db58f55c2f32d and /dev/null differ
diff --git a/data/database/7eac4453e0c5f8718bef0804b3f757f138902c32d2e231b0c42365b673f63b88 b/data/database/f912dc537f67b078f3c58e728de13a2a0b3342a4f87056938c4784e779ea5702
similarity index 100%
rename from data/database/7eac4453e0c5f8718bef0804b3f757f138902c32d2e231b0c42365b673f63b88
rename to data/database/f912dc537f67b078f3c58e728de13a2a0b3342a4f87056938c4784e779ea5702
diff --git a/data/database/fa0908755125e25c9515952a6b06ead5b6bfbc6e03dafda20651eff1c09f84f3 b/data/database/fa0908755125e25c9515952a6b06ead5b6bfbc6e03dafda20651eff1c09f84f3
deleted file mode 100644
index 7eb367db68ff..000000000000
Binary files a/data/database/fa0908755125e25c9515952a6b06ead5b6bfbc6e03dafda20651eff1c09f84f3 and /dev/null differ
diff --git a/data/database/fbc60bf202471e5467a3a07511d6d591b87b8ce582713d917ff98d370f117cc6 b/data/database/fbc60bf202471e5467a3a07511d6d591b87b8ce582713d917ff98d370f117cc6
new file mode 100644
index 000000000000..83a8f3869039
Binary files /dev/null and b/data/database/fbc60bf202471e5467a3a07511d6d591b87b8ce582713d917ff98d370f117cc6 differ
diff --git a/data/database/fcd090e4fc5282a402ca4d0d379ae7ba79477fd1d7fc6d9b839552bba9ef1e1f b/data/database/fcd090e4fc5282a402ca4d0d379ae7ba79477fd1d7fc6d9b839552bba9ef1e1f
deleted file mode 100644
index 8a039af54856..000000000000
Binary files a/data/database/fcd090e4fc5282a402ca4d0d379ae7ba79477fd1d7fc6d9b839552bba9ef1e1f and /dev/null differ
diff --git a/data/database/fd2383a5ddee6773bc840dea1af7492d7cbbd1e332c103537d4b5db2189a2d2b b/data/database/fd2383a5ddee6773bc840dea1af7492d7cbbd1e332c103537d4b5db2189a2d2b
deleted file mode 100644
index c30ad117eb1a..000000000000
Binary files a/data/database/fd2383a5ddee6773bc840dea1af7492d7cbbd1e332c103537d4b5db2189a2d2b and /dev/null differ
diff --git a/data/database/fe495af578da67954dd39c98331de3dc0b1572156f9cbd1553d04ee592ece190 b/data/database/fe495af578da67954dd39c98331de3dc0b1572156f9cbd1553d04ee592ece190
deleted file mode 100644
index 29260387f78e..000000000000
Binary files a/data/database/fe495af578da67954dd39c98331de3dc0b1572156f9cbd1553d04ee592ece190 and /dev/null differ
diff --git a/discussion/app/controllers/CommentsController.scala b/discussion/app/controllers/CommentsController.scala
index 499aa15b5d46..7826cd21ff98 100644
--- a/discussion/app/controllers/CommentsController.scala
+++ b/discussion/app/controllers/CommentsController.scala
@@ -29,7 +29,7 @@ class CommentsController(
"categoryId" -> Forms.number.verifying(ReportAbuseFormValidation.validCategoryConstraint),
"commentId" -> Forms.number,
"reason" -> optional(Forms.text.verifying("Reason must be 250 characters or fewer", input => Constraints.maxLength(250)(input) == Valid)),
- "email" -> optional(Forms.text.verifying("Please enter a valid email address", input => Constraints.emailAddress == Valid))
+ "email" -> optional(Forms.text.verifying("Please enter a valid email address", input => Constraints.emailAddress()(input) == Valid))
)(DiscussionAbuseReport.apply)(DiscussionAbuseReport.unapply _)
)
diff --git a/facia-press/app/frontpress/FapiFrontPress.scala b/facia-press/app/frontpress/FapiFrontPress.scala
index 1d285eb64f11..3422b3b74511 100644
--- a/facia-press/app/frontpress/FapiFrontPress.scala
+++ b/facia-press/app/frontpress/FapiFrontPress.scala
@@ -336,10 +336,10 @@ trait FapiFrontPress extends Logging {
.pageSize(0)
)
- contentApiResponse.onSuccess { case _ =>
+ contentApiResponse.foreach { _ =>
log.info(s"Getting SEO data from content API for $id")}
- contentApiResponse.onFailure { case e: Exception =>
+ contentApiResponse.failed.foreach { e: Throwable =>
log.warn(s"Error getting SEO data from content API for $id: $e")
}
diff --git a/facia-press/app/frontpress/FrontPressCron.scala b/facia-press/app/frontpress/FrontPressCron.scala
index ee00d18f3f35..6cc7f80832a2 100644
--- a/facia-press/app/frontpress/FrontPressCron.scala
+++ b/facia-press/app/frontpress/FrontPressCron.scala
@@ -32,8 +32,8 @@ class FrontPressCron(liveFapiFrontPress: LiveFapiFrontPress, toolPressQueueWorke
.pressByPathId(path)
.map(Function.const(()))
- pressFuture.onSuccess {
- case _ => FrontPressCronSuccess.increment()
+ pressFuture.foreach {
+ _ => FrontPressCronSuccess.increment()
}
pressFuture
diff --git a/facia-press/app/frontpress/JsonQueueWorker.scala b/facia-press/app/frontpress/JsonQueueWorker.scala
index 1c914b72ccd5..b89f37559785 100644
--- a/facia-press/app/frontpress/JsonQueueWorker.scala
+++ b/facia-press/app/frontpress/JsonQueueWorker.scala
@@ -84,16 +84,18 @@ abstract class JsonQueueWorker[A: Reads]()(implicit executionContext: ExecutionC
/** Ultimately, we ought to be able to recover from processing the same message twice anyway, as the nature
* of SQS means you could get the same message delivered twice.
*/
- queue.delete(receipt) onFailure {
- case error => log.error(s"Error deleting message $id from queue", error)
+ queue.delete(receipt).failed.foreach {
+ error => log.error(s"Error deleting message $id from queue", error)
}
consecutiveProcessingErrors.recordSuccess()
case Failure(error) =>
if (deleteOnFailure) {
- queue.delete(receipt) onFailure {
- case e => log.error(s"Error deleting message $id from queue", e)}}
+ queue.delete(receipt).failed.foreach {
+ e => log.error(s"Error deleting message $id from queue", e)
+ }
+ }
log.error(s"Error processing message $id", error)
consecutiveProcessingErrors.recordError()
}
@@ -106,8 +108,8 @@ abstract class JsonQueueWorker[A: Reads]()(implicit executionContext: ExecutionC
Future.successful(())
}
- getRequest onFailure {
- case error: Throwable => log.error("Encountered error receiving message from queue", error)
+ getRequest.failed.foreach {
+ error: Throwable => log.error("Encountered error receiving message from queue", error)
}
getRequest.map(_ => ())
diff --git a/facia/app/controllers/FaciaController.scala b/facia/app/controllers/FaciaController.scala
index 902271f90a28..e6d821847527 100644
--- a/facia/app/controllers/FaciaController.scala
+++ b/facia/app/controllers/FaciaController.scala
@@ -134,7 +134,7 @@ trait FaciaController extends BaseController with Logging with ImplicitControlle
)
case None => successful(Cached(CacheTime.NotFound)(WithoutRevalidationResult(NotFound)))}
- futureResult.onFailure { case t: Throwable => log.error(s"Failed rendering $path with $t", t)}
+ futureResult.failed.foreach { t: Throwable => log.error(s"Failed rendering $path with $t", t)}
futureResult
}
diff --git a/facia/app/controllers/HealthCheck.scala b/facia/app/controllers/HealthCheck.scala
index e241d26e0604..8349ad91aea6 100644
--- a/facia/app/controllers/HealthCheck.scala
+++ b/facia/app/controllers/HealthCheck.scala
@@ -7,7 +7,7 @@ import services.ConfigAgent
class HealthCheck(wsClient: WSClient, val controllerComponents: ControllerComponents) extends CachedHealthCheck(
policy = HealthCheckPolicy.All,
- preconditionMaybe = Some(HealthCheckPrecondition(ConfigAgent.isLoaded, "Facia config has not been loaded yet"))
+ preconditionMaybe = Some(HealthCheckPrecondition(ConfigAgent.isLoaded _, "Facia config has not been loaded yet"))
)(
NeverExpiresSingleHealthCheck("/uk/business")
)(
diff --git a/facia/test/FaciaTestData.scala b/facia/test/FaciaTestData.scala
index 78536de8ddd2..728737247b4a 100644
--- a/facia/test/FaciaTestData.scala
+++ b/facia/test/FaciaTestData.scala
@@ -2,8 +2,9 @@ package test
import java.time.ZoneOffset
+import com.gu.Box
import common.editions.{Au, Uk, Us}
-import common.{AkkaAgent, Edition}
+import common.Edition
import controllers.front.Front
import model.pressed.{CollectionConfig, PressedContent}
import model.{PressedPage, _}
@@ -265,5 +266,5 @@ trait FaciaTestData extends ModelHelper {
}
class TestFront extends Front with FaciaTestData {
- val pageFrontAgent = AkkaAgent[Map[String, TestPageFront]](defaultAgentContents)
+ val pageFrontAgent = Box[Map[String, TestPageFront]](defaultAgentContents)
}
diff --git a/facia/test/views/fragments/nav/NavigationTest.scala b/facia/test/views/fragments/nav/NavigationTest.scala
index 7f28a8dd6f8d..850dd1cd5ea8 100644
--- a/facia/test/views/fragments/nav/NavigationTest.scala
+++ b/facia/test/views/fragments/nav/NavigationTest.scala
@@ -6,7 +6,7 @@ import org.scalatest.{DoNotDiscover, FlatSpec, Matchers}
import play.api.test.FakeRequest
import test.ConfiguredTestSuite
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class NavigationTest extends FlatSpec with Matchers with ConfiguredTestSuite {
@@ -22,7 +22,7 @@ import scala.collection.JavaConversions._
val currentSection = Jsoup.parseBodyFragment(tpl.toString).getElementsByClass("top-navigation__item--current")
- currentSection.length shouldEqual 1
+ currentSection.asScala.length shouldEqual 1
currentSection.first.
getElementsByTag("a").first.
@@ -41,7 +41,7 @@ import scala.collection.JavaConversions._
val currentSection = Jsoup.parseBodyFragment(tpl.toString).getElementsByClass("top-navigation__item--current")
- currentSection.length shouldEqual 1
+ currentSection.asScala.length shouldEqual 1
currentSection.first.
getElementsByTag("a").first.
diff --git a/identity/app/controllers/EditProfileController.scala b/identity/app/controllers/EditProfileController.scala
index cc2586dc63f8..15a7c49d23df 100644
--- a/identity/app/controllers/EditProfileController.scala
+++ b/identity/app/controllers/EditProfileController.scala
@@ -222,12 +222,14 @@ case class ProfileForms(
case PublicEditProfilePage => publicForm
case AccountEditProfilePage => accountForm
case EmailPrefsProfilePage => privacyForm
+ case page => throw new RuntimeException(s"Unexpected page $page")
}
private lazy val activeMapping = activePage match {
case PublicEditProfilePage => profileFormsMapping.profileMapping
case AccountEditProfilePage => profileFormsMapping.accountDetailsMapping
case EmailPrefsProfilePage => profileFormsMapping.privacyMapping
+ case page => throw new RuntimeException(s"Unexpected page $page")
}
/** Fills all Edit Profile forms (Public, Account, Privacy) with the provided User value */
@@ -277,6 +279,7 @@ case class ProfileForms(
case PublicEditProfilePage => copy(publicForm = changeFunc(publicForm).asInstanceOf[Form[ProfileFormData]])
case AccountEditProfilePage => copy(accountForm = changeFunc(accountForm).asInstanceOf[Form[AccountFormData]])
case EmailPrefsProfilePage => copy(privacyForm = changeFunc(privacyForm).asInstanceOf[Form[PrivacyFormData]])
+ case page => throw new RuntimeException(s"Unexpected page $page")
}
}
}
diff --git a/identity/app/controllers/ExactTargetController.scala b/identity/app/controllers/ExactTargetController.scala
index b47d358cb090..255cc27b2e98 100644
--- a/identity/app/controllers/ExactTargetController.scala
+++ b/identity/app/controllers/ExactTargetController.scala
@@ -5,7 +5,7 @@ import play.api.mvc._
import common.ImplicitControllerExecutionContext
import services.{IdRequestParser, ReturnUrlVerifier}
import utils.SafeLogging
-import scala.collection.convert.wrapAsJava._
+import scala.collection.JavaConverters._
import conf.IdentityConfiguration
import play.api.libs.ws.WSClient
import exacttarget.SubscriptionDef
@@ -38,7 +38,7 @@ class ExactTargetController(
val parameters = subscriptionDef.parameters ++ automaticParameters
val triggeredEmailRequest =
- exactTargetFactory.createRequest(emailAddress, parameters, "Create", dataExtId.businessUnitId, dataExtId.customerKey)
+ exactTargetFactory.createRequest(emailAddress, parameters.asJava, "Create", dataExtId.businessUnitId, dataExtId.customerKey)
wsClient
.url(exactTargetFactory.endPoint.toString)
@@ -46,9 +46,8 @@ class ExactTargetController(
"Content-Type" -> "text/xml; charset=utf-8",
"SOAPAction" -> triggeredEmailRequest.getSoapAction
)
- .post(triggeredEmailRequest.getSoapEnvelopeString).onSuccess {
- case resp =>
- (resp.xml \\ "CreateResponse" \ "Results") map {
+ .post(triggeredEmailRequest.getSoapEnvelopeString).foreach { resp =>
+ (resp.xml \\ "CreateResponse" \ "Results") foreach {
subscriberNode =>
val statusCode = (subscriberNode \ "StatusCode").text.trim
val statusMessage = (subscriberNode \ "StatusMessage").text.trim
diff --git a/identity/app/form/DateFormData.scala b/identity/app/form/DateFormData.scala
index 0c5205e9d645..5174ac0d4b9c 100644
--- a/identity/app/form/DateFormData.scala
+++ b/identity/app/form/DateFormData.scala
@@ -1,6 +1,6 @@
package form
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
import scala.util._
import play.api.data.Forms._
import play.api.data.Mapping
diff --git a/identity/app/jobs/BlockedEmailDomainList.scala b/identity/app/jobs/BlockedEmailDomainList.scala
index 740888ac269d..6c13df42d810 100644
--- a/identity/app/jobs/BlockedEmailDomainList.scala
+++ b/identity/app/jobs/BlockedEmailDomainList.scala
@@ -1,11 +1,12 @@
package jobs
-import common.{AkkaAgent, Logging}
+import com.gu.Box
+import common.Logging
import services.S3Infosec
object BlockedEmailDomainList extends Logging {
- private val blockedDomainAgent = AkkaAgent[Set[String]](Set.empty)
+ private val blockedDomainAgent = Box[Set[String]](Set.empty)
def run () {
log.info("Updating email blocked domains list")
diff --git a/identity/app/jobs/TorExitNodeList.scala b/identity/app/jobs/TorExitNodeList.scala
index a0bcc1c43963..6fec4abf6fbd 100644
--- a/identity/app/jobs/TorExitNodeList.scala
+++ b/identity/app/jobs/TorExitNodeList.scala
@@ -1,13 +1,17 @@
package jobs
-import common.{Logging, AkkaAgent}
-import scala.collection.JavaConversions._
-import java.net.{URL, InetAddress}
+import common.Logging
+
+import scala.collection.JavaConverters._
+import java.net.{InetAddress, URL}
+
+import com.gu.Box
+
import scala.io.Source
object TorExitNodeList extends Logging {
- private val torExitNodeAgent = AkkaAgent[Set[String]](Set.empty)
+ private val torExitNodeAgent = Box[Set[String]](Set.empty)
private val torNodeListUrl = "https://check.torproject.org/cgi-bin/TorBulkExitList.py"
def run() {
diff --git a/onward/app/feed/MostPopularAgent.scala b/onward/app/feed/MostPopularAgent.scala
index e511ddc46043..a761398b3d90 100644
--- a/onward/app/feed/MostPopularAgent.scala
+++ b/onward/app/feed/MostPopularAgent.scala
@@ -1,9 +1,11 @@
package feed
+import com.gu.Box
import contentapi.ContentApiClient
import common._
import services.OphanApi
import model.RelatedContentItem
+
import scala.concurrent.{ExecutionContext, Future}
object MostPopularRefresh {
@@ -23,7 +25,7 @@ object MostPopularRefresh {
class MostPopularAgent(contentApiClient: ContentApiClient) extends Logging {
- private val agent = AkkaAgent[Map[String, Seq[RelatedContentItem]]](Map.empty)
+ private val agent = Box[Map[String, Seq[RelatedContentItem]]](Map.empty)
def mostPopular(edition: Edition): Seq[RelatedContentItem] = agent().getOrElse(edition.id, Nil)
@@ -46,7 +48,7 @@ case class Country(code: String, edition: Edition)
class GeoMostPopularAgent(contentApiClient: ContentApiClient, ophanApi: OphanApi) extends Logging {
- private val ophanPopularAgent = AkkaAgent[Map[String, Seq[RelatedContentItem]]](Map.empty)
+ private val ophanPopularAgent = Box[Map[String, Seq[RelatedContentItem]]](Map.empty)
private val defaultCountry: Country = Country("row", Edition.defaultEdition)
@@ -87,7 +89,7 @@ class GeoMostPopularAgent(contentApiClient: ContentApiClient, ophanApi: OphanApi
class DayMostPopularAgent(contentApiClient: ContentApiClient, ophanApi: OphanApi) extends Logging {
- private val ophanPopularAgent = AkkaAgent[Map[String, Seq[RelatedContentItem]]](Map.empty)
+ private val ophanPopularAgent = Box[Map[String, Seq[RelatedContentItem]]](Map.empty)
private val countries = Seq(
Country("GB", editions.Uk),
diff --git a/onward/app/feed/MostReadAgent.scala b/onward/app/feed/MostReadAgent.scala
index e8f828875aa4..f11979c2166d 100644
--- a/onward/app/feed/MostReadAgent.scala
+++ b/onward/app/feed/MostReadAgent.scala
@@ -1,12 +1,14 @@
package feed
+import com.gu.Box
import common._
import services.OphanApi
+
import scala.concurrent.{ExecutionContext, Future}
class MostReadAgent(ophanApi: OphanApi) extends Logging {
- private val agent = AkkaAgent[Map[String, Int]](Map.empty)
+ private val agent = Box[Map[String, Int]](Map.empty)
def refresh()(implicit ec: ExecutionContext): Future[Map[String, Int]] = {
log.info("Refreshing most read.")
diff --git a/onward/app/feed/MostViewedAudioAgent.scala b/onward/app/feed/MostViewedAudioAgent.scala
index 6d42dbadd32b..4c9361f547d0 100644
--- a/onward/app/feed/MostViewedAudioAgent.scala
+++ b/onward/app/feed/MostViewedAudioAgent.scala
@@ -1,15 +1,17 @@
package feed
+import com.gu.Box
import contentapi.ContentApiClient
import common._
import model.RelatedContentItem
+
import scala.concurrent.{ExecutionContext, Future}
import services.OphanApi
class MostViewedAudioAgent(contentApiClient: ContentApiClient, ophanApi: OphanApi) extends Logging {
- private val audioAgent = AkkaAgent[Seq[RelatedContentItem]](Nil)
- private val podcastAgent = AkkaAgent[Seq[RelatedContentItem]](Nil)
+ private val audioAgent = Box[Seq[RelatedContentItem]](Nil)
+ private val podcastAgent = Box[Seq[RelatedContentItem]](Nil)
def mostViewedAudio(): Seq[RelatedContentItem] = audioAgent()
def mostViewedPodcast(): Seq[RelatedContentItem] = podcastAgent()
diff --git a/onward/app/feed/MostViewedGalleryAgent.scala b/onward/app/feed/MostViewedGalleryAgent.scala
index 88ee9a7e5514..5967c6e8e7c2 100644
--- a/onward/app/feed/MostViewedGalleryAgent.scala
+++ b/onward/app/feed/MostViewedGalleryAgent.scala
@@ -1,14 +1,16 @@
package feed
+import com.gu.Box
import contentapi.ContentApiClient
import common._
import model.RelatedContentItem
+
import scala.concurrent.{ExecutionContext, Future}
import services.OphanApi
class MostViewedGalleryAgent(contentApiClient: ContentApiClient, ophanApi: OphanApi) extends Logging {
- private val agent = AkkaAgent[Seq[RelatedContentItem]](Nil)
+ private val agent = Box[Seq[RelatedContentItem]](Nil)
def mostViewedGalleries(): Seq[RelatedContentItem] = agent()
diff --git a/onward/app/feed/MostViewedVideoAgent.scala b/onward/app/feed/MostViewedVideoAgent.scala
index a5da5ab0db1a..aa014b7fdb94 100644
--- a/onward/app/feed/MostViewedVideoAgent.scala
+++ b/onward/app/feed/MostViewedVideoAgent.scala
@@ -1,5 +1,6 @@
package feed
+import com.gu.Box
import com.gu.contentapi.client
import common._
import common.editions.Uk
@@ -7,13 +8,14 @@ import contentapi.ContentApiClient
import model.{Video, _}
import play.api.libs.json._
import services.OphanApi
+
import scala.concurrent.{ExecutionContext, Future}
class MostViewedVideoAgent(contentApiClient: ContentApiClient, ophanApi: OphanApi) extends Logging {
case class QueryResult(id: String, count: Double, paths: Seq[String])
- private val agent = AkkaAgent[Seq[Video]](Nil)
+ private val agent = Box[Seq[Video]](Nil)
implicit val ophanQueryReads = Json.reads[QueryResult]
diff --git a/onward/test/MostPopularFeatureTest.scala b/onward/test/MostPopularFeatureTest.scala
index 391dceba020b..63515e1f92d3 100644
--- a/onward/test/MostPopularFeatureTest.scala
+++ b/onward/test/MostPopularFeatureTest.scala
@@ -1,7 +1,7 @@
package test
import org.scalatest.{DoNotDiscover, Matchers, GivenWhenThen, FeatureSpec}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class MostPopularFeatureTest extends FeatureSpec with GivenWhenThen with Matchers with ConfiguredTestSuite {
diff --git a/project/Dependencies.scala b/project/Dependencies.scala
index 6b41de41d853..a45a63054e26 100644
--- a/project/Dependencies.scala
+++ b/project/Dependencies.scala
@@ -3,15 +3,16 @@ package com.gu
import sbt._
object Dependencies {
- val identityLibVersion = "3.83"
+ val identityLibVersion = "3.84"
val awsVersion = "1.11.181"
val faciaVersion = "2.5.0"
val capiVersion = "11.40"
+ val dispatchVersion = "0.13.1"
val romeVersion = "1.0"
val jerseyVersion = "1.19.4"
val playJsonVersion = "2.6.3"
- val akkaAgent = "com.typesafe.akka" %% "akka-agent" % "2.3.4"
- val akkaContrib = "com.typesafe.akka" %% "akka-contrib" % "2.3.16"
+ val guBox = "com.gu" %% "box" % "0.1.0"
+ val akkaContrib = "com.typesafe.akka" %% "akka-contrib" % "2.5.6"
val apacheCommonsMath3 = "org.apache.commons" % "commons-math3" % "3.6.1"
val awsCore = "com.amazonaws" % "aws-java-sdk-core" % awsVersion
val awsCloudwatch = "com.amazonaws" % "aws-java-sdk-cloudwatch" % awsVersion
@@ -30,9 +31,9 @@ object Dependencies {
val cssParser = "net.sourceforge.cssparser" % "cssparser" % "0.9.23"
val contentApiClient = "com.gu" %% "content-api-client" % capiVersion
val dfpAxis = "com.google.api-ads" % "dfp-axis" % "3.7.0"
- val exactTargetClient = "com.gu" %% "exact-target-client" % "2.24"
+ val exactTargetClient = "com.gu" %% "exact-target-client" % "2.26"
val faciaFapiScalaClient = "com.gu" %% "fapi-client-play26" % faciaVersion
- val configMagic = "com.gu" %% "configuration-magic-core" % "1.3.0"
+ val configMagic = "com.gu" %% "configuration-magic-core" % "1.4.0"
val identityCookie = "com.gu.identity" %% "identity-cookie" % identityLibVersion
val identityModel = "com.gu.identity" %% "identity-model" % identityLibVersion
val identityRequest = "com.gu.identity" %% "identity-request" % identityLibVersion
@@ -40,18 +41,18 @@ object Dependencies {
val jodaTime = "joda-time" % "joda-time" % "2.9.9"
val jodaConvert = "org.joda" % "joda-convert" % "1.8.3"
val jSoup = "org.jsoup" % "jsoup" % "1.10.3"
- val liftJson = "net.liftweb" %% "lift-json" % "2.6-RC2"
+ val liftJson = "net.liftweb" %% "lift-json" % "3.1.1"
val json4s = "org.json4s" %% "json4s-native" % "3.5.3"
val macwire = "com.softwaremill.macwire" %% "macros" % "2.3.0" % "provided"
val mockito = "org.mockito" % "mockito-all" % "1.10.19" % Test
- val paClient = "com.gu" %% "pa-client" % "6.0.3"
+ val paClient = "com.gu" %% "pa-client" % "6.1.0"
val playGoogleAuth = "com.gu" %% "play-googleauth" % "0.7.0"
val quartzScheduler = "org.quartz-scheduler" % "quartz" % "2.2.3"
val redisClient = "net.debasishg" %% "redisclient" % "3.4"
val rome = "rome" % "rome" % romeVersion
val romeModules = "org.rometools" % "rome-modules" % romeVersion
val scalaCheck = "org.scalacheck" %% "scalacheck" % "1.13.5" % Test
- val scalajTime = "org.scalaj" % "scalaj-time_2.10.2" % "0.7"
+ val nScalaTime = "com.github.nscala-time" %% "nscala-time" % "2.18.0"
val scalaTest = "org.scalatest" %% "scalatest" % "3.0.4" % Test
val scalaTestPlus = "org.scalatestplus.play" %% "scalatestplus-play" % "3.1.1" % Test
val scalaUri = "com.netaporter" %% "scala-uri" % "0.4.16"
@@ -63,9 +64,9 @@ object Dependencies {
val libPhoneNumber = "com.googlecode.libphonenumber" % "libphonenumber" % "7.2.4"
val logback = "net.logstash.logback" % "logstash-logback-encoder" % "4.6"
val kinesisLogbackAppender = "com.gu" % "kinesis-logback-appender" % "1.4.0"
- val targetingClient = "com.gu" %% "targeting-client" % "0.14.0"
+ val targetingClient = "com.gu" %% "targeting-client-play26" % "0.14.1"
val scanamo = "com.gu" %% "scanamo" % "0.9.5"
- val enumeratumPlayJson = "com.beachape" %% "enumeratum-play-json" % "1.5.11"
+ val enumeratumPlayJson = "com.beachape" %% "enumeratum-play-json" % "1.5.12"
val commercialShared = "com.gu" %% "commercial-shared" % "6.1.2"
val playJson = "com.typesafe.play" %% "play-json" % playJsonVersion
val playJsonJoda = "com.typesafe.play" %% "play-json-joda" % playJsonVersion
diff --git a/project/ProjectSettings.scala b/project/ProjectSettings.scala
index 7e77fdaaabf5..f2d4f30bc375 100644
--- a/project/ProjectSettings.scala
+++ b/project/ProjectSettings.scala
@@ -21,12 +21,12 @@ object ProjectSettings {
maxErrors := 20,
javacOptions := Seq("-g","-encoding", "utf8"),
scalacOptions := Seq("-unchecked", "-deprecation", "-target:jvm-1.8",
- "-Xcheckinit", "-encoding", "utf8", "-feature", "-Yinline-warnings","-Xfatal-warnings"),
+ "-Xcheckinit", "-encoding", "utf8", "-feature","-Xfatal-warnings"),
publishArtifact in (Compile, packageDoc) := false,
sources in (Compile,doc) := Seq.empty,
doc in Compile := target.map(_ / "none").value,
incOptions := incOptions.value.withNameHashing(true),
- scalaVersion := "2.11.11",
+ scalaVersion := "2.12.4",
initialize := {
val _ = initialize.value
assert(sys.props("java.specification.version") == "1.8",
diff --git a/sport/app/cricket/jobs/CricketStatsJob.scala b/sport/app/cricket/jobs/CricketStatsJob.scala
index 6b0e627324ea..d86e81853b84 100644
--- a/sport/app/cricket/jobs/CricketStatsJob.scala
+++ b/sport/app/cricket/jobs/CricketStatsJob.scala
@@ -1,6 +1,7 @@
package jobs
-import common.{AkkaAgent, Logging}
+import com.gu.Box
+import common.Logging
import conf.cricketPa.{CricketFeedException, CricketTeam, CricketTeams, PaFeed}
import cricketModel.Match
import org.joda.time.{DateTimeZone, Days, LocalDate}
@@ -10,7 +11,7 @@ import scala.concurrent.ExecutionContext
class CricketStatsJob(paFeed: PaFeed) extends Logging {
- private val cricketStatsAgents = CricketTeams.teams.map(Team => (Team, AkkaAgent[Map[String, Match]](Map.empty)))
+ private val cricketStatsAgents = CricketTeams.teams.map(Team => (Team, Box[Map[String, Match]](Map.empty)))
private val dateFormatUTC = DateTimeFormat.forPattern("yyyy/MMM/dd").withZone(DateTimeZone.UTC)
diff --git a/sport/app/football/conf/context.scala b/sport/app/football/conf/context.scala
index 5645cbd2025e..4559b41a5c1a 100644
--- a/sport/app/football/conf/context.scala
+++ b/sport/app/football/conf/context.scala
@@ -63,7 +63,7 @@ class FootballLifecycle(
akkaAsync.after1s {
val competitionUpdate = competitionsService.refreshCompetitionData()
- competitionUpdate.onSuccess { case _ => competitionsService.competitionIds.foreach(competitionsService.refreshCompetitionAgent) }
+ competitionUpdate.foreach { _ => competitionsService.competitionIds.foreach(competitionsService.refreshCompetitionAgent) }
competitionsService.refreshMatchDay()
TeamMap.refresh()(contentApiClient, ec)
}
diff --git a/sport/app/football/controllers/MoreOnMatchController.scala b/sport/app/football/controllers/MoreOnMatchController.scala
index df353ff0ef5d..2ad4aef1eb7d 100644
--- a/sport/app/football/controllers/MoreOnMatchController.scala
+++ b/sport/app/football/controllers/MoreOnMatchController.scala
@@ -10,8 +10,8 @@ import model.Cached.{RevalidatableResult, WithoutRevalidationResult}
import model.{Cached, Content, ContentType}
import org.joda.time.LocalDate
import org.joda.time.format.DateTimeFormat
-import org.scala_tools.time.Imports
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports
+import com.github.nscala_time.time.Imports._
import pa.FootballMatch
import play.api.libs.json._
import play.api.mvc._
diff --git a/sport/app/football/feed/Competitions.scala b/sport/app/football/feed/Competitions.scala
index 7ab686fb0a06..fd5cb5c93d07 100644
--- a/sport/app/football/feed/Competitions.scala
+++ b/sport/app/football/feed/Competitions.scala
@@ -6,7 +6,7 @@ import java.util.Comparator
import model.{Competition, Table, TeamFixture, TeamNameBuilder}
import org.joda.time.{DateTimeComparator, LocalDate}
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
import pa._
import scala.collection.immutable
@@ -52,7 +52,7 @@ trait Competitions extends implicits.Football {
-(group.map(_.entries.length) getOrElse competition.leagueTable.length)
}).headOption
- lazy val matchDates = competitions.flatMap(_.matchDates).distinct.sorted
+ lazy val matchDates = competitions.flatMap(_.matchDates).distinct.sorted(localDateOrdering)
def nextMatchDates(startDate: LocalDate, numDays: Int): Seq[LocalDate] = matchDates.filter(_ >= startDate).take(numDays)
diff --git a/sport/app/football/feed/agent.scala b/sport/app/football/feed/agent.scala
index 0d49ad65014a..842751656168 100644
--- a/sport/app/football/feed/agent.scala
+++ b/sport/app/football/feed/agent.scala
@@ -1,5 +1,6 @@
package feed
+import com.gu.Box
import pa._
import conf.FootballClient
import org.joda.time.LocalDate
@@ -104,7 +105,7 @@ trait Results extends Logging with implicits.Collections {
class CompetitionAgent(val footballClient: FootballClient, val teamNameBuilder: TeamNameBuilder, _competition: Competition) extends Fixtures with Results with LeagueTables with implicits.Football {
- private lazy val agent = AkkaAgent(_competition)
+ private lazy val agent = Box(_competition)
def competition: Competition = agent()
diff --git a/sport/app/football/model/TeamMap.scala b/sport/app/football/model/TeamMap.scala
index a714eb878fd8..4147d5ceb472 100644
--- a/sport/app/football/model/TeamMap.scala
+++ b/sport/app/football/model/TeamMap.scala
@@ -3,6 +3,7 @@ package model
import common._
import contentapi.ContentApiClient
import _root_.feed.Competitions
+import com.gu.Box
import pa._
import scala.concurrent.ExecutionContext
@@ -15,7 +16,7 @@ case class Team(team: FootballTeam, tag: Option[Tag], shortName: Option[String])
object TeamMap extends Logging {
- val teamAgent = AkkaAgent(Map.empty[String, Tag])
+ val teamAgent = Box(Map.empty[String, Tag])
// teamId -> manually curated short name
val shortNames = Map(
diff --git a/sport/app/rugby/jobs/RugbyStatsJob.scala b/sport/app/rugby/jobs/RugbyStatsJob.scala
index e1f4dfccd971..187d56f54578 100644
--- a/sport/app/rugby/jobs/RugbyStatsJob.scala
+++ b/sport/app/rugby/jobs/RugbyStatsJob.scala
@@ -1,6 +1,7 @@
package rugby.jobs
-import common.{AkkaAgent, Logging}
+import com.gu.Box
+import common.Logging
import org.joda.time.format.{DateTimeFormat, DateTimeFormatter}
import rugby.model._
import rugby.feed.{MatchNavigation, OptaEvent, OptaFeed, RugbyOptaFeedException}
@@ -12,11 +13,11 @@ import scala.util.Success
class RugbyStatsJob(optaFeed: OptaFeed) extends Logging {
- protected val fixturesAndResultsMatches = AkkaAgent[Map[String, Match]](Map.empty)
- protected val matchNavContent = AkkaAgent[Map[String, MatchNavigation]](Map.empty)
- protected val pastScoreEvents = AkkaAgent[Map[String, Seq[ScoreEvent]]](Map.empty)
- protected val pastMatchesStat = AkkaAgent[Map[String, MatchStat]](Map.empty)
- protected val groupTables = AkkaAgent[Map[OptaEvent, Seq[GroupTable]]](Map.empty)
+ protected val fixturesAndResultsMatches = Box[Map[String, Match]](Map.empty)
+ protected val matchNavContent = Box[Map[String, MatchNavigation]](Map.empty)
+ protected val pastScoreEvents = Box[Map[String, Seq[ScoreEvent]]](Map.empty)
+ protected val pastMatchesStat = Box[Map[String, MatchStat]](Map.empty)
+ protected val groupTables = Box[Map[OptaEvent, Seq[GroupTable]]](Map.empty)
val dateFormat: DateTimeFormatter = DateTimeFormat.forPattern("yyyy/MM/dd")
diff --git a/sport/test/FixturesFeatureTest.scala b/sport/test/FixturesFeatureTest.scala
index 04d260dfcdc7..3a28956abffc 100644
--- a/sport/test/FixturesFeatureTest.scala
+++ b/sport/test/FixturesFeatureTest.scala
@@ -1,7 +1,7 @@
package test
import org.scalatest.{DoNotDiscover, FeatureSpec, GivenWhenThen, Matchers}
-import collection.JavaConversions._
+import collection.JavaConverters._
import tools.MatchListFeatureTools
@DoNotDiscover class FixturesFeatureTest extends FeatureSpec with GivenWhenThen with Matchers with MatchListFeatureTools with ConfiguredTestSuite {
@@ -46,7 +46,7 @@ import tools.MatchListFeatureTools
goTo("/football/fixtures/2012/oct/20") { browser =>
import browser._
Then("any links I click should be tracked")
- $("a").filter(link => Option(link.attribute("data-link-name")).isEmpty).foreach { link =>
+ $("a").asScala.filter(link => Option(link.attribute("data-link-name")).isEmpty).foreach { link =>
fail(s"Link with text ${link.text} has no data-link-name")
}
}
diff --git a/sport/test/FootballTestData.scala b/sport/test/FootballTestData.scala
index 415b876f965f..56fd46097678 100644
--- a/sport/test/FootballTestData.scala
+++ b/sport/test/FootballTestData.scala
@@ -4,7 +4,7 @@ import conf.FootballClient
import feed.CompetitionsService
import model.{Competition, Tag, TagProperties, TeamMap}
import org.joda.time.DateTime
-import org.scala_tools.time.Imports._
+import com.github.nscala_time.time.Imports._
import pa._
trait FootballTestData {
diff --git a/sport/test/MatchFeatureTest.scala b/sport/test/MatchFeatureTest.scala
index 211140fe2911..dd2ac3f54507 100644
--- a/sport/test/MatchFeatureTest.scala
+++ b/sport/test/MatchFeatureTest.scala
@@ -2,7 +2,7 @@ package test
import org.scalatest.{DoNotDiscover, FeatureSpec, GivenWhenThen, Matchers}
-import scala.collection.JavaConversions._
+import scala.collection.JavaConverters._
@DoNotDiscover class MatchFeatureTest
extends FeatureSpec
@@ -19,7 +19,7 @@ import scala.collection.JavaConversions._
goTo("/football/match/3834132") { browser =>
import browser._
- val teamsAndScore = $("h2").texts.map(_.replaceAll("\n", " "))
+ val teamsAndScore = $("h2").texts.asScala.map(_.replaceAll("\n", " "))
Then("I should see the home team score")
teamsAndScore should contain("Stoke 1")
@@ -54,7 +54,7 @@ import scala.collection.JavaConversions._
el(".team-list").text should include("Mame Diouf")
And("I should see the away team lineup")
- $(".team-list")(1).text should include("Gabriel Agbonlahor")
+ $(".team-list").asScala(1).text should include("Gabriel Agbonlahor")
}
}
}
diff --git a/sport/test/ResultsFeatureTest.scala b/sport/test/ResultsFeatureTest.scala
index f972748d35f7..c15f8e82c435 100644
--- a/sport/test/ResultsFeatureTest.scala
+++ b/sport/test/ResultsFeatureTest.scala
@@ -1,7 +1,7 @@
package test
import org.scalatest.{DoNotDiscover, FeatureSpec, GivenWhenThen, Matchers}
-import collection.JavaConversions._
+import collection.JavaConverters._
import tools.MatchListFeatureTools
@DoNotDiscover class ResultsFeatureTest extends FeatureSpec with GivenWhenThen with Matchers with MatchListFeatureTools with ConfiguredTestSuite {
@@ -35,7 +35,7 @@ import tools.MatchListFeatureTools
$(".football-team__form").size() should be(0)
Then("I should see match comments")
- $(".football-match__comments").texts.exists(_.contains("Bolton win 4-2 on penalties")) should equal(true)
+ $(".football-match__comments").texts.asScala.exists(_.contains("Bolton win 4-2 on penalties")) should equal(true)
}
}
@@ -82,7 +82,7 @@ import tools.MatchListFeatureTools
goTo("/football/results") { browser =>
import browser._
Then("any links I click should be tracked")
- $("a").filter(link => Option(link.attribute("data-link-name")).isEmpty).foreach { link =>
+ $("a").asScala.filter(link => Option(link.attribute("data-link-name")).isEmpty).foreach { link =>
fail(s"Link with text ${link.text} has no data-link-name")
}
}
diff --git a/sport/test/tools/MatchListFeatureTools.scala b/sport/test/tools/MatchListFeatureTools.scala
index 15893ab7da23..8df6eacc9ba9 100644
--- a/sport/test/tools/MatchListFeatureTools.scala
+++ b/sport/test/tools/MatchListFeatureTools.scala
@@ -3,23 +3,23 @@ package tools
import org.fluentlenium.core.domain.{FluentWebElement, FluentList}
import org.openqa.selenium.interactions.Actions
import play.api.test.TestBrowser
-import collection.JavaConversions._
+import collection.JavaConverters._
import org.scalatest.Matchers
trait MatchListFeatureTools extends Matchers {
protected def assertTeamWithScore(matches: FluentList[FluentWebElement], team: String, score: String): Unit = {
- val matchesStr = matches.map(matchEl => matchEl.find(".football-team__name").text + " - " + matchEl.find(".football-team__score").text)
+ val matchesStr = matches.asScala.map(matchEl => matchEl.find(".football-team__name").text + " - " + matchEl.find(".football-team__score").text)
assert(
- matches.exists { matchEl =>
+ matches.asScala.exists { matchEl =>
matchEl.find(".football-team__name").text == team && matchEl.find(".football-team__score").text == score
},
s"$matchesStr did not contain $team - $score"
)
}
protected def assertNotTeamWithScore(matches: FluentList[FluentWebElement], team: String, score: String): Unit = {
- val matchesStr = matches.map(matchEl => matchEl.find(".football-team__name").text + " - " + matchEl.find(".football-team__score").text)
+ val matchesStr = matches.asScala.map(matchEl => matchEl.find(".football-team__name").text + " - " + matchEl.find(".football-team__score").text)
assert(
- !matches.exists { matchEl =>
+ !matches.asScala.exists { matchEl =>
matchEl.find(".football-team__name").text == team && matchEl.find(".football-team__score").text == score
},
s"$matchesStr erroneously contained $team - $score"
@@ -27,9 +27,9 @@ trait MatchListFeatureTools extends Matchers {
}
protected def assertFixture(matches: FluentList[FluentWebElement], team1: String, team2: String): Unit = {
- val matchesStr = matches.map(matchEl => matchEl.find(".football-team__name").texts)
+ val matchesStr = matches.asScala.map(matchEl => matchEl.find(".football-team__name").texts)
assert(
- matches.exists { matchEl =>
+ matches.asScala.exists { matchEl =>
val texts = matchEl.find(".football-team__name").texts
texts.size should equal(2)
texts.contains(team1) && texts.contains(team2)
@@ -38,9 +38,9 @@ trait MatchListFeatureTools extends Matchers {
)
}
protected def assertNotFixture(matches: FluentList[FluentWebElement], team1: String, team2: String): Unit = {
- val matchesStr = matches.map(matchEl => matchEl.find(".football-team__name").texts)
+ val matchesStr = matches.asScala.map(matchEl => matchEl.find(".football-team__name").texts)
assert(
- !matches.exists { matchEl =>
+ !matches.asScala.exists { matchEl =>
val texts = matchEl.find(".football-team__name").texts
texts.size should equal(2)
texts.contains(team1) && texts.contains(team2)