예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }