Example #1
0
        public void Remove()
        {
            SQLiteDatabase sqlDatabase = null;

            try
            {
                Globals dbHelp = new Globals();
                dbHelp.OpenDatabase();
                sqlDatabase = dbHelp.GetSQLiteDatabase();
                if (sqlDatabase != null && sqlDatabase.IsOpen)
                {
                    var sql = "DELETE FROM [Tracks] WHERE TrackID = " + TrackID.ToString();
                    sqlDatabase.ExecSQL(sql);
                    Log.Info(TAG, "Remove: Removed Track with ID " + TrackID.ToString() + " successfully");
                    sqlDatabase.Close();
                }
                else
                {
                    Log.Error(TAG, "Remove: SQLite database is null or was not opened - remove failed");
                }
            }
            catch (Exception e)
            {
                Log.Error(TAG, "Remove: Exception - " + e.Message);
                if (sqlDatabase != null && sqlDatabase.IsOpen)
                {
                    sqlDatabase.Close();
                }
            }
        }
 public void AddTrail(TrackID pTrack, Rail pRail)
 {
     _actualRails[pTrack] = pRail;
     if (pTrack == TrackID.BoatToOcean)
     {
         _selected = _actualRails[TrackID.BoatToOcean];
     }
 }
 public void SetRail(TrackID pTrack)
 {
     if (_selected)
     {
         _selected.Refresh();
     }
     _selected = _actualRails[pTrack];
     _selected.Activate();
 }
Example #4
0
 private void updateName()
 {
     if (!string.IsNullOrEmpty(VesselName))
     {
         Name = VesselName;
     }
     else
     {
         Name = TrackID.ToString();
     }
 }
Example #5
0
        public void UpdateJobCars()
        {
            jobCars.Clear();
            jobCarsUsed.Clear();
            jobConsists.Clear();
            // jobConsistUsed = null;
            currentTracks.Clear();
            List <Task> tasks = GetFirstUnfinishedTasks();

            currentTasks = tasks.Count;
            foreach (Task t in tasks)
            {
                jobCars.AddRange(t.GetTaskData().cars);
            }
            foreach (Car c in jobCars)
            {
                jobCarsUsed[c] = false;
            }
            foreach (Car car in jobCars)
            {
                if (!jobCarsUsed[car])
                {
                    TrackID trackID = car.CurrentTrack?.ID;
                    if (!SingletonBehaviour <IdGenerator> .Instance.logicCarToTrainCar.TryGetValue(car, out TrainCar trainCar))
                    {
                        continue;
                    }

                    Trainset trainset = trainCar.trainset;
                    foreach (TrainCar tc in trainset.cars)
                    {
                        Car c = tc.logicCar;
                        if (c != null)
                        {
                            if (jobCarsUsed.ContainsKey(c))
                            {
                                jobCarsUsed[c] = true;
                            }
                            if (trackID == null)
                            {
                                trackID = c.CurrentTrack?.ID;
                            }
                        }
                    }
                    jobConsists.Add(trainset);
                    currentTracks.Add(trackID);
                }
            }
        }
Example #6
0
 public string GetID()
 {
     if (MMSI != 0)
     {
         return("MMSI:" + MMSI.ToString());
     }
     else if (!string.IsNullOrEmpty(VesselName))
     {
         return("Name:" + VesselName);
     }
     else
     {
         return("ID:" + TrackID.ToString());
     }
 }
Example #7
0
        /// <summary>
        /// 查询显示用户信息
        /// </summary>
        /// <param name="coll">传入参数</param>
        /// <returns>视图</returns>
        public ActionResult LibrayMgr(FormCollection coll)
        {
            this.trackID = TrackIdManager.GetInstance("shaoyu");
            List <DisplayInfo> displayInfolist = new List <DisplayInfo>();
            List <Bookinfo>    bookinfoList    = new List <Bookinfo>();

            try
            {
                // 初始信息
                if (coll.Count == 0)
                {
                    QueryAllBook queryAllBook = new QueryAllBook();
                    displayInfolist = queryAllBook.GetAllBookInfo();
                }
                else if (coll.Count > 0)
                {
                    // 查询信息
                    if (Request.IsAjaxRequest())
                    {
                        string     bookname   = coll["bookname"] != null ? coll["bookname"].Trim() : string.Empty;
                        DisplayMgr displayMgr = new DisplayMgr();

                        // 模糊查询
                        displayInfolist = displayMgr.QueryByName(bookname);
                        return(this.PartialView("BookList", displayInfolist));
                    }
                }
            }
            catch (AppException appexp)
            {
                return(this.View("Shared/Error", appexp.ToString()));
            }
            catch (Exception exp)
            {
                AppException appexp = new AppException(" 查询显示用户信息 ", exp, ExceptionLevel.Error);
                LogManager.Log.WriteException(appexp);
                return(this.View("Shared/Error", exp.ToString()));
            }
            finally
            {
                LogManager.Log.WriteUiAcc("shaoyu", "UserInfo", "shaoyu", "127.0.0.1", string.Empty, string.Empty, "查询显示用户信息", null);
            }

            return(this.View(displayInfolist));
        }
 public bool IsAllAccessTrack()
 {
     return(TrackID.StartsWith("T"));
 }
