Esempio n. 1
0
        private void ExtractedFishingTrackCollection_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
        {
            _editSuccess = false;
            switch (e.Action)
            {
            case NotifyCollectionChangedAction.Add:
            {
                int newIndex = e.NewStartingIndex;
                ExtractedFishingTrack newItem = ExtractedFishingTrackCollection[newIndex];
                if (ExtractedFishingTracks.Add(newItem))
                {
                    CurrentEntity = newItem;
                    _editSuccess  = true;
                }
            }
            break;

            case NotifyCollectionChangedAction.Remove:
            {
                List <ExtractedFishingTrack> tempListOfRemovedItems = e.OldItems.OfType <ExtractedFishingTrack>().ToList();
                _editSuccess = ExtractedFishingTracks.Delete(tempListOfRemovedItems[0].ID);
            }
            break;

            case NotifyCollectionChangedAction.Replace:
            {
                List <ExtractedFishingTrack> tempList = e.NewItems.OfType <ExtractedFishingTrack>().ToList();
                _editSuccess = ExtractedFishingTracks.Update(tempList[0]);              // As the IDs are unique, only one row will be effected hence first index only
            }
            break;
            }
        }
Esempio n. 2
0
        public bool AddRecordToRepo(ExtractedFishingTrack eft)
        {
            if (eft == null)
            {
                throw new ArgumentNullException("Error: The argument is Null");
            }

            ExtractedFishingTrackCollection.Add(eft);
            return(_editSuccess);
        }
Esempio n. 3
0
        public bool Add(ExtractedFishingTrack eft)
        {
            bool success = false;

            using (OleDbConnection conn = new OleDbConnection(Global.ConnectionString))
            {
                conn.Open();
                var sql = $@"Insert into extractedFishingTracks 
                            (ID, DeviceName, DateAdded, DateStart, DateEnd, SourceType,
                            SourceID, SerializedTrack, LengthOriginal, LenghtSimplified, AverageSpeed,
                            PointCountOriginal, PointCountSimplified, SerializedTrackUTM, CombinedTrack)
                            Values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";

                using (OleDbCommand update = new OleDbCommand(sql, conn))
                {
                    update.Parameters.Add("@rowID", OleDbType.Integer).Value                = eft.ID;
                    update.Parameters.Add("@deviceName", OleDbType.VarChar).Value           = eft.DeviceName;
                    update.Parameters.Add("@dateAdded", OleDbType.Date).Value               = eft.DateAdded;
                    update.Parameters.Add("@dateStart", OleDbType.Date).Value               = eft.Start;
                    update.Parameters.Add("@dateEnd", OleDbType.Date).Value                 = eft.End;
                    update.Parameters.Add("@sourceType", OleDbType.Integer).Value           = (int)eft.TrackSourceType;
                    update.Parameters.Add("@sourceID", OleDbType.Integer).Value             = eft.TrackSourceID;
                    update.Parameters.Add("@serializedTrack", OleDbType.VarChar).Value      = eft.SerializedTrack;
                    update.Parameters.Add("@lengthOriginal", OleDbType.Double).Value        = eft.LengthOriginal;
                    update.Parameters.Add("@lengthSimplified", OleDbType.Double).Value      = eft.LengthSimplified;
                    update.Parameters.Add("@avaerageSpeed", OleDbType.Double).Value         = eft.AverageSpeed;
                    update.Parameters.Add("@pointCountOriginal", OleDbType.Integer).Value   = eft.TrackPointCountOriginal;
                    update.Parameters.Add("@pointCountSimplified", OleDbType.Integer).Value = eft.TrackPointCountSimplified;
                    update.Parameters.Add("@serializedUTM", OleDbType.VarWChar).Value       = eft.SerializedTrackUTM;
                    update.Parameters.Add("@combined", OleDbType.Boolean).Value             = eft.CombinedTrack;
                    try
                    {
                        success = update.ExecuteNonQuery() > 0;
                    }
                    catch (OleDbException dbex)
                    {
                    }
                    catch (Exception ex)
                    {
                        Logger.Log(ex);
                    }
                }
            }
            return(success);
        }
Esempio n. 4
0
        public bool UpdateRecordInRepo(ExtractedFishingTrack eft)
        {
            if (eft == null)
            {
                throw new Exception("Error: The argument is Null");
            }

            int index = 0;

            while (index < ExtractedFishingTrackCollection.Count)
            {
                if (ExtractedFishingTrackCollection[index].ID == eft.ID)
                {
                    ExtractedFishingTrackCollection[index] = eft;
                    break;
                }
                index++;
            }
            return(_editSuccess);
        }
