/* * Copyright (C) 2009-2011 University of Dundee & Open Microscopy Environment. * All rights reserved. * * Use is subject to license terms supplied in LICENSE.txt */ package ome.formats.utests; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import ome.conditions.ApiUsageException; import ome.formats.OMEROMetadataStore; import ome.model.acquisition.Detector; import ome.model.acquisition.DetectorSettings; import ome.model.acquisition.Dichroic; import ome.model.acquisition.Filter; import ome.model.acquisition.FilterSet; import ome.model.acquisition.Instrument; import ome.model.acquisition.Laser; import ome.model.acquisition.LightPath; import ome.model.acquisition.LightSettings; import ome.model.core.Channel; import ome.model.core.Image; import ome.model.core.LogicalChannel; import ome.model.core.Pixels; import ome.model.experiment.Experiment; import ome.model.screen.Plate; import ome.model.screen.Reagent; import ome.model.screen.Screen; import ome.model.screen.Well; @Test public class GenericReferenceTest { private OMEROMetadataStore store; private static final int IMAGE_INDEX = 0; private static final int CHANNEL_INDEX = 0; private static final int INSTRUMENT_INDEX = 0; private static final int EXPERIMENT_INDEX = 0; private static final int LASER_INDEX = 0; private static final int FILTER_INDEX = 0; private static final int FILTER_SET_INDEX = 0; private static final int DETECTOR_INDEX = 0; private static final int DICHROIC_INDEX = 0; private static final int SCREEN_INDEX = 0; private static final int PLATE_INDEX = 0; private static final int WELL_INDEX = 0; private static final int REAGENT_INDEX = 0; private Image image; private Pixels pixels; private Channel channel; private LogicalChannel logicalChannel; private Instrument instrument; private Experiment experiment; private Laser laser; private Filter filter; private FilterSet filterSet; private Detector detector; private Dichroic dichroic; private LightSettings lightSettings; private DetectorSettings detectorSettings; private Screen screen; private Plate plate; private Well well; private Reagent reagent; @BeforeMethod protected void setUp() throws Exception { store = new OMEROMetadataStore(); // Update Image image = new Image(); Map<String, Integer> imageIndexes = new LinkedHashMap<String, Integer>(); imageIndexes.put("imageIndex", IMAGE_INDEX); String imageLSID = "Image:0"; store.updateObject(imageLSID, image, imageIndexes); // Update Pixels pixels = new Pixels(); Map<String, Integer> pixelsIndexes = new LinkedHashMap<String, Integer>(); pixelsIndexes.put("imageIndex", IMAGE_INDEX); String pixelsLSID = "Pixels:0"; store.updateObject(pixelsLSID, pixels, pixelsIndexes); // Update Channel channel = new Channel(); Map<String, Integer> channelIndexes = new LinkedHashMap<String, Integer>(); channelIndexes.put("imageIndex", IMAGE_INDEX); channelIndexes.put("channelIndex", CHANNEL_INDEX); String channelLSID = "Channel:0:0"; store.updateObject(channelLSID, channel, channelIndexes); // Update LogicalChannel logicalChannel = new LogicalChannel(); Map<String, Integer> logicalChannelIndexes = new LinkedHashMap<String, Integer>(); logicalChannelIndexes.put("imageIndex", IMAGE_INDEX); logicalChannelIndexes.put("channelIndex", CHANNEL_INDEX); String logicalChannelLSID = "LogicalChannel:0:0"; store.updateObject(logicalChannelLSID, logicalChannel, logicalChannelIndexes); // Update Instrument instrument = new Instrument(); Map<String, Integer> instrumentIndexes = new LinkedHashMap<String, Integer>(); instrumentIndexes.put("instrumentIndex", INSTRUMENT_INDEX); String instrumentLSID = "Instrument:0"; store.updateObject(instrumentLSID, instrument, instrumentIndexes); // Update Experiment experiment = new Experiment(); Map<String, Integer> experimentIndexes = new LinkedHashMap<String, Integer>(); experimentIndexes.put("experimentIndex", EXPERIMENT_INDEX); String experimentLSID = "Experiment:0"; store.updateObject(experimentLSID, experiment, experimentIndexes); // Update Laser laser = new Laser(); Map<String, Integer> laserIndexes = new LinkedHashMap<String, Integer>(); laserIndexes.put("instrumentIndex", INSTRUMENT_INDEX); laserIndexes.put("lightSourceIndex", LASER_INDEX); String laserLSID = "Laser:0:0"; store.updateObject(laserLSID, laser, laserIndexes); // Update Filter filter = new Filter(); Map<String, Integer> filterIndexes = new LinkedHashMap<String, Integer>(); filterIndexes.put("instrumentIndex", INSTRUMENT_INDEX); filterIndexes.put("filterIndex", FILTER_INDEX); String filterLSID = "Filter:0:0"; store.updateObject(filterLSID, filter, filterIndexes); // Update FilterSet filterSet = new FilterSet(); Map<String, Integer> filterSetIndexes = new LinkedHashMap<String, Integer>(); filterSetIndexes.put("instrumentIndex", INSTRUMENT_INDEX); filterSetIndexes.put("filterSetIndex", FILTER_SET_INDEX); String filterSetLSID = "FilterSet:0:0"; store.updateObject(filterSetLSID, filterSet, filterSetIndexes); // Update Detector detector = new Detector(); Map<String, Integer> detectorIndexes = new LinkedHashMap<String, Integer>(); detectorIndexes.put("instrumentIndex", INSTRUMENT_INDEX); detectorIndexes.put("detectorIndex", DETECTOR_INDEX); String detectorLSID = "Detector:0:0"; store.updateObject(detectorLSID, detector, detectorIndexes); // Update Dichroic dichroic = new Dichroic(); Map<String, Integer> dichroicIndexes = new LinkedHashMap<String, Integer>(); dichroicIndexes.put("instrumentIndex", INSTRUMENT_INDEX); dichroicIndexes.put("dichroicIndex", DICHROIC_INDEX); String dichroicLSID = "Dichroic:0:0"; store.updateObject(dichroicLSID, dichroic, dichroicIndexes); // Update LightSettings lightSettings = new LightSettings(); Map<String, Integer> lightSettingsIndexes = new LinkedHashMap<String, Integer>(); lightSettingsIndexes.put("imageIndex", IMAGE_INDEX); lightSettingsIndexes.put("channelIndex", CHANNEL_INDEX); String lightSettingsLSID = "LightSourceSettings:0:0"; store.updateObject(lightSettingsLSID, lightSettings, lightSettingsIndexes); // Update DetectorSettings detectorSettings = new DetectorSettings(); Map<String, Integer> detectorSettingsIndexes = new LinkedHashMap<String, Integer>(); detectorSettingsIndexes.put("imageIndex", IMAGE_INDEX); detectorSettingsIndexes.put("channelIndex", CHANNEL_INDEX); String detectorSettingsLSID = "DetectorSettings:0:0"; store.updateObject(detectorSettingsLSID, detectorSettings, detectorSettingsIndexes); // Update Screen screen = new Screen(); Map<String, Integer> screenIndexes = new LinkedHashMap<String, Integer>(); screenIndexes.put("screenIndex", SCREEN_INDEX); store.updateObject("Screen:0", screen, screenIndexes); // Update Plate plate = new Plate(); Map<String, Integer> plateIndexes = new LinkedHashMap<String, Integer>(); plateIndexes.put("screenIndex", SCREEN_INDEX); plateIndexes.put("plateIndex", PLATE_INDEX); store.updateObject("Plate:0:0", plate, plateIndexes); // Update Well well = new Well(); Map<String, Integer> wellIndexes = new LinkedHashMap<String, Integer>(); wellIndexes.put("screenIndex", SCREEN_INDEX); wellIndexes.put("plateIndex", PLATE_INDEX); wellIndexes.put("wellIndex", WELL_INDEX); store.updateObject("Well:0:0:0", well, wellIndexes); // Update Reagent reagent = new Reagent(); Map<String, Integer> reagentIndexes = new LinkedHashMap<String, Integer>(); reagentIndexes.put("screenIndex", SCREEN_INDEX); reagentIndexes.put("reagentIndex", REAGENT_INDEX); store.updateObject("Reagent:0:0", reagent, reagentIndexes); } public void testImageInstrumentReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("Image:0", new String[] { "Instrument:0" }); store.updateReferences(referenceCache); Assert.assertEquals(image.getInstrument(), instrument); } public void testImageExperimentReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("Image:0", new String[] { "Experiment:0" }); store.updateReferences(referenceCache); Assert.assertEquals(image.getExperiment(), experiment); } public void testWellReagentReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("Well:0:0:0", new String[] { "Reagent:0:0" }); store.updateReferences(referenceCache); Assert.assertNotNull(well.linkedReagentList()); Assert.assertEquals(well.linkedReagentList().size(), 1); Assert.assertEquals(well.linkedReagentList().get(0), reagent); } public void testLaserLaserReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("Laser:0:0", new String[] { "Laser:0:0" }); store.updateReferences(referenceCache); Assert.assertEquals(laser.getPump(), laser); } public void testLightSettingsLightSourceReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("LightSourceSettings:0:0", new String[] { "Laser:0:0" }); store.updateReferences(referenceCache); Assert.assertEquals(lightSettings.getLightSource(), laser); } public void testDetectorSettingsDetectorReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("DetectorSettings:0:0", new String[] { "Detector:0:0" }); store.updateReferences(referenceCache); Assert.assertEquals(detectorSettings.getDetector(), detector); } public void testLogicalChannelFilterSetReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("LogicalChannel:0:0", new String[] { "FilterSet:0:0" }); store.updateReferences(referenceCache); Assert.assertEquals(logicalChannel.getFilterSet(), filterSet); } public void testLogicalChannelFilterReference() { try { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("LogicalChannel:0:0", new String[] { "Filter:0:0" }); store.updateReferences(referenceCache); Assert.fail("Did not throw ApiUsageException."); } catch (ApiUsageException e) { return; } } public void testLogicalChannelSecondaryEmissionFilterReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("LogicalChannel:0:0", new String[] { "Filter:0:0:OMERO_EMISSION_FILTER" }); store.updateReferences(referenceCache); LightPath lightPath = logicalChannel.getLightPath(); Assert.assertEquals(lightPath.sizeOfExcitationFilterLink(), 0); Assert.assertEquals(lightPath.sizeOfEmissionFilterLink(), 1); Assert.assertEquals( lightPath.linkedEmissionFilterIterator().next(), filter); } public void testLogicalChannelSecondaryExcitationFilterReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("LogicalChannel:0:0", new String[] { "Filter:0:0:OMERO_EXCITATION_FILTER" }); store.updateReferences(referenceCache); LightPath lightPath = logicalChannel.getLightPath(); Assert.assertEquals(lightPath.sizeOfExcitationFilterLink(), 1); Assert.assertEquals(lightPath.sizeOfEmissionFilterLink(), 0); Assert.assertEquals( lightPath.linkedExcitationFilterIterator().next(), filter); } public void testFilterSetDichroicReference() { Map<String, String[]> referenceCache = new HashMap<String, String[]>(); referenceCache.put("FilterSet:0:0", new String[] { "Dichroic:0:0" }); store.updateReferences(referenceCache); Assert.assertEquals(filterSet.getDichroic(), dichroic); } }