Example #9
0
 public TrackChangeEvent(double span, TrackID ID)
     : base(span)
 {
     this.ID = ID;
 }
Example #10
0
        public void Save()
        {
            SQLiteDatabase sqlDatabase = null;

            try
            {
                Globals dbHelp = new Globals();
                dbHelp.OpenDatabase();
                sqlDatabase = dbHelp.GetSQLiteDatabase();
                if (sqlDatabase != null)
                {
                    if (sqlDatabase.IsOpen)
                    {
                        ContentValues values = new ContentValues();
                        values.Put("PlayListID", PlayListID);
                        values.Put("TrackName", TrackName.Trim());
                        values.Put("TrackArtist", TrackArtist.Trim());
                        values.Put("TrackDuration", TrackDuration);
                        values.Put("TrackOrderNumber", TrackOrderNumber);
                        values.Put("TrackUri", TrackUri.Trim());
                        if (IsNew)
                        {
                            TrackID = (int)sqlDatabase.Insert("Tracks", null, values);
                            IsNew   = false;
                            IsDirty = false;
                        }
                        if (IsDirty)
                        {
                            string whereClause = "TrackID = ?";
                            sqlDatabase.Update("Tracks", values, whereClause, new string[] { TrackID.ToString() });
                            IsDirty = false;
                        }
                        sqlDatabase.Close();
                    }
                }
            }
            catch (Exception e)
            {
                Log.Error(TAG, "Save: Exception - " + e.Message);
                if (sqlDatabase != null && sqlDatabase.IsOpen)
                {
                    sqlDatabase.Close();
                }
            }
        }
Example #11
0
        /// <summary>
        /// Return the current status of the held job.
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        public string GetFloatieText(int index)
        {
            switch (job.State)
            {
            case JobState.Available:
                if (jobNotAllowed)
                {
                    return(jobNotAllowedText);
                }
                else if (jobConsists.Count > 1)
                {
                    index %= jobConsists.Count;
                    StringBuilder sb = new StringBuilder(string.Format("The cars for job {0} are currently in {1} different consists on tracks", job.ID, jobConsists.Count));
                    for (int i = 0; i < currentTracks.Count; i++)
                    {
                        if (i > 0 && currentTracks.Count > 2)
                        {
                            sb.Append(',');
                        }
                        if (i == currentTracks.Count - 1)
                        {
                            sb.Append(" and");
                        }
                        sb.Append(' ');
                        TrackID t = currentTracks[i];
                        if (i == index)
                        {
                            sb.AppendFormat("<color=#F29839>{0}</color>", t == null ? "(Unknown)" : t.TrackPartOnly);
                        }
                        else
                        {
                            sb.Append(t == null ? "(Unknown)" : t.TrackPartOnly);
                        }
                    }
                    sb.Append('.');
                    return(sb.ToString());
                }
                else if (jobConsists.Count == 1)
                {
                    TrackID t          = currentTracks[0];
                    bool    locoHooked = PlayerManager.LastLoco?.trainset == jobConsists[0];
                    return(string.Format("The cars for job {0} are in the same consist on track <color=#F29839>{1}</color>{2}.", job.ID, t == null ? "(Unknown)" : t.TrackPartOnly, locoHooked ? " and have a locomotive attached" : ""));
                }
                else
                {
                    return("The job cars could not be found... wtf?");
                }

            case JobState.InProgress:
                // Pretty much the same thing as JobState.Available except no job eligibility checking.
                if (jobConsists.Count > 1)
                {
                    index %= jobConsists.Count;
                    StringBuilder sb = new StringBuilder(string.Format("The cars for job {0} are currently in {1} different consists on tracks", job.ID, jobConsists.Count));
                    for (int i = 0; i < currentTracks.Count; i++)
                    {
                        if (i > 0 && currentTracks.Count > 2)
                        {
                            sb.Append(',');
                        }
                        if (i == currentTracks.Count - 1)
                        {
                            sb.Append(" and");
                        }
                        sb.Append(' ');
                        TrackID t = currentTracks[i];
                        if (i == index)
                        {
                            sb.AppendFormat("<color=#F29839>{0}</color>", t == null ? "(Unknown)" : t.TrackPartOnly);
                        }
                        else
                        {
                            sb.Append(t == null ? "(Unknown)" : t.TrackPartOnly);
                        }
                    }
                    sb.Append('.');
                    return(sb.ToString());
                }
                else if (jobConsists.Count == 1)
                {
                    TrackID t          = currentTracks[0];
                    bool    locoHooked = PlayerManager.LastLoco?.trainset == jobConsists[0];
                    return(string.Format("The cars for job {0} are in the same consist on track <color=#F29839>{1}</color>{2}.", job.ID, t == null ? "(Unknown)" : t.TrackPartOnly, locoHooked ? " and have a locomotive attached" : ""));
                }
                else if (currentTasks > 0)     // No cars in sight but tasks are unfinished.
                {
                    return("The job cars could not be found... wtf?");
                }
                else     // No cars in sight because no tasks found.
                {
                    return("The job is probably complete. Try turning it in.");
                }

            case JobState.Completed:
                return("This job is completed.");

            case JobState.Abandoned:
                return("This job is abandoned.");

            case JobState.Failed:
                return("This job is failed.");

            case JobState.Expired:
                return("This job is expired.");

            default:
                return("This job state is unknown.");
            }
        }