Esempio n. 5
0
        private List <ExtractedFishingTrack> GetTracks(bool removeDuplicate = false)
        {
            var list = new List <ExtractedFishingTrack>();
            var dt   = new DataTable();

            using (var conection = new OleDbConnection(Global.ConnectionString))
            {
                try
                {
                    conection.Open();
                    string query = "Select * from extractedFishingTracks";
                    if (removeDuplicate)
                    {
                        //query = @"SELECT
                        //            First(extractedFishingTracks.ID) AS ID,
                        //            extractedFishingTracks.DeviceName,
                        //            First(extractedFishingTracks.DateAdded) AS DateAdded,
                        //            First(extractedFishingTracks.DateStart) AS DateStart,
                        //            extractedFishingTracks.DateEnd,
                        //            Count(extractedFishingTracks.ID) AS DuplicateCount,
                        //            extractedFishingTracks.SourceType,
                        //            First(extractedFishingTracks.SourceID) AS SourceID,
                        //            First(extractedFishingTracks.SerializedTrack) AS SerializedTrack,
                        //            First(extractedFishingTracks.SerializedTrackUTM) AS SerializedTrackUTM,
                        //            First(extractedFishingTracks.LengthOriginal) AS LengthOriginal,
                        //            First(extractedFishingTracks.LenghtSimplified) AS LenghtSimplified,
                        //            First(extractedFishingTracks.AverageSpeed) AS AverageSpeed,
                        //            First(extractedFishingTracks.PointCountOriginal) AS PointCountOriginal,
                        //            First(extractedFishingTracks.PointCountSimplified) AS PointCountSimplified,
                        //            First(extractedFishingTracks.CombinedTrack) AS CombinedTrack
                        //            FROM extractedFishingTracks
                        //            GROUP BY
                        //                extractedFishingTracks.DeviceName,
                        //                extractedFishingTracks.DateEnd,
                        //                extractedFishingTracks.SourceType
                        //            ORDER BY
                        //                extractedFishingTracks.SourceType,
                        //                First(extractedFishingTracks.SourceID)";

                        query = @"SELECT 
                                    First(ID) AS ID,
                                    DeviceName,
                                    First(DateAdded) AS DateAdded,
                                    First(DateStart) AS DateStart,
                                    DateEnd,
                                    Count(ID) AS DuplicateCount,
                                    SourceType,
                                    First(SourceID) AS SourceID,
                                    First(SerializedTrack) AS SerializedTrack,
                                    First(SerializedTrackUTM) AS SerializedTrackUTM,
                                    First(LengthOriginal) AS LengthOriginal,
                                    First(LenghtSimplified) AS LenghtSimplified,
                                    First(AverageSpeed) AS AverageSpeed,
                                    First(PointCountOriginal) AS PointCountOriginal,
                                    First(PointCountSimplified) AS PointCountSimplified,
                                    First(CombinedTrack) AS CombinedTrack
                                    FROM extractedFishingTracks
                                    GROUP BY 
                                        DeviceName, 
                                        DateEnd, 
                                        SourceType
                                    ORDER BY 
                                        SourceType, 
                                        First(SourceID)";
                    }

                    var adapter = new OleDbDataAdapter(query, conection);
                    adapter.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        list.Clear();
                        foreach (DataRow dr in dt.Rows)
                        {
                            ExtractedFishingTrack eft = new ExtractedFishingTrack();
                            eft.ID                        = int.Parse(dr["ID"].ToString());
                            eft.DateAdded                 = (DateTime)dr["DateAdded"];
                            eft.DeviceName                = dr["DeviceName"].ToString();
                            eft.Start                     = (DateTime)dr["DateStart"];
                            eft.End                       = (DateTime)dr["DateEnd"];
                            eft.TrackSourceType           = (ExtractedTrackSourceType)Enum.Parse(typeof(ExtractedTrackSourceType), dr["SourceType"].ToString());
                            eft.TrackSourceID             = (int)dr["SourceID"];
                            eft.LengthOriginal            = (double)dr["LengthOriginal"];
                            eft.LengthSimplified          = (double)dr["LenghtSimplified"];
                            eft.AverageSpeed              = (double)dr["AverageSpeed"];
                            eft.SerializedTrack           = dr["SerializedTrack"].ToString();
                            eft.SerializedTrackUTM        = dr["SerializedTrackUTM"].ToString();
                            eft.TrackPointCountOriginal   = (int)dr["PointCountOriginal"];
                            eft.TrackPointCountSimplified = (int)dr["PointCountSimplified"];
                            eft.CombinedTrack             = dr["CombinedTrack"].ToString() != "0";

                            if (eft.TrackSourceType == ExtractedTrackSourceType.TrackSourceTypeCTX)
                            {
                                var ctxfile = Entities.CTXFileViewModel.GetFile(eft.TrackSourceID);
                                eft.LandingSite = ctxfile.LandingSite;
                                eft.Gear        = ctxfile.Gear;
                            }
                            list.Add(eft);
                        }
                    }
                }
                catch (OleDbException dbex)
                {
                    switch (dbex.ErrorCode)
                    {
                    case -2147217865:
                        //table not found
                        if (CreateTable())
                        {
                            return(GetTracks());
                        }
                        break;

                    case -2147217904:
                        //No value given for one or more required parameters.
                        break;
                    }
                }
                catch (Exception ex)
                {
                    Logger.Log(ex);
                }
            }
            return(list);
        }
