/* * $Id$ * * Copyright 2006 University of Dundee. All rights reserved. * Use is subject to license terms supplied in LICENSE.txt */ package ome.testing; import ome.model.core.Channel; import ome.model.core.Image; import ome.model.core.LogicalChannel; import ome.model.core.OriginalFile; import ome.model.core.Pixels; import ome.model.core.PlaneInfo; import ome.model.display.ChannelBinding; import ome.model.display.PlaneSlicingContext; import ome.model.display.QuantumDef; import ome.model.display.RenderingDef; import ome.model.display.Thumbnail; import ome.model.enums.AcquisitionMode; import ome.model.enums.DimensionOrder; import ome.model.enums.Family; import ome.model.enums.PhotometricInterpretation; import ome.model.enums.PixelsType; import ome.model.enums.RenderingModel; import ome.model.enums.UnitsLength; import ome.model.enums.UnitsTime; import ome.model.stats.StatsInfo; import ome.model.units.Length; import ome.model.units.Time; /** * these method serve as a both client and test data store. An object that has * no id is "new"; an object with an id is detached and can represent something * serialized from IQuery. * * NOTE: this is a bit dangerous, causing model builds to fail sometimes. where * else could it live? */ public class ObjectFactory { public static OriginalFile createFile() { OriginalFile ofile = new OriginalFile(); ofile.setName("testing"); ofile.setPath("/dev/null"); ofile.setHash("abc"); ofile.setSize(1L); ofile.setMimetype("text/plain"); return ofile; } public static Thumbnail createThumbnails(Pixels p) { Thumbnail t = new Thumbnail(); t.setMimeType("txt"); t.setSizeX(1); t.setSizeY(1); p.addThumbnail(t); return t; } public static Pixels createPixelGraph(Pixels example) { return createPixelGraphWithChannels(example, 1); } public static Channel createChannel(Channel example) { Channel ch = new Channel(); LogicalChannel lc = new LogicalChannel(); StatsInfo si = new StatsInfo(); PhotometricInterpretation pi = new PhotometricInterpretation("RGB"); lc.setPhotometricInterpretation(pi); si.setGlobalMax(0.0); si.setGlobalMin(0.0); ch.setStatsInfo(si); ch.setLogicalChannel(lc); return ch; } public static Pixels createPixelGraphWithChannels(Pixels example, int channelCount) { Pixels p = new Pixels(); PhotometricInterpretation pi = new PhotometricInterpretation(); AcquisitionMode mode = new AcquisitionMode(); PixelsType pt = new PixelsType(); DimensionOrder dO = new DimensionOrder(); Image i = new Image(); Channel[] c = new Channel[channelCount]; LogicalChannel[] lc = new LogicalChannel[channelCount]; StatsInfo[] si = new StatsInfo[channelCount]; PlaneInfo[] pl = new PlaneInfo[channelCount]; for (int w = 0; w < channelCount; w++) { c[w] = new Channel(); lc[w] = new LogicalChannel(); si[w] = new StatsInfo(); pl[w] = new PlaneInfo(); } if (example != null) { p.setId(example.getId()); p.setVersion(example.getVersion()); // everything else unloaded. pt.setId(example.getPixelsType().getId()); pt.unload(); dO.setId(example.getDimensionOrder().getId()); dO.unload(); i.setId(example.getImage().getId()); i.unload(); for (int w = 0; w < channelCount; w++) { c[w].setId(example.getChannel(w).getId()); c[w].unload(); } // Not needed but useful p.addPlaneInfo(example.iteratePlaneInfo().next()); (p.iteratePlaneInfo().next()).unload(); } else { mode.setValue("Wide-field"); pi.setValue("RGB"); pt.setValue("int8"); pt.setBitSize(8); dO.setValue("XYZTC"); for (int w = 0; w < channelCount; w++) { c[w].setPixels(p); lc[w].setPhotometricInterpretation(pi); // Not required but useful si[w].setGlobalMax(new Double(0.0)); si[w].setGlobalMin(new Double(0.0)); c[w].setLogicalChannel(lc[w]); c[w].setStatsInfo(si[w]); pl[w].setTheC(new Integer(w)); pl[w].setTheZ(new Integer(0)); pl[w].setTheT(new Integer(0)); Time deltaT = new Time(0.0, UnitsTime.SECOND); pl[w].setDeltaT(deltaT); p.addPlaneInfo(pl[w]); } i.setName("test"); i.addPixels(p); } Length mm1 = new Length(1.0, UnitsLength.MILLIMETER); p.setSizeX(new Integer(1)); p.setSizeY(new Integer(1)); p.setSizeZ(new Integer(1)); p.setSizeC(new Integer(1)); p.setSizeT(new Integer(1)); p.setPhysicalSizeX(mm1); p.setPhysicalSizeY(mm1); p.setPhysicalSizeZ(mm1); p.setSha1("09bc7b2dcc9a510f4ab3a40c47f7a4cb77954356"); // "pixels" p.setPixelsType(pt); p.setDimensionOrder(dO); p.setImage(i); for (int w = 0; w < channelCount; w++) { p.addChannel(c[w]); } return p; } public static ChannelBinding createChannelBinding() { // Prereqs for binding Family family = new Family(); family.setValue("linear"); ChannelBinding binding = new ChannelBinding(); binding.setActive(Boolean.FALSE); binding.setCoefficient(new Double(1)); binding.setAlpha(new Integer(1)); binding.setBlue(new Integer(1)); binding.setGreen(new Integer(1)); binding.setRed(new Integer(1)); binding.setFamily(family); binding.setInputEnd(new Double(1.0)); binding.setInputStart(new Double(1.0)); binding.setNoiseReduction(Boolean.FALSE); return binding; } public static RenderingDef createRenderingDef() { // Prereqs for RenderingDef RenderingModel model = new RenderingModel(); model.setValue("rgb"); QuantumDef qdef = new QuantumDef(); qdef.setBitResolution(new Integer(1)); qdef.setCdEnd(new Integer(1)); qdef.setCdStart(new Integer(1)); RenderingDef def = new RenderingDef(); def.setDefaultT(new Integer(1)); def.setDefaultZ(new Integer(1)); def.setModel(model); def.setPixels(ObjectFactory.createPixelGraph(null)); def.setQuantization(qdef); return def; } public static PlaneSlicingContext createPlaneSlicingContext() { PlaneSlicingContext enhancement = new PlaneSlicingContext(); enhancement.setConstant(Boolean.FALSE); enhancement.setLowerLimit(new Integer(1)); enhancement.setPlanePrevious(new Integer(1)); enhancement.setPlaneSelected(new Integer(1)); enhancement.setUpperLimit(new Integer(1)); return enhancement; } }