Example #12
0
        protected virtual UriQuery GetUriQuery()
        {
            UriQuery query = new UriQuery(BaseUrl);

            query.Add("api_key", ApiKey);
            query.Add("format", "json");

            if (!string.IsNullOrEmpty(Type))
            {
                query.Add("type", Type);
            }

            if (ArtistID.Count() > 0)
            {
                foreach (Term artistId in ArtistID)
                {
                    query.Add("artist_id", artistId);
                }
            }

            if (Artist.Count() > 0)
            {
                foreach (Term artist in Artist)
                {
                    query.Add("artist", artist);
                }
            }

            if (SongID.Count() > 0)
            {
                foreach (Term songId in SongID)
                {
                    query.Add("song_id", songId);
                }
            }

            if (TrackID.Count() > 0)
            {
                foreach (Term trackId in TrackID)
                {
                    query.Add("track_id", trackId);
                }
            }

            if (Results.HasValue)
            {
                query.Add("results", Results.Value);
            }

            if (Bucket.HasValue)
            {
                foreach (string bucket in Bucket.Value.GetBucketDescriptions())
                {
                    query.Add("bucket", bucket);
                }
            }

            if (Limit.HasValue)
            {
                query.Add("limit", Limit.Value.ToString().ToLower());
            }

            if (Dmca.HasValue)
            {
                query.Add("dmca", Dmca.Value.ToString().ToLower());
            }

            return(query);
        }
