Skip to content

Commit

Permalink
don't call google by default. Closes #244
Browse files Browse the repository at this point in the history
  • Loading branch information
F43nd1r committed Apr 22, 2021
1 parent 707d851 commit bcbe663
Show file tree
Hide file tree
Showing 7 changed files with 39 additions and 2 deletions.
5 changes: 5 additions & 0 deletions acrarium/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<!-- vaadin -->
<dependency>
<groupId>com.vaadin</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ import org.springframework.boot.autoconfigure.mustache.MustacheAutoConfiguration
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration
import org.springframework.boot.autoconfigure.web.servlet.error.ErrorMvcAutoConfiguration
import org.springframework.boot.builder.SpringApplicationBuilder
import org.springframework.boot.context.properties.ConfigurationPropertiesScan
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
import org.springframework.cache.annotation.EnableCaching
import org.springframework.context.annotation.Import
Expand All @@ -35,6 +36,7 @@ import org.springframework.context.annotation.PropertySources
PropertySource(value = ["file:\${user.home}/.acra/application.properties"], ignoreResourceNotFound = true))
@Import(MailSenderAutoConfiguration::class)
@EnableCaching
@ConfigurationPropertiesScan
class BackendApplication : SpringBootServletInitializer() {
override fun configure(builder: SpringApplicationBuilder): SpringApplicationBuilder = builder.sources(BackendApplication::class.java)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import com.faendir.acra.model.MailSettings
import com.faendir.acra.model.QApp
import com.faendir.acra.model.QAttachment
import com.faendir.acra.model.QBug
import com.faendir.acra.model.QDevice
import com.faendir.acra.model.QMailSettings
import com.faendir.acra.model.QReport
import com.faendir.acra.model.QStacktrace
Expand All @@ -44,6 +45,7 @@ import com.faendir.acra.util.tryOrNull
import com.querydsl.core.types.Expression
import com.querydsl.core.types.Predicate
import com.querydsl.core.types.dsl.ComparableExpressionBase
import com.querydsl.core.types.dsl.Expressions
import com.querydsl.jpa.JPAExpressions
import com.querydsl.jpa.impl.JPADeleteClause
import com.querydsl.jpa.impl.JPAQuery
Expand Down Expand Up @@ -428,4 +430,8 @@ class DataService(
devices.forEach { store(it) }
}

fun hasDeviceTableEntries() : Boolean {
return JPAQuery<Any>(entityManager).from(QDevice.device1).select(Expressions.ONE).fetchFirst() != null
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package com.faendir.acra.settings

import org.springframework.boot.context.properties.ConfigurationProperties
import org.springframework.boot.context.properties.ConstructorBinding
import org.springframework.context.annotation.Configuration

@ConstructorBinding
@ConfigurationProperties("acrarium")
class AcrariumConfiguration(val updateDeviceList: Boolean)
17 changes: 15 additions & 2 deletions acrarium/src/main/kotlin/com/faendir/acra/setup/DeviceSetup.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.faendir.acra.setup

import com.faendir.acra.model.Device
import com.faendir.acra.service.DataService
import com.faendir.acra.settings.AcrariumConfiguration
import com.univocity.parsers.common.processor.BeanListProcessor
import com.univocity.parsers.csv.CsvParser
import com.univocity.parsers.csv.CsvParserSettings
Expand All @@ -10,21 +11,33 @@ import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Profile
import org.springframework.context.event.ContextRefreshedEvent
import org.springframework.context.event.EventListener
import org.springframework.core.io.ClassPathResource
import org.springframework.stereotype.Component
import org.springframework.stereotype.Service
import org.springframework.util.ResourceUtils
import java.io.InputStream
import java.net.URL

@Profile("!test")
@Component
class DeviceSetup(private val dataService: DataService) {
class DeviceSetup(private val dataService: DataService, private val configuration: AcrariumConfiguration) {

@EventListener
fun onStartup(event: ContextRefreshedEvent) {
if(configuration.updateDeviceList) {
val url = URL("https://storage.googleapis.com/play_public/supported_devices.csv")
fillDeviceTable(url.openStream())
} else if(!dataService.hasDeviceTableEntries()) {
fillDeviceTable(ClassPathResource("devices.csv").inputStream)
}
}

private fun fillDeviceTable(stream: InputStream) {
val processor = BeanListProcessor(Device::class.java)
CsvParser(CsvParserSettings().apply {
isHeaderExtractionEnabled = true
setProcessor(processor)
}).parse(URL("https://storage.googleapis.com/play_public/supported_devices.csv").openStream().bufferedReader(Charsets.UTF_16LE))
}).parse(stream.bufferedReader(Charsets.UTF_16LE))
dataService.updateDeviceTable(processor.beans.filter { it.marketingName != null })
}
}
2 changes: 2 additions & 0 deletions acrarium/src/main/resources/default.properties
Original file line number Diff line number Diff line change
Expand Up @@ -42,3 +42,5 @@ spring.servlet.multipart.max-request-size=100MB
spring.servlet.multipart.max-file-size=100MB

spring.jpa.properties.hibernate.jdbc.batch_size=64

acrarium.update-device-list=false
Binary file added acrarium/src/main/resources/devices.csv
Binary file not shown.

0 comments on commit bcbe663

Please sign in to comment.