Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Pivotal ID # 177040448: Store request as plain json #336

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@ class FileSystemService(
ftpLinksService.cleanFtpFolder(submission.relPath)
val processedSubmission = filesService.persistSubmissionFiles(submission, mode)
if (submission.released) ftpLinksService.createFtpFolder(submission.relPath)

return processedSubmission
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.annotation.Import
import uk.ac.ebi.extended.serialization.service.ExtSerializationService

@Configuration
@Import(MongoDbServicesConfig::class)
Expand All @@ -19,6 +20,7 @@ class ExternalConfig {
@Bean
internal fun submissionRequestService(
submissionDocDataRepository: SubmissionDocDataRepository,
serializationService: ExtSerializationService,
submissionRequestDocDataRepository: SubmissionRequestDocDataRepository,
submissionDraftDocDataRepository: SubmissionDraftDocDataRepository,
systemService: FileSystemService
Expand All @@ -27,6 +29,7 @@ class ExternalConfig {
submissionDocDataRepository,
submissionRequestDocDataRepository,
submissionDraftDocDataRepository,
serializationService,
systemService
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package ac.uk.ebi.biostd.persistence.doc.integration

import ac.uk.ebi.biostd.persistence.common.service.StatsDataService
import ac.uk.ebi.biostd.persistence.common.service.ProjectDataService
import ac.uk.ebi.biostd.persistence.common.service.StatsDataService
import ac.uk.ebi.biostd.persistence.common.service.SubmissionQueryService
import ac.uk.ebi.biostd.persistence.doc.db.data.SubmissionDocDataRepository
import ac.uk.ebi.biostd.persistence.doc.db.data.SubmissionDraftDocDataRepository
import ac.uk.ebi.biostd.persistence.doc.db.data.SubmissionRequestDocDataRepository
import ac.uk.ebi.biostd.persistence.doc.db.data.SubmissionStatsDataRepository
import ac.uk.ebi.biostd.persistence.doc.mapping.to.ToExtSubmissionMapper
import ac.uk.ebi.biostd.persistence.doc.service.StatsMongoDataService
import ac.uk.ebi.biostd.persistence.doc.service.ProjectMongoDataService
import ac.uk.ebi.biostd.persistence.doc.service.StatsMongoDataService
import ac.uk.ebi.biostd.persistence.doc.service.SubmissionDraftMongoService
import ac.uk.ebi.biostd.persistence.doc.service.SubmissionMongoMetaQueryService
import ac.uk.ebi.biostd.persistence.doc.service.SubmissionMongoQueryService
Expand All @@ -27,10 +27,12 @@ class MongoDbServicesConfig {
internal fun submissionQueryService(
submissionDocDataRepository: SubmissionDocDataRepository,
submissionRequestDocDataRepository: SubmissionRequestDocDataRepository,
serializationService: ExtSerializationService,
toExtSubmissionMapper: ToExtSubmissionMapper
): SubmissionQueryService = SubmissionMongoQueryService(
submissionDocDataRepository,
submissionRequestDocDataRepository,
serializationService,
toExtSubmissionMapper)

@Bean
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package ac.uk.ebi.biostd.persistence.doc.model

import com.mongodb.DBObject
import org.springframework.data.annotation.Id
import org.springframework.data.mongodb.core.mapping.Document

Expand All @@ -9,5 +10,5 @@ data class SubmissionRequest(
val id: String? = null,
val accNo: String,
val version: Int,
val submission: DocSubmission
val submission: DBObject
)
Original file line number Diff line number Diff line change
Expand Up @@ -9,16 +9,19 @@ import ac.uk.ebi.biostd.persistence.doc.db.data.SubmissionRequestDocDataReposito
import ac.uk.ebi.biostd.persistence.doc.mapping.from.toDocSubmission
import ac.uk.ebi.biostd.persistence.doc.model.DocProcessingStatus.PROCESSED
import ac.uk.ebi.biostd.persistence.doc.model.SubmissionRequest
import com.mongodb.BasicDBObject
import ebi.ac.uk.extended.model.ExtProcessingStatus.PROCESSING
import ebi.ac.uk.extended.model.ExtProcessingStatus.REQUESTED
import ebi.ac.uk.extended.model.ExtSubmission
import ebi.ac.uk.extended.model.FileMode.MOVE
import uk.ac.ebi.extended.serialization.service.ExtSerializationService
import kotlin.math.absoluteValue

internal class SubmissionMongoPersistenceService(
private val subDataRepository: SubmissionDocDataRepository,
private val submissionRequestDocDataRepository: SubmissionRequestDocDataRepository,
private val draftDocDataRepository: SubmissionDraftDocDataRepository,
private val serializationService: ExtSerializationService,
private val systemService: FileSystemService
) : SubmissionRequestService {
override fun saveAndProcessSubmissionRequest(saveRequest: SaveSubmissionRequest): ExtSubmission {
Expand All @@ -29,9 +32,7 @@ internal class SubmissionMongoPersistenceService(
override fun saveSubmissionRequest(saveRequest: SaveSubmissionRequest): ExtSubmission {
val submission = saveRequest.submission
val newVersion = submission.copy(version = getNextVersion(submission.accNo), status = REQUESTED)

submissionRequestDocDataRepository.saveRequest(asRequest(newVersion))

return newVersion
}

Expand All @@ -43,7 +44,7 @@ internal class SubmissionMongoPersistenceService(
private fun asRequest(submission: ExtSubmission) = SubmissionRequest(
accNo = submission.accNo,
version = submission.version,
submission = submission.toDocSubmission()
submission = BasicDBObject.parse(serializationService.serialize(submission))
)

override fun processSubmission(saveRequest: SaveSubmissionRequest): ExtSubmission {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,12 @@ import ac.uk.ebi.biostd.persistence.doc.mapping.to.ToExtSubmissionMapper
import ac.uk.ebi.biostd.persistence.doc.model.asBasicSubmission
import ebi.ac.uk.extended.model.ExtSubmission
import org.springframework.data.domain.Page
import uk.ac.ebi.extended.serialization.service.ExtSerializationService

internal class SubmissionMongoQueryService(
private val submissionRepo: SubmissionDocDataRepository,
private val requestRepository: SubmissionRequestDocDataRepository,
private val serializationService: ExtSerializationService,
private val toExtSubmissionMapper: ToExtSubmissionMapper
) : SubmissionQueryService {
override fun existByAccNo(accNo: String): Boolean = submissionRepo.existsByAccNo(accNo)
Expand Down Expand Up @@ -42,7 +44,7 @@ internal class SubmissionMongoQueryService(
}

override fun getRequest(accNo: String, version: Int): ExtSubmission {
val submission = requestRepository.getByAccNoAndVersion(accNo, version).submission
return toExtSubmissionMapper.toExtSubmission(submission)
val submission = requestRepository.getByAccNoAndVersion(accNo, version)
return serializationService.deserialize(submission.submission.toString())
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -23,20 +23,27 @@ import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith
import uk.ac.ebi.extended.serialization.service.ExtSerializationService

@ExtendWith(MockKExtension::class)
class SubmissionMongoPersistenceServiceTest(
@MockK private val systemService: FileSystemService,
@MockK private val dataRepository: SubmissionDocDataRepository,
@MockK private val draftRepository: SubmissionDraftDocDataRepository,
@MockK private val submissionRequestRepository: SubmissionRequestDocDataRepository
@MockK private val submissionRequestRepository: SubmissionRequestDocDataRepository,
@MockK private val serializationService: ExtSerializationService
) {
private val submission = extSubmission()
private val docSubmission = slot<DocSubmission>()
private val persistedSubmissionSlot = slot<ExtSubmission>()
private val submissionSlot = slot<ExtSubmission>()
private val submissionRequestSlot = slot<SubmissionRequest>()
private val testInstance =
SubmissionMongoPersistenceService(dataRepository, submissionRequestRepository, draftRepository, systemService)

private val testInstance = SubmissionMongoPersistenceService(
dataRepository,
submissionRequestRepository,
draftRepository,
serializationService,
systemService)

@AfterEach
fun afterEach() = clearAllMocks()
Expand All @@ -45,7 +52,8 @@ class SubmissionMongoPersistenceServiceTest(
fun beforeEach() {
setUpDataRepository()
setUpDraftRepository()
every { systemService.persistSubmissionFiles(capture(persistedSubmissionSlot), MOVE) } returns submission
every { serializationService.serialize(capture(submissionSlot)) } returns "{}"
every { systemService.persistSubmissionFiles(capture(submissionSlot), MOVE) } returns submission
every { submissionRequestRepository.saveRequest(capture(submissionRequestSlot)) } answers { nothing }
}

Expand All @@ -68,7 +76,7 @@ class SubmissionMongoPersistenceServiceTest(
}

private fun assertPersistedSubmission() {
val persistedSubmission = persistedSubmissionSlot.captured
val persistedSubmission = submissionSlot.captured
assertThat(persistedSubmission.version).isEqualTo(2)
assertThat(persistedSubmission.status).isEqualTo(REQUESTED)
verify(exactly = 1) { systemService.persistSubmissionFiles(persistedSubmission, MOVE) }
Expand Down Expand Up @@ -97,8 +105,6 @@ class SubmissionMongoPersistenceServiceTest(

private fun setUpDraftRepository() {
every { draftRepository.deleteByUserIdAndKey(submission.owner, submission.accNo) } answers { nothing }
every {
draftRepository.deleteByUserIdAndKey(submission.submitter, submission.accNo)
} answers { nothing }
every { draftRepository.deleteByUserIdAndKey(submission.submitter, submission.accNo) } answers { nothing }
}
}