Example #13
0
 /// <summary>
 /// 借书页面
 /// </summary>
 /// <param name="coll">前台参数</param>
 /// <returns>借书 页面</returns>
 public ActionResult BorrowBook(FormCollection coll)
 {
     this.trackID = TrackIdManager.GetInstance("shaoyu");
     return(this.View());
 }
        /// <summary>
        /// 重写方法
        /// </summary>
        protected override void ExcuteMethod()
        {
            while (true)
            {
                try
                {
                    bool isneedLock = true;
                    MessagePipe.ExcuteWriteMessageEvent("517VPN客户端启动成功", Color.Green, false);
                    VpnInfo vpnInfo = new VpnInfo();

                    ////获取账号
                    this.GetVpnAccount(ref isneedLock);
                    if (VpnAccount != null && !string.IsNullOrEmpty(VpnAccount.KeyID))
                    {
                        MessagePipe.ExcuteWriteMessageEvent("517VPN客户端获取到账号" + VpnAccount.Account, Color.Green, false);
                        ////马上锁定账号,锁定成功过,才允许使用这个账号
                        bool lockAccountResult = vpnInfo.UpdateVpnAccountState(VpnAccount);
                        if (lockAccountResult || !isneedLock)
                        {
                            MessagePipe.ExcuteShowAccountInfoEvent(VpnAccount.Account);
                            MessagePipe.ExcuteWriteMessageEvent("517VPN客户端锁定账号:" + VpnAccount.Account + "成功", Color.Green, false);

                            ////清空一下加载的数据
                            MessagePipe.ExcuteDelVpnServerInfoEvent("clear");

                            ////加载出所有可用的VPN服务器信息,先拿使用服务器为本机的IP
                            List <MVPNServer> tempExceptionVpn = vpnInfo.GetLocalUsedVpnServer(VpnAccount.Provider);
                            ProductVpnServers.AddRange(tempExceptionVpn);

                            List <MVPNServer> tempValidVpn = this.GetAllValidVpnServer(VpnAccount.Provider);
                            ProductVpnServers.AddRange(tempValidVpn);

                            ////因为有可能因为异常退出,导致IP一直被占用,所以首先取使用IP为自己服务器的IP
                            if (ProductVpnServers != null && ProductVpnServers.Count > 0)
                            {
                                MessagePipe.ExcuteBindVpnServerInfoEvent(ProductVpnServers);

                                ////锁定成功,取一个可用的VPN服务器建立连接(人工切换IP会有影响,)
                                foreach (var tempVpn in ProductVpnServers)
                                {
                                    TrackID.GetInstance("517VPN");

                                    ////////接收到暂停指令
                                    ////if (SignalControl.Issuspend)
                                    ////{
                                    ////    ////等待解锁指令
                                    ////    SignalControl.WaitSignal.WaitOne();
                                    ////}

                                    VpnServer = tempVpn;
                                    MessagePipe.ExcuteShowIpInfoEvent(tempVpn.Address);
                                    MessagePipe.ExcuteShowLinkInfoEvent("连接中...");

                                    ////IP独占成功,方可连接
                                    if (vpnInfo.UpdateVpnUseStatu(tempVpn) || tempVpn.UsingServer == new GetIP().GetLocalIp("本地连接"))
                                    {
                                        string msg           = string.Empty;
                                        bool   connectResult = this.IslinkVpnServer(VpnAccount, tempVpn);
                                        if (connectResult)
                                        {
                                            MessagePipe.ExcuteWriteMessageEvent("517客户端连接VPN:" + tempVpn.Address + "成功", Color.Green, false);
                                            MessagePipe.ExcuteShowLinkInfoEvent("连接成功");

                                            ////建立连接成功过后,调用业务组件,如果业务组件需要更换VPN服务器,则删除现有连接,重新建立新连接
                                            bool result = this.InvokeIpMonitor();
                                            if (result)
                                            {
                                                ////需要替换IP,还原数据状态
                                                vpnInfo.UpdateVpnIsValid(tempVpn);
                                                MessagePipe.ExcuteWriteMessageEvent("检测到" + tempVpn.Address + "被封,需要替换IP", Color.Green, false);
                                            }
                                        }
                                        else
                                        {
                                            msg = tempVpn.Provider + "|" + tempVpn.Address;
                                            vpnInfo.UpdateVpnLinkStatu(tempVpn);
                                            MessagePipe.ExcuteWriteMessageEvent(msg + "连接失败", Color.Red, false);
                                        }

                                        msg = tempVpn.Provider + "|" + tempVpn.Address;
                                        MessagePipe.ExcuteDelVpnServerInfoEvent(msg);

                                        ////连接失败,删除连接
                                        if (VpnControlThread.VpnHelper != null)
                                        {
                                            ////退出之前关闭VPN
                                            bool disConnectResult = VpnControlThread.VpnHelper.TryDisConnectVPN();
                                            VpnControlThread.VpnHelper.TryDeleteVPN();
                                            MessagePipe.ExcuteShowLinkInfoEvent("未连接");
                                        }
                                    }
                                }

                                ////表明这一轮可用IP已经使用完了,所以清空一下
                                ProductVpnServers.Clear();
                            }
                        }
                        else
                        {
                            MessagePipe.ExcuteWriteMessageEvent("517VPN客户端没有锁定到账号,休眠40秒", Color.Red, true);
                            ////锁定失败,休眠一分钟
                            Thread.Sleep(TimeSpan.FromSeconds(40));
                        }
                    }
                    else
                    {
                        MessagePipe.ExcuteWriteMessageEvent("517VPN客户端没有获取到账号,休眠40秒", Color.Red, true);
                        ////锁定失败,休眠一分钟
                        Thread.Sleep(TimeSpan.FromSeconds(40));
                    }
                }
                catch (Exception ex)
                {
                    LogManager.Log.WriteException(new AppException("517VPN客户端主流程异常", ex, ExceptionLevel.Error));
                    MessagePipe.ExcuteWriteMessageEvent("517VPN主流程异常" + ex.Message.ToString(), Color.Red, false);
                }
                finally
                {
                    Thread.Sleep(TimeSpan.FromSeconds(1));
                }
            }
        }
Example #15
0
 public override int GetHashCode()
 {
     return(TrackID.GetHashCode());
 }