Changeset 4295


Ignore:
Timestamp:
08/07/08 13:47:58 (12 years ago)
Author:
allison
Message:

Working OMEROReader without reflected universe code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/loci/ome/io/OMEROReader.java

    r4265 r4295  
    2626import java.io.IOException; 
    2727import java.util.*; 
     28 
     29import ome.api.IAdmin; 
     30import ome.model.IObject; 
     31import ome.model.core.Pixels; 
     32import ome.parameters.Parameters; 
     33import ome.system.EventContext; 
     34import ome.system.Login; 
     35import ome.system.Server; 
     36import ome.system.ServiceFactory; 
    2837import loci.formats.*; 
    2938import loci.formats.meta.MetadataStore; 
     39 
     40//new imports 
     41import ome.api.IPixels; 
     42import ome.api.IQuery; 
     43import ome.api.RawPixelsStore; 
     44import pojos.ImageData; 
     45import pojos.PixelsData; 
    3046 
    3147/** 
     
    5066 
    5167  private static boolean noOMERO = false; 
    52   private static ReflectedUniverse r = createReflectedUniverse(); 
    53  
    54   private static ReflectedUniverse createReflectedUniverse() { 
    55     r = null; 
    56     try { 
    57       r = new ReflectedUniverse(); 
    58       r.exec("import ome.api.IQuery"); 
    59       r.exec("import ome.api.RawPixelsStore"); 
    60       r.exec("import ome.parameters.Parameters"); 
    61       r.exec("import ome.system.Login"); 
    62       r.exec("import ome.system.Server"); 
    63       r.exec("import ome.system.ServiceFactory"); 
    64       r.exec("import pojos.ImageData"); 
    65       r.exec("import pojos.PixelsData"); 
    66     } 
    67     catch (ReflectException e) { 
    68       noOMERO = true; 
    69       if (debug) LogTools.trace(e); 
    70     } 
    71     return r; 
    72   } 
     68 
    7369 
    7470  // -- Fields -- 
     
    7874  private String serverName; 
    7975  private String port; 
     76   
     77  private static ServiceFactory sf; 
     78  private static Login login; 
     79  private static Server server; 
     80  private static long id; 
     81  private static Parameters params; 
     82   
     83  private int x; 
     84  private int y; 
     85  private int z; 
     86  private int c; 
     87  private int t; 
     88  
     89  /** OMERO query service */ 
     90  private static IQuery         query; 
     91  /** OMERO raw pixels service */ 
     92  private static RawPixelsStore raw; 
     93 
    8094 
    8195  // -- Constructor -- 
     
    100114   * @see loci.formats.IFormatReader#openBytes(int, byte[], int, int, int, int) 
    101115   */ 
    102   public byte[] openBytes(int no, byte[] buf, int x, int y, int w, int h) 
    103     throws FormatException, IOException 
    104   { 
    105     FormatTools.assertId(currentId, true, 1); 
    106     FormatTools.checkPlaneNumber(this, no); 
    107     FormatTools.checkBufferSize(this, buf.length); 
    108  
    109     int[] zct = FormatTools.getZCTCoords(this, no); 
    110     try { 
    111       r.setVar("z", new Integer(zct[0])); 
    112       r.setVar("c", new Integer(zct[1])); 
    113       r.setVar("t", new Integer(zct[2])); 
    114       r.exec("plane = raw.getPlane(z, c, t)"); 
    115       int len = core.sizeX[0] * core.sizeY[0] * 
    116         FormatTools.getBytesPerPixel(core.pixelType[0]); 
    117       System.arraycopy((byte[]) r.getVar("plane"), 0, buf, 0, len); 
    118     } 
    119     catch (ReflectException e) { 
    120       throw new FormatException(e); 
    121     } 
    122     return buf; 
    123   } 
     116   
     117  public byte[] openBytes(int no, byte[] buf, int x1, int y1, int w1, int h1) 
     118  throws FormatException, IOException 
     119{ 
     120  FormatTools.assertId(currentId, true, 1); 
     121  FormatTools.checkPlaneNumber(this, no); 
     122  FormatTools.checkBufferSize(this, buf.length); 
     123 
     124  int[] zct = FormatTools.getZCTCoords(this, no); 
     125   
     126    z = new Integer(zct[0]); 
     127    c = new Integer(zct[1]); 
     128    t = new Integer(zct[2]); 
     129    byte[] plane = raw.getPlane(z, c, t); 
     130    int len = core.sizeX[0] * core.sizeY[0] * 
     131      FormatTools.getBytesPerPixel(core.pixelType[0]); 
     132    System.arraycopy((byte[]) plane, 0, buf, 0, len); 
     133 
     134  return buf; 
     135} 
     136   
     137   
    124138 
    125139  // -- IFormatHandler API methods -- 
     
    141155 
    142156    cred.isOMERO = true; 
    143  
    144     try { 
    145       r.setVar("user", cred.username); 
    146       r.setVar("pass", cred.password); 
    147       r.setVar("port", Integer.parseInt(cred.port)); 
    148       r.setVar("sname", cred.server); 
    149       r.setVar("id", cred.imageID); 
    150       r.setVar("idObj", new Long(cred.imageID)); 
    151  
    152       r.exec("login = new Login(user, pass)"); 
    153       r.exec("server = new Server(sname, port)"); 
    154       r.exec("sf = new ServiceFactory(server, login)"); 
    155       r.exec("query = sf.getQueryService()"); 
    156       r.exec("raw = sf.createRawPixelsStore()"); 
    157       r.exec("raw.setPixelsId(id)"); 
    158       r.setVar("q", "select p from Pixels as p " + 
    159         "left outer join fetch p.pixelsType as pt " + 
    160         "left outer join fetch p.channels as c " + 
    161         "left outer join fetch p.pixelsDimensions " + 
    162         "left outer join fetch p.image " + 
    163         "left outer join fetch c.colorComponent " + 
    164         "left outer join fetch c.logicalChannel as lc " + 
    165         "left outer join fetch c.statsInfo " + 
    166         "left outer join fetch lc.photometricInterpretation " + 
    167         "where p.id = :id"); 
    168  
    169       r.exec("params = new Parameters()"); 
    170       r.exec("params.addId(idObj)"); 
    171       r.exec("results = query.findByQuery(q, params)"); 
    172       r.exec("pix = new PixelsData(results)"); 
    173  
    174       r.exec("ptype = pix.getPixelType()"); 
    175       r.exec("x = pix.getSizeX()"); 
    176       r.exec("y = pix.getSizeY()"); 
    177       r.exec("z = pix.getSizeZ()"); 
    178       r.exec("c = pix.getSizeC()"); 
    179       r.exec("t = pix.getSizeT()"); 
    180  
    181       core.sizeX[0] = ((Integer) r.getVar("x")).intValue(); 
    182       core.sizeY[0] = ((Integer) r.getVar("y")).intValue(); 
    183       core.sizeZ[0] = ((Integer) r.getVar("z")).intValue(); 
    184       core.sizeC[0] = ((Integer) r.getVar("c")).intValue(); 
    185       core.sizeT[0] = ((Integer) r.getVar("t")).intValue(); 
    186       core.rgb[0] = false; 
    187       core.littleEndian[0] = false; 
    188       core.currentOrder[0] = "XYZCT"; 
    189       core.imageCount[0] = core.sizeZ[0] * core.sizeC[0] * core.sizeT[0]; 
    190       core.pixelType[0] = 
    191         FormatTools.pixelTypeFromString((String) r.getVar("ptype")); 
    192  
    193       r.exec("px = pix.getPixelSizeX()"); 
    194       r.exec("py = pix.getPixelSizeY()"); 
    195       r.exec("pz = pix.getPixelSizeZ()"); 
    196       double px = ((Double) r.getVar("px")).doubleValue(); 
    197       double py = ((Double) r.getVar("py")).doubleValue(); 
    198       double pz = ((Double) r.getVar("pz")).doubleValue(); 
    199  
    200       r.exec("image = pix.getImage()"); 
    201       r.exec("name = image.getName()"); 
    202       r.exec("description = image.getDescription()"); 
    203  
    204       String name = (String) r.getVar("name"); 
    205       String description = (String) r.getVar("description"); 
    206  
    207       MetadataStore store = getMetadataStore(); 
    208       store.setImageName(name, 0); 
    209       store.setImageDescription(description, 0); 
    210       MetadataTools.populatePixels(store, this); 
    211  
    212       store.setDimensionsPhysicalSizeX(new Float((float) px), 0, 0); 
    213       store.setDimensionsPhysicalSizeY(new Float((float) py), 0, 0); 
    214       store.setDimensionsPhysicalSizeZ(new Float((float) pz), 0, 0); 
    215     } 
    216     catch (ReflectException e) { 
    217       throw new FormatException(e); 
    218     } 
     157     
     158    username = cred.username; 
     159    password = cred.password; 
     160    port = cred.port; 
     161    Long idObj = new Long(cred.imageID); 
     162     
     163    login = new Login("allison","omero"); 
     164        server = new Server("http://localhost"); 
     165        sf = new ServiceFactory( login); 
     166 
     167        IAdmin admin = sf.getAdminService(); 
     168    EventContext ec = admin.getEventContext(); 
     169        idObj = ec.getCurrentUserId(); 
     170 
     171        params = new Parameters().addId(idObj); 
     172         
     173    query = sf.getQueryService(); 
     174    raw = sf.createRawPixelsStore(); 
     175    raw.setPixelsId((long)idObj); 
     176    String q = ( "select p from Pixels as p " + 
     177      "left outer join fetch p.pixelsType as pt " + 
     178      "left outer join fetch p.channels as c " + 
     179      "left outer join fetch p.pixelsDimensions " + 
     180      "left outer join fetch p.image " + 
     181      "left outer join fetch c.colorComponent " + 
     182      "left outer join fetch c.logicalChannel as lc " + 
     183      "left outer join fetch c.statsInfo " + 
     184      "left outer join fetch lc.photometricInterpretation " + 
     185      "where p.id = :id"); 
     186 
     187    params = new Parameters(); 
     188    params.addId(idObj); 
     189     
     190 
     191    Pixels results = query.findByQuery(q, params); 
     192    PixelsData pix = new PixelsData(results); 
     193   
     194 
     195    String ptype = pix.getPixelType(); 
     196    x = pix.getSizeX(); 
     197    y = pix.getSizeY(); 
     198    z = pix.getSizeZ(); 
     199    c = pix.getSizeC(); 
     200    t = pix.getSizeT(); 
     201 
     202    core.sizeX[0] = ((Integer) x).intValue(); 
     203    core.sizeY[0] = ((Integer) y).intValue(); 
     204    core.sizeZ[0] = ((Integer) z).intValue(); 
     205    core.sizeC[0] = ((Integer) c).intValue(); 
     206    core.sizeT[0] = ((Integer) t).intValue(); 
     207    core.rgb[0] = false; 
     208    core.littleEndian[0] = false; 
     209    core.currentOrder[0] = "XYZCT"; 
     210    core.imageCount[0] = core.sizeZ[0] * core.sizeC[0] * core.sizeT[0]; 
     211    core.pixelType[0] = 
     212      FormatTools.pixelTypeFromString((String) ptype); 
     213 
     214    double px = pix.getPixelSizeX(); 
     215    double py = pix.getPixelSizeY(); 
     216    double pz = pix.getPixelSizeZ(); 
     217 
     218 
     219    ImageData image = pix.getImage(); 
     220     
     221 
     222    String name = image.getName(); 
     223    String description = image.getDescription(); 
     224 
     225    MetadataStore store = getMetadataStore(); 
     226    store.setImageName(name, 0); 
     227    store.setImageDescription(description, 0); 
     228    MetadataTools.populatePixels(store, this); 
     229 
     230    store.setDimensionsPhysicalSizeX(new Float((float) px), 0, 0); 
     231    store.setDimensionsPhysicalSizeY(new Float((float) py), 0, 0); 
     232    store.setDimensionsPhysicalSizeZ(new Float((float) pz), 0, 0); 
     233 
    219234  } 
    220235 
Note: See TracChangeset for help on using the changeset viewer.