Skip to content
Snippets Groups Projects

Resolve "data overlays should provide entries for submaps in anchors"

4 files
+ 75
3
Compare changes
  • Side-by-side
  • Inline
Files
4
@@ -45,6 +45,7 @@ import lcsb.mapviewer.model.cache.UploadedFileEntry;
import lcsb.mapviewer.model.map.BioEntity;
import lcsb.mapviewer.model.map.MiriamData;
import lcsb.mapviewer.model.map.layout.ReferenceGenomeType;
import lcsb.mapviewer.model.map.model.ElementSubmodelConnection;
import lcsb.mapviewer.model.map.model.Model;
import lcsb.mapviewer.model.map.model.ModelData;
import lcsb.mapviewer.model.map.reaction.Reaction;
@@ -58,9 +59,11 @@ import lcsb.mapviewer.model.overlay.GenericDataOverlayEntry;
import lcsb.mapviewer.model.overlay.InvalidDataOverlayException;
import lcsb.mapviewer.model.user.User;
import lcsb.mapviewer.persist.dao.map.DataOverlayDao;
import lcsb.mapviewer.persist.dao.map.species.ElementProperty;
import lcsb.mapviewer.services.ObjectNotFoundException;
import lcsb.mapviewer.services.QueryException;
import lcsb.mapviewer.services.interfaces.IDataOverlayService;
import lcsb.mapviewer.services.interfaces.IElementService;
import lcsb.mapviewer.services.interfaces.IModelService;
import lcsb.mapviewer.services.interfaces.IUserService;
import lcsb.mapviewer.services.utils.EmailSender;
@@ -83,6 +86,9 @@ public class DataOverlayService implements IDataOverlayService {
@Autowired
private IModelService modelService;
@Autowired
private IElementService elementService;
private ExecutorService jobQueue;
public DataOverlayService() {
@@ -475,7 +481,7 @@ public class DataOverlayService implements IDataOverlayService {
@Override
public List<Pair<? extends BioEntity, DataOverlayEntry>> getBioEntitiesForDataOverlay(final String projectId, final int mapId,
final Integer overlayId, final boolean fetchLazy) throws QueryException {
final Integer overlayId, final boolean fetchLazy, final boolean includeIndirect) throws QueryException {
ModelData map = modelService.getModelByMapId(projectId, mapId);
getOverlayByIdNotNull(projectId, overlayId);
@@ -491,9 +497,34 @@ public class DataOverlayService implements IDataOverlayService {
}
result.stream().forEach(initializeLazy());
}
if (includeIndirect) {
Map<ElementProperty, List<? extends Object>> properties = new HashMap<>();
properties.put(ElementProperty.MAP, Arrays.asList(map));
properties.put(ElementProperty.SUBMAP_CONNECTION, Arrays.asList(Boolean.TRUE));
List<Element> elements = elementService.getElementsByFilter(properties, true);
for (Element element : elements) {
ElementSubmodelConnection connection = element.getSubmodel();
List<Pair<? extends BioEntity, DataOverlayEntry>> listForSubmap = new ArrayList<>();
listForSubmap.addAll(dataOverlayDao.getElementsForModels(overlayId, Arrays.asList(connection.getSubmodel())));
listForSubmap.addAll(dataOverlayDao.getReactionsForModels(overlayId, Arrays.asList(connection.getSubmodel())));
for (Pair<? extends BioEntity, DataOverlayEntry> pair : listForSubmap) {
result.add(new Pair<BioEntity, DataOverlayEntry>(element, pair.getRight()));
}
}
result.stream().forEach(initializeLazy());
}
return result;
}
@Override
public List<Pair<? extends BioEntity, DataOverlayEntry>> getBioEntitiesForDataOverlay(final String projectId, final int mapId,
final Integer overlayId, final boolean fetchLazy) throws QueryException {
return getBioEntitiesForDataOverlay(projectId, mapId, overlayId, fetchLazy, false);
}
@Override
public List<Pair<Element, DataOverlayEntry>> getFullElementForDataOverlay(final String projectId, final int mapId, final Integer id,
final int overlayId, final boolean fetchLazy) throws QueryException {
Loading