@@ -25,6 +25,12 @@ import com.scalableminds.webknossos.datastore.services.uploading._
2525import com .scalableminds .webknossos .datastore .storage .DataVaultService
2626import com .scalableminds .util .tools .Box .tryo
2727import com .scalableminds .util .tools .{Box , Empty , Failure , Full }
28+ import com .scalableminds .webknossos .datastore .services .connectome .{
29+ ByAgglomerateIdsRequest ,
30+ BySynapseIdsRequest ,
31+ ConnectomeFileService ,
32+ SynapticPartnerDirection
33+ }
2834import com .scalableminds .webknossos .datastore .services .mapping .AgglomerateService
2935import play .api .data .Form
3036import play .api .data .Forms .{longNumber , nonEmptyText , number , tuple }
@@ -452,14 +458,16 @@ class DataSourceController @Inject()(
452458 meshFileService.clearCache(dataSourceId, layerName)
453459 val closedSegmentIndexFileHandleCount =
454460 segmentIndexFileService.clearCache(dataSourceId, layerName)
461+ val closedConnectomeFileHandleCount =
462+ connectomeFileService.clearCache(dataSourceId, layerName)
455463 val reloadedDataSource : InboxDataSource = dataSourceService.dataSourceFromDir(
456464 dataSourceService.dataBaseDir.resolve(organizationId).resolve(datasetDirectoryName),
457465 organizationId)
458466 datasetErrorLoggingService.clearForDataset(organizationId, datasetDirectoryName)
459467 val clearedVaultCacheEntriesOpt = dataSourceService.invalidateVaultCache(reloadedDataSource, layerName)
460468 clearedVaultCacheEntriesOpt.foreach { clearedVaultCacheEntries =>
461469 logger.info(
462- s " Cleared caches for ${layerName.map(l => s " layer ' $l' of " ).getOrElse(" " )}dataset $organizationId/ $datasetDirectoryName: closed $closedAgglomerateFileHandleCount agglomerate file handles, $closedMeshFileHandleCount mesh file handles, $closedSegmentIndexFileHandleCount segment index file handles, removed $clearedBucketProviderCount bucketProviders, $clearedVaultCacheEntries vault cache entries and $removedChunksCount image chunk cache entries. " )
470+ s " Cleared caches for ${layerName.map(l => s " layer ' $l' of " ).getOrElse(" " )}dataset $organizationId/ $datasetDirectoryName: closed $closedAgglomerateFileHandleCount agglomerate file handles, $closedMeshFileHandleCount mesh file handles, $closedSegmentIndexFileHandleCount segment index file handles, $closedConnectomeFileHandleCount connectome file handles, removed $clearedBucketProviderCount bucketProviders, $clearedVaultCacheEntries vault cache entries and $removedChunksCount image chunk cache entries. " )
463471 }
464472 reloadedDataSource
465473 }
@@ -510,21 +518,12 @@ class DataSourceController @Inject()(
510518 Action .async { implicit request =>
511519 accessTokenService.validateAccessFromTokenContext(
512520 UserAccessRequest .readDataSources(DataSourceId (datasetDirectoryName, organizationId))) {
513- val connectomeFileNames =
514- connectomeFileService.exploreConnectomeFiles(organizationId, datasetDirectoryName, dataLayerName)
515521 for {
516- mappingNames <- Fox .serialCombined(connectomeFileNames.toList) { connectomeFileName =>
517- val path =
518- connectomeFileService.connectomeFilePath(organizationId,
519- datasetDirectoryName,
520- dataLayerName,
521- connectomeFileName)
522- connectomeFileService.mappingNameForConnectomeFile(path)
523- }
524- connectomesWithMappings = connectomeFileNames
525- .zip(mappingNames)
526- .map(tuple => ConnectomeFileNameWithMappingName (tuple._1, tuple._2))
527- } yield Ok (Json .toJson(connectomesWithMappings))
522+ (dataSource, dataLayer) <- dataSourceRepository.getDataSourceAndDataLayer(organizationId,
523+ datasetDirectoryName,
524+ dataLayerName)
525+ connectomeFileInfos <- connectomeFileService.listConnectomeFiles(dataSource.id, dataLayer)
526+ } yield Ok (Json .toJson(connectomeFileInfos))
528527 }
529528 }
530529
@@ -535,10 +534,13 @@ class DataSourceController @Inject()(
535534 accessTokenService.validateAccessFromTokenContext(
536535 UserAccessRequest .readDataSources(DataSourceId (datasetDirectoryName, organizationId))) {
537536 for {
538- meshFilePath <- Fox .successful(
539- connectomeFileService
540- .connectomeFilePath(organizationId, datasetDirectoryName, dataLayerName, request.body.connectomeFile))
541- synapses <- connectomeFileService.synapsesForAgglomerates(meshFilePath, request.body.agglomerateIds)
537+ (dataSource, dataLayer) <- dataSourceRepository.getDataSourceAndDataLayer(organizationId,
538+ datasetDirectoryName,
539+ dataLayerName)
540+ meshFileKey <- connectomeFileService.lookUpConnectomeFileKey(dataSource.id,
541+ dataLayer,
542+ request.body.connectomeFile)
543+ synapses <- connectomeFileService.synapsesForAgglomerates(meshFileKey, request.body.agglomerateIds)
542544 } yield Ok (Json .toJson(synapses))
543545 }
544546 }
@@ -551,12 +553,18 @@ class DataSourceController @Inject()(
551553 accessTokenService.validateAccessFromTokenContext(
552554 UserAccessRequest .readDataSources(DataSourceId (datasetDirectoryName, organizationId))) {
553555 for {
554- meshFilePath <- Fox .successful(
555- connectomeFileService
556- .connectomeFilePath(organizationId, datasetDirectoryName, dataLayerName, request.body.connectomeFile))
557- agglomerateIds <- connectomeFileService.synapticPartnerForSynapses(meshFilePath,
556+ directionValidated <- SynapticPartnerDirection
557+ .fromString(direction)
558+ .toFox ?~> " could not parse synaptic partner direction"
559+ (dataSource, dataLayer) <- dataSourceRepository.getDataSourceAndDataLayer(organizationId,
560+ datasetDirectoryName,
561+ dataLayerName)
562+ meshFileKey <- connectomeFileService.lookUpConnectomeFileKey(dataSource.id,
563+ dataLayer,
564+ request.body.connectomeFile)
565+ agglomerateIds <- connectomeFileService.synapticPartnerForSynapses(meshFileKey,
558566 request.body.synapseIds,
559- direction )
567+ directionValidated )
560568 } yield Ok (Json .toJson(agglomerateIds))
561569 }
562570 }
@@ -568,10 +576,13 @@ class DataSourceController @Inject()(
568576 accessTokenService.validateAccessFromTokenContext(
569577 UserAccessRequest .readDataSources(DataSourceId (datasetDirectoryName, organizationId))) {
570578 for {
571- meshFilePath <- Fox .successful(
572- connectomeFileService
573- .connectomeFilePath(organizationId, datasetDirectoryName, dataLayerName, request.body.connectomeFile))
574- synapsePositions <- connectomeFileService.positionsForSynapses(meshFilePath, request.body.synapseIds)
579+ (dataSource, dataLayer) <- dataSourceRepository.getDataSourceAndDataLayer(organizationId,
580+ datasetDirectoryName,
581+ dataLayerName)
582+ meshFileKey <- connectomeFileService.lookUpConnectomeFileKey(dataSource.id,
583+ dataLayer,
584+ request.body.connectomeFile)
585+ synapsePositions <- connectomeFileService.positionsForSynapses(meshFileKey, request.body.synapseIds)
575586 } yield Ok (Json .toJson(synapsePositions))
576587 }
577588 }
@@ -583,10 +594,13 @@ class DataSourceController @Inject()(
583594 accessTokenService.validateAccessFromTokenContext(
584595 UserAccessRequest .readDataSources(DataSourceId (datasetDirectoryName, organizationId))) {
585596 for {
586- meshFilePath <- Fox .successful(
587- connectomeFileService
588- .connectomeFilePath(organizationId, datasetDirectoryName, dataLayerName, request.body.connectomeFile))
589- synapseTypes <- connectomeFileService.typesForSynapses(meshFilePath, request.body.synapseIds)
597+ (dataSource, dataLayer) <- dataSourceRepository.getDataSourceAndDataLayer(organizationId,
598+ datasetDirectoryName,
599+ dataLayerName)
600+ meshFileKey <- connectomeFileService.lookUpConnectomeFileKey(dataSource.id,
601+ dataLayer,
602+ request.body.connectomeFile)
603+ synapseTypes <- connectomeFileService.typesForSynapses(meshFileKey, request.body.synapseIds)
590604 } yield Ok (Json .toJson(synapseTypes))
591605 }
592606 }
0 commit comments