/// <summary> /// Plate is starting to image. Returns an imaging identifier that will be /// embedded in the image names, and returned in ImagedPlate or null if /// the ImagingID is unavailable. /// </summary> public string ImagingPlate(Formulatrix.Integrations.ImagerLink.IRobot robot, string plateID, bool scheduled, DateTime dateToImage, DateTime dateImaged) { // Check arguments - do it up front to avoid possible inconsistencies later if (null == robot) { throw new System.NullReferenceException("robot must not be null"); } if (null == plateID) { throw new System.NullReferenceException("plateID must not be null"); } // Log the call to the method if (_log.IsInfoEnabled) { string msg = "Called " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", scheduled=\"" + scheduled + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; _log.Info(msg); } // Set the request imagingPlate request = new imagingPlate(); request.robot = global::OPPF.Utilities.Robot2Utils.createProxy(robot); request.plateID = plateID; request.scheduled = scheduled; //request.dateToImage = dateToImage.ToUniversalTime(); // Is this a fix for the date collision problem? if (scheduled) { request.dateToImage = dateToImage.ToUniversalTime(); } else { request.dateToImage = dateImaged.ToUniversalTime(); } request.dateImaged = dateImaged.ToUniversalTime(); // Make the call WSPlate wsPlate = WSPlateFactory.getWSPlate2(); imagingPlateResponse response = null; try { response = wsPlate.imagingPlate(request); } catch (Exception e) { string msg = "WSPlate.imagingPlate threw " + e.GetType() + ": " + e.Message + " - panic!"; msg = msg + "\nin " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; msg = msg + WSPlateFactory.SoapExceptionToString(e); _log.Fatal(msg, e); // Panic throw; } // If we got no response if (null == response) { string msg = "WSPlate.imagingPlate returned null - panic!"; msg = msg + "\nin " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; _log.Fatal(msg); // Panic throw new System.NullReferenceException(msg); } // If we got a null imagingID if (null == response.imagingPlateReturn) { string msg = "WSPlate.imagingPlate returned a null imagingID - panic!"; msg = msg + "\nin " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; _log.Fatal(msg); // Panic throw new System.NullReferenceException(msg); } // Return the imagingID return(response.imagingPlateReturn); }
/// <summary> /// Plate is starting to image. Returns an imaging identifier that will be /// embedded in the image names, and returned in ImagedPlate or null if /// the ImagingID is unavailable. /// </summary> string IImagingTaskProvider.ImagingPlate(Formulatrix.Integrations.ImagerLink.IRobot robot, string plateID, bool scheduled, DateTime dateToImage, DateTime dateImaged) { // Check arguments - do it up front to avoid possible inconsistencies later if (null == robot) { throw new System.NullReferenceException("robot must not be null"); } if (null == plateID) { throw new System.NullReferenceException("plateID must not be null"); } // Log the call to the method if (_log.IsDebugEnabled) { string msg = "Called " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; _log.Debug(msg); } // Set the request imagingPlate request = new imagingPlate(); request.robot = OPPF.Utilities.RobotUtils.createProxy(robot); request.plateID = plateID; request.scheduled = scheduled; request.dateToImage = dateToImage.ToUniversalTime(); request.dateImaged = dateImaged.ToUniversalTime(); // Make the call WSPlate wsPlate = new WSPlate(); imagingPlateResponse response = null; try { response = wsPlate.imagingPlate(request); } catch (Exception e) { string msg = "WSPlate.imagingPlate threw " + e.GetType() + ": " + e.Message + " - panic!"; msg = msg + "\nin " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; if (e is System.Web.Services.Protocols.SoapException) { System.Web.Services.Protocols.SoapException ee = (System.Web.Services.Protocols.SoapException)e; msg = msg + "\n\n" + ee.Detail.InnerXml; } _log.Fatal(msg, e); // Panic throw e; } // If we got no response if (null == response) { string msg = "WSPlate.imagingPlate returned null - panic!"; msg = msg + "\nin " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; _log.Fatal(msg); // Panic throw new System.NullReferenceException(msg); } // If we got a null imagingID if (null == response.imagingPlateReturn) { string msg = "WSPlate.imagingPlate returned a null imagingID - panic!"; msg = msg + "\nin " + this + ".ImagingPlate(robot=" + RobotUtils.iRobotToString(robot) + ", plateID=\"" + plateID + "\", dateToImage=" + dateToImage.ToUniversalTime().ToString() + " UTC, dateImaged=" + dateImaged.ToUniversalTime().ToString() + " UTC)"; _log.Fatal(msg); // Panic throw new System.NullReferenceException(msg); } // Return the imagingID return(response.imagingPlateReturn); }