예제 #1
0
        private static ArgosPlatform GetPlatform(string platformId)
        {
            platformId = platformId.Normalize();
            if (platformId.StartsWith("/a:", StringComparison.OrdinalIgnoreCase))
            {
                platformId = platformId.Substring(3);
            }
            if (platformId.StartsWith("/argos:", StringComparison.OrdinalIgnoreCase))
            {
                platformId = platformId.Substring(7);
            }
            if (platformId.StartsWith("/p:", StringComparison.OrdinalIgnoreCase))
            {
                platformId = platformId.Substring(3);
            }
            if (platformId.StartsWith("/platform:", StringComparison.OrdinalIgnoreCase))
            {
                platformId = platformId.Substring(10);
            }
            var database = new AnimalMovementDataContext();

            return(database.ArgosPlatforms.FirstOrDefault(p => p.PlatformId == platformId));
        }
예제 #2
0
        private static CollarFile GetCollarFile(string fileId)
        {
            fileId = fileId.Normalize();
            if (fileId.StartsWith("/f:", StringComparison.OrdinalIgnoreCase))
            {
                fileId = fileId.Substring(3);
            }
            if (fileId.StartsWith("/file:", StringComparison.OrdinalIgnoreCase))
            {
                fileId = fileId.Substring(6);
            }
            int id;

            if (!Int32.TryParse(fileId, out id) || id < 1)
            {
                return(null);
            }
            var database = new AnimalMovementDataContext();

            return((from collar in database.CollarFiles
                    where (collar.LookupCollarFileFormat.Code == 'H' || collar.LookupCollarFileFormat.ArgosData == 'Y') && collar.FileId == id
                    select collar).FirstOrDefault());
        }
예제 #3
0
        /// <summary>
        /// Loads and logs the download data for an Argos Platform
        /// </summary>
        /// <param name="platform">The Argos PlatformId that this data is for</param>
        /// <param name="days">The number of days that are included in this data set</param>
        /// <param name="results">The data returned from the Argos Web Server (may be null)</param>
        /// <param name="errors">Any errors returned by the Argos Web Server (may be null)</param>
        /// <returns>Returns the newly created collar file, complete with database calculated fields</returns>
        /// <remarks>Only one of results and errors can be non-null.</remarks>
        internal static CollarFile LoadPlatfrom(ArgosPlatform platform, int days,
                                                ArgosWebSite.ArgosWebResult results, string errors)
        {
            //if results is null, then errors should be non-null (database rule, insert will fail if false)
            CollarFile file     = null;
            var        database = new AnimalMovementDataContext();

            //Linq to SQL wraps the changes in a transaction so file will not be created if log cannot be written
            if (results != null)
            {
                file = new CollarFile
                {
                    Owner    = platform.ArgosProgram.Manager,
                    FileName = "platform_" + platform.PlatformId + "_" + DateTime.Now.ToString("yyyyMMdd") + ".aws",
                    Status   = 'A',
                    Contents = results.ToBytes()
                };
                database.CollarFiles.InsertOnSubmit(file);
            }
            //Linq to SQL does not return the PK (timestamp) of the new ArgosDownload object, so don't use it in this data context
            var log = new ArgosDownload
            {
                PlatformId   = platform.PlatformId,
                CollarFile   = file,
                Days         = days,
                ErrorMessage = errors
            };

            database.ArgosDownloads.InsertOnSubmit(log);
            database.SubmitChanges();
            //Linq TO SQL Insert with SPROC dos not set associations, and provides not partial methods to expand
            if (file != null)
            {
                file.LookupCollarFileFormat = database.LookupCollarFileFormats.First(l => l.Code == file.Format);
            }
            return(file);
        }
 private void LoadDataContext()
 {
     Database = new AnimalMovementDataContext();
     //Database.Log = Console.Out;
 }
예제 #5
0
 private void LoadDataContext()
 {
     Database = new AnimalMovementDataContext();
     //Database.Log = Console.Out;
     Investigator = Database.ProjectInvestigators.FirstOrDefault(pi => pi.Login == CurrentUser);
 }
예제 #6
0
        private static ProjectInvestigator GetProjectInvestigator(string pi)
        {
            var database = new AnimalMovementDataContext();

            return(database.ProjectInvestigators.FirstOrDefault(p => p.Login == pi));
        }