Esempio n. 6
0
 public bool Update(ExtractedFishingTrack f)
 {
     return(true);
 }
Esempio n. 7
0
 public bool DeleteRecordFromRepo(ExtractedFishingTrack eft)
 {
     return(DeleteRecordFromRepo(eft.ID));
 }
Esempio n. 8
0
        public bool TrackIsDuplicated(ExtractedFishingTrack eft)
        {
            bool exist = ExtractedFishingTrackCollection.FirstOrDefault(t => t.DeviceName == eft.DeviceName && t.Start == eft.Start) != null;

            return(exist);
        }
Esempio n. 9
0
        private List <ExtractedFishingTrack> CreateFromSource(CTXFile ctx = null, DeviceGPX gpx = null, bool save = false)
        {
            FishingTripAndGearRetrievalTracks result = null;
            List <ExtractedFishingTrack>      listOfExtractedTracks = new List <ExtractedFishingTrack>();

            if (ctx == null && gpx == null)
            {
                throw new ArgumentNullException("Error: Source is not specified");
            }

            ExtractedTrackSourceType sourceType = ExtractedTrackSourceType.TrackSourceTypeNone;
            var deviceName = "";
            int id         = 0;

            if (ctx != null)
            {
                sourceType = ExtractedTrackSourceType.TrackSourceTypeCTX;
                id         = ctx.RowID;
                deviceName = Entities.CTXFileViewModel.GetFile(id, false).UserName;
            }
            else if (gpx != null)
            {
                sourceType = ExtractedTrackSourceType.TrackSourceTypeGPX;
                id         = gpx.RowID;
                deviceName = Entities.DeviceGPXViewModel.GetDeviceGPX(id).GPS.DeviceName;
            }

            bool proccedSavetrack        = false;
            bool proceedExtractNewTracks = false;

            var extractedTracks = Entities.ExtractedFishingTrackViewModel.GetTracks(sourceType, id);



            if (extractedTracks != null)
            {
                if (extractedTracks.Count > 0)
                {
                    result = new FishingTripAndGearRetrievalTracks {
                        TripShapefile = null
                    };
                    foreach (var item in extractedTracks)
                    {
                        item.FromDatabase = true;
                        var shp = new Shape();
                        if (shp.Create(ShpfileType.SHP_POLYLINE))
                        {
                            shp.CreateFromString(item.SerializedTrack);
                            item.SegmentSimplified = shp;
                            item.TrackOriginal     = null;
                            DetectedTrack dt = new DetectedTrack {
                                Shape = shp, ExtractedFishingTrack = item, Length = item.LengthOriginal, Accept = true
                            };
                            if (result.GearRetrievalTracks == null)
                            {
                                result.GearRetrievalTracks = new List <DetectedTrack>();
                            }
                            //if (MapWindowManager.BSCBoundaryShapefile == null || !shp.Crosses(MapWindowManager.BSCBoundaryShapefile.Shape[0]))
                            //{
                            result.GearRetrievalTracks.Add(dt);
                            //}
                        }
                    }
                    proccedSavetrack = result.GearRetrievalTracks != null;
                }
                else
                {
                    proceedExtractNewTracks = true;
                }
            }
            else
            {
                proceedExtractNewTracks = true;
            }


            if (proceedExtractNewTracks)
            {
                if (ctx != null && !ctx.TrackExtracted)
                {
                    if (ctx.XML != null && ctx.XML.Length == 0)
                    {
                        ctx.XML = Entities.CTXFileViewModel.GetXMLOfCTX(ctx);
                        if (ctx.XML.Length == 0)
                        {
                            return(null);
                        }
                    }


                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml(ctx.XML);
                    var tracknodes = doc.SelectNodes("//T");
                    if (ctx.TrackingInterval == null)
                    {
                        ctx.TrackingInterval = Entities.CTXFileViewModel.GetGPSTimerIntervalFromCTX(ctx, true);
                    }


                    result = ShapefileFactory.GearRetrievalTrackShapeFromCTX(tracknodes, ctx.TrackingInterval);



                    //procced = result != null && result.GearRetrievalTracks.Where(T => T.Accept).ToList().Count > 0;
                }
                else if (gpx != null)
                {
                    var gpxFile = Entities.GPXFileViewModel.ConvertToGPXFile(gpx);

                    if (gpxFile.GPSTimerInterval == null)
                    {
                        gpxFile.GPSTimerInterval = Entities.DeviceGPXViewModel.GetDeviceGPX(id).TimerInterval;
                    }
                    result = ShapefileFactory.GearRetrievalTrackShapeFromGPX(gpxFile, gpxFile.GPSTimerInterval);
                    //procced = result != null && result.GearRetrievalTracks.Where(T => T.Accept).ToList().Count > 0;
                }

                proccedSavetrack = result != null && result.GearRetrievalTracks.Where(T => T.Accept).ToList().Count > 0;
            }


            if (proccedSavetrack)
            {
                foreach (var item in result.GearRetrievalTracks.Where(t => t.Accept))
                {
                    ExtractedFishingTrack extractedTrack = new ExtractedFishingTrack
                    {
                        DateAdded                 = DateTime.Now,
                        TrackSourceType           = sourceType,
                        TrackSourceID             = id,
                        Start                     = item.ExtractedFishingTrack.Start,
                        End                       = item.ExtractedFishingTrack.End,
                        LengthOriginal            = item.ExtractedFishingTrack.LengthOriginal,
                        LengthSimplified          = item.ExtractedFishingTrack.LengthSimplified,
                        TrackPointCountOriginal   = item.ExtractedFishingTrack.TrackPointCountOriginal,
                        TrackPointCountSimplified = item.ExtractedFishingTrack.TrackPointCountSimplified,
                        AverageSpeed              = item.ExtractedFishingTrack.AverageSpeed,
                        TrackOriginal             = item.ExtractedFishingTrack.TrackOriginal,
                        SegmentSimplified         = item.ExtractedFishingTrack.SegmentSimplified,
                        SerializedTrack           = item.ExtractedFishingTrack.SegmentSimplified.SerializeToString(),
                        DeviceName                = deviceName,
                        FromDatabase              = item.ExtractedFishingTrack.FromDatabase,
                        SerializedTrackUTM        = item.ExtractedFishingTrack.SerializedTrackUTM,
                        CombinedTrack             = item.ExtractedFishingTrack.CombinedTrack
                    };

                    if (extractedTrack.TrackSourceType == ExtractedTrackSourceType.TrackSourceTypeCTX)
                    {
                        var ctxFile = Entities.CTXFileViewModel.GetFile(extractedTrack.TrackSourceID);
                        extractedTrack.Gear        = ctxFile.Gear;
                        extractedTrack.LandingSite = ctxFile.LandingSite;
                    }

                    if (!save)
                    {
                        extractedTrack.ID = ++_idCounter;
                    }
                    listOfExtractedTracks.Add(extractedTrack);
                }
            }

            if (sourceType == ExtractedTrackSourceType.TrackSourceTypeCTX && !ctx.TrackExtracted)
            {
                ctx.TrackExtracted = true;
                Entities.CTXFileViewModel.UpdateRecordInRepo(ctx);
            }
            else if (sourceType == ExtractedTrackSourceType.TrackSourceTypeGPX && !gpx.TrackIsExtracted)
            {
                gpx.TrackIsExtracted = true;
                Entities.DeviceGPXViewModel.UpdateRecordInRepo(gpx, true);
            }
            return(listOfExtractedTracks);
        }