コード例 #1
0
        public AgregarAsignacion(RepositoryManager<PPPObjectContext> repositoryManager, List<Persona> listaAsignados)
            : base(repositoryManager)
        {
            InitializeComponent();

            if (!DesignMode)
            {
                ListaAsignados = listaAsignados;
                _asignadosBindingSource.DataSource = listaAsignados;
            }
        }
コード例 #2
0
        public static RepositoryManager<PPPObjectContext> GetManager()
        {
            try
            {
                var ctx = new PPPObjectContext();
                var mgr = new RepositoryManager<PPPObjectContext>(ctx);

                return mgr;
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #3
0
        public QueryOrdersResponse Process(QueryOrdersRequest request)
        {
            var response = new QueryOrdersResponse()
            {
                ResultType = ResultTypes.Ok
            };
            var ordersService = new OrdersService();
            var ordersRepo    = RepositoryManager.GetRepository <IOrderRepository>();

            if (!string.IsNullOrWhiteSpace(request.OrderNumber))
            {
                var dt = ordersRepo.QueryOrderReportSummaryByOrderNum(request.OrderNumber);
                foreach (DataRow row in dt.Rows)
                {
                    row["AGE"] = GetAge(row["AGE"]);
                }

                response.Result     = dt;
                response.OrderCount = response.Result.Rows.Count;
            }
            else if (!string.IsNullOrWhiteSpace(request.Barcode))
            {
                var orderBarcodeRepo = RepositoryManager.GetRepository <IOrderBarcodeRepository>();
                var orderBarcodeInfo = orderBarcodeRepo.GetByBarcode(request.Barcode);
                if (orderBarcodeInfo != null)
                {
                    var dt = ordersRepo.QueryOrderReportSummaryByOrderNum(orderBarcodeInfo.Ordernum);
                    foreach (DataRow row in dt.Rows)
                    {
                        row["AGE"] = GetAge(row["AGE"]);
                    }

                    response.Result     = dt;
                    response.OrderCount = response.Result.Rows.Count;
                }
                else
                {
                    response.OrderCount = 0;
                }
            }
            else
            {
                var htPara = new System.Collections.Hashtable();
                htPara.Add("pageStart", request.PageStart);
                htPara.Add("pageEnd", request.PageEnd);
                htPara.Add("dictlabid", request.Dictlabid);           // 分点
                htPara.Add("dictcustomerid", request.Dictcustomerid); //体检单位
                htPara.Add("status", request.OrderStatus);
                htPara.Add("auditstatus", request.FinanceAuditStatus);
                htPara.Add("reportstatus", request.ReportStatus);
                htPara.Add("name", request.Keyword);
                htPara.Add("section", request.Section);
                htPara.Add("province", request.Province);
                htPara.Add("batchnumber", request.BatchNumber);

                if (!string.IsNullOrWhiteSpace(request.StartDate))
                {
                    htPara.Add("StartDate", request.StartDate);
                }

                if (!string.IsNullOrWhiteSpace(request.EndDate))
                {
                    htPara.Add("EndDate", request.EndDate);
                }

                if (!string.IsNullOrWhiteSpace(request.ScanStartDate))
                {
                    htPara.Add("SDateBegin", request.ScanStartDate);
                }

                if (!string.IsNullOrWhiteSpace(request.ScanEndDate))
                {
                    htPara.Add("SDateEnd", request.ScanEndDate);
                }

                if (!string.IsNullOrWhiteSpace(request.AuditStartDate))
                {
                    htPara.Add("FDateBegin", request.AuditStartDate);
                }

                if (!string.IsNullOrWhiteSpace(request.AuditEndDate))
                {
                    htPara.Add("FDateEnd", request.AuditEndDate);
                }

                response.OrderCount = ordersService.DataForFocusPrintPageTotal(htPara);
                response.Result     = ordersService.DataForFocusPrintPageLst(htPara);
            }

            return(response);
        }
コード例 #4
0
ファイル: Program.cs プロジェクト: sven-n/OpenMU
        /// <summary>
        /// Initializes a new instance of the <see cref="Program"/> class.
        /// Constructor for the main entry program.
        /// </summary>
        /// <param name="args">The command line args.</param>
        public Program(string[] args)
        {
            this.repositoryManager = new RepositoryManager();
            this.repositoryManager.InitializeSqlLogging();
            if (args.Contains("-reinit"))
            {
                Console.WriteLine("The database is getting reininitialized...");
                this.repositoryManager.ReInitializeDatabase();
            }
            else if (!this.repositoryManager.IsDatabaseUpToDate())
            {
                Console.WriteLine("The database needs to be updated before the server can be started. Apply update? (y/n)");
                var key = Console.ReadLine()?.ToLowerInvariant();
                if (key == "y")
                {
                    this.repositoryManager.ApplyAllPendingUpdates();
                    Console.WriteLine("The database has been successfully updated.");
                }
                else
                {
                    Console.WriteLine("Cancelled the update process, can't start the server.");
                    return;
                }
            }

            this.repositoryManager.RegisterRepositories();
            Log.Info("Start initializing sub-components");
            var loginServer = new LoginServer();
            var chatServer  = new ChatServerListener(55980);

            this.servers.Add(chatServer);
            var guildServer   = new GuildServer(this.gameServers, this.repositoryManager);
            var friendServer  = new FriendServer(this.gameServers, chatServer, this.repositoryManager);
            var connectServer = ConnectServerFactory.CreateConnectServer();

            this.servers.Add(connectServer);
            Log.Info("Start initializing game servers");
            Stopwatch stopwatch = new Stopwatch();

            stopwatch.Start();
            foreach (var gameServerDefinition in this.GetGameServers())
            {
                using (ThreadContext.Stacks["gameserver"].Push(gameServerDefinition.ServerID.ToString()))
                {
                    var gameServer = new GameServer(gameServerDefinition, guildServer, loginServer, this.repositoryManager, friendServer);
                    foreach (var mainPacketHandler in gameServer.Context.PacketHandlers)
                    {
                        gameServer.AddListener(new DefaultTcpGameServerListener(gameServerDefinition.NetworkPort, gameServer.ServerInfo, gameServer.Context, connectServer, mainPacketHandler));
                        //// At the moment only one main packet handler should be used;
                        //// A TCP port can only be used for one TCP listener, so we have to introduce something to pair ports with main packets handlers.
                        break;
                    }

                    this.servers.Add(gameServer);
                    this.gameServers.Add(gameServer.Id, gameServer);
                    Log.InfoFormat("Game Server {0} - [{1}] initialized", gameServer.Id, gameServer.Description);
                }
            }

            stopwatch.Stop();
            Log.Info($"All game servers initialized, elapsed time: {stopwatch.Elapsed}");
            Log.Info("Start initializing admin panel");

            this.adminPanel = new AdminPanel(1234, this.servers, this.repositoryManager);
            Log.Info("Admin panel initialized");

            if (args.Contains("-autostart"))
            {
                chatServer.Start();
                foreach (var gameServer in this.gameServers.Values)
                {
                    gameServer.Start();
                }

                connectServer.Start();
            }
        }
コード例 #5
0
        /// <inheritdoc />
        public async Task CompileProcess(Job job, IDatabaseContext databaseContext, Action <int> progressReporter, CancellationToken cancellationToken)
        {
#pragma warning disable IDE0016 // Use 'throw' expression
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }
#pragma warning restore IDE0016 // Use 'throw' expression
            if (databaseContext == null)
            {
                throw new ArgumentNullException(nameof(databaseContext));
            }
            if (progressReporter == null)
            {
                throw new ArgumentNullException(nameof(progressReporter));
            }

            var ddSettingsTask = databaseContext.DreamDaemonSettings.Where(x => x.InstanceId == metadata.Id).Select(x => new DreamDaemonSettings
            {
                StartupTimeout = x.StartupTimeout,
            }).FirstOrDefaultAsync(cancellationToken);

            var compileJobsTask = databaseContext.CompileJobs
                                  .Where(x => x.Job.Instance.Id == metadata.Id)
                                  .OrderByDescending(x => x.Job.StoppedAt)
                                  .Select(x => new Job
            {
                StoppedAt = x.Job.StoppedAt,
                StartedAt = x.Job.StartedAt
            })
                                  .Take(10)
                                  .ToListAsync(cancellationToken);

            var dreamMakerSettings = await databaseContext.DreamMakerSettings.Where(x => x.InstanceId == metadata.Id).FirstAsync(cancellationToken).ConfigureAwait(false);

            if (dreamMakerSettings == default)
            {
                throw new JobException("Missing DreamMakerSettings in DB!");
            }
            var ddSettings = await ddSettingsTask.ConfigureAwait(false);

            if (ddSettings == default)
            {
                throw new JobException("Missing DreamDaemonSettings in DB!");
            }

            Task <RepositorySettings> repositorySettingsTask = null;
            string              repoOwner = null;
            string              repoName  = null;
            CompileJob          compileJob;
            RevisionInformation revInfo;
            using (var repo = await RepositoryManager.LoadRepository(cancellationToken).ConfigureAwait(false))
            {
                if (repo == null)
                {
                    throw new JobException("Missing Repository!");
                }

                if (repo.IsGitHubRepository)
                {
                    repoOwner = repo.GitHubOwner;
                    repoName  = repo.GitHubRepoName;
                    repositorySettingsTask = databaseContext.RepositorySettings.Where(x => x.InstanceId == metadata.Id).Select(x => new RepositorySettings
                    {
                        AccessToken             = x.AccessToken,
                        ShowTestMergeCommitters = x.ShowTestMergeCommitters,
                        PushTestMergeCommits    = x.PushTestMergeCommits
                    }).FirstOrDefaultAsync(cancellationToken);
                }

                var repoSha = repo.Head;
                revInfo = await databaseContext.RevisionInformations.Where(x => x.CommitSha == repoSha && x.Instance.Id == metadata.Id).Include(x => x.ActiveTestMerges).ThenInclude(x => x.TestMerge).ThenInclude(x => x.MergedBy).FirstOrDefaultAsync().ConfigureAwait(false);

                if (revInfo == default)
                {
                    revInfo = new RevisionInformation
                    {
                        CommitSha       = repoSha,
                        OriginCommitSha = repoSha,
                        Instance        = new Models.Instance
                        {
                            Id = metadata.Id
                        }
                    };
                    logger.LogWarning(Repository.Repository.OriginTrackingErrorTemplate, repoSha);
                    databaseContext.Instances.Attach(revInfo.Instance);
                }

                TimeSpan?averageSpan         = null;
                var      previousCompileJobs = await compileJobsTask.ConfigureAwait(false);

                if (previousCompileJobs.Count != 0)
                {
                    var totalSpan = TimeSpan.Zero;
                    foreach (var I in previousCompileJobs)
                    {
                        totalSpan += I.StoppedAt.Value - I.StartedAt.Value;
                    }
                    averageSpan = totalSpan / previousCompileJobs.Count;
                }

                compileJob = await dreamMaker.Compile(revInfo, dreamMakerSettings, ddSettings.StartupTimeout.Value, repo, progressReporter, averageSpan, cancellationToken).ConfigureAwait(false);
            }

            compileJob.Job = job;

            databaseContext.CompileJobs.Add(compileJob);             // will be saved by job context

            job.PostComplete = ct => compileJobConsumer.LoadCompileJob(compileJob, ct);

            if (repositorySettingsTask != null)
            {
                var repositorySettings = await repositorySettingsTask.ConfigureAwait(false);

                if (repositorySettings == default)
                {
                    throw new JobException("Missing repository settings!");
                }

                if (repositorySettings.AccessToken != null)
                {
                    // potential for commenting on a test merge change
                    var outgoingCompileJob = LatestCompileJob();

                    if (outgoingCompileJob != null && outgoingCompileJob.RevisionInformation.CommitSha != compileJob.RevisionInformation.CommitSha && repositorySettings.PostTestMergeComment.Value)
                    {
                        var gitHubClient = gitHubClientFactory.CreateClient(repositorySettings.AccessToken);

                        async Task CommentOnPR(int prNumber, string comment)
                        {
                            try
                            {
                                await gitHubClient.Issue.Comment.Create(repoOwner, repoName, prNumber, comment).ConfigureAwait(false);
                            }
                            catch (ApiException e)
                            {
                                logger.LogWarning("Error posting GitHub comment! Exception: {0}", e);
                            }
                        }

                        var tasks = new List <Task>();

                        string FormatTestMerge(TestMerge testMerge, bool updated) => String.Format(CultureInfo.InvariantCulture, "#### Test Merge {4}{0}{0}##### Server Instance{0}{5}{1}{0}{0}##### Revision{0}Origin: {6}{0}Pull Request: {2}{0}Server: {7}{3}",
                                                                                                   Environment.NewLine,
                                                                                                   repositorySettings.ShowTestMergeCommitters.Value ? String.Format(CultureInfo.InvariantCulture, "{0}{0}##### Merged By{0}{1}", Environment.NewLine, testMerge.MergedBy.Name) : String.Empty,
                                                                                                   testMerge.PullRequestRevision,
                                                                                                   testMerge.Comment != null ? String.Format(CultureInfo.InvariantCulture, "{0}{0}##### Comment{0}{1}", Environment.NewLine, testMerge.Comment) : String.Empty,
                                                                                                   updated ? "Updated" : "Deployed",
                                                                                                   metadata.Name,
                                                                                                   compileJob.RevisionInformation.OriginCommitSha,
                                                                                                   compileJob.RevisionInformation.CommitSha);

                        // added prs
                        foreach (var I in compileJob
                                 .RevisionInformation
                                 .ActiveTestMerges
                                 .Select(x => x.TestMerge)
                                 .Where(x => !outgoingCompileJob
                                        .RevisionInformation
                                        .ActiveTestMerges
                                        .Any(y => y.TestMerge.Number == x.Number)))
                        {
                            tasks.Add(CommentOnPR(I.Number.Value, FormatTestMerge(I, false)));
                        }

                        // removed prs
                        foreach (var I in outgoingCompileJob
                                 .RevisionInformation
                                 .ActiveTestMerges
                                 .Select(x => x.TestMerge)
                                 .Where(x => !compileJob
                                        .RevisionInformation
                                        .ActiveTestMerges
                                        .Any(y => y.TestMerge.Number == x.Number)))
                        {
                            tasks.Add(CommentOnPR(I.Number.Value, "#### Test Merge Removed"));
                        }

                        // updated prs
                        foreach (var I in compileJob
                                 .RevisionInformation
                                 .ActiveTestMerges
                                 .Select(x => x.TestMerge)
                                 .Where(x => outgoingCompileJob
                                        .RevisionInformation
                                        .ActiveTestMerges
                                        .Any(y => y.TestMerge.Number == x.Number)))
                        {
                            tasks.Add(CommentOnPR(I.Number.Value, FormatTestMerge(I, true)));
                        }

                        if (tasks.Any())
                        {
                            await Task.WhenAll(tasks).ConfigureAwait(false);
                        }
                    }
                }
            }
        }
コード例 #6
0
 public SqlClientDbManager(RepositoryManager mgr, string name)
     : base(mgr, name)
 {
 }
コード例 #7
0
ファイル: SignedUpInfo.cs プロジェクト: lwc123/laobandianping
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        internal bool Delete()
        {
            var repository = RepositoryManager.GetRepository <ISignedUpInfoRepository>(ModuleEnvironment.ModuleName);

            return(repository.Remove(this));
        }
コード例 #8
0
        /// <summary>
        /// This timer will crawl through the data and find any item with no hash
        /// It will then then select records to activate the hash generation routine
        /// </summary>
        private static void _timerCheck_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
        {
            //If the system is turned off then do nothing
            if (!ConfigHelper.EnabledDataManager)
            {
                return;
            }
            if (!IsActive)
            {
                return;
            }
            if (!EnableHouseKeeping)
            {
                return;
            }

            _timerCheck.Enabled = false;
            try
            {
                const int BlockCount = 50;
                const int WaitTime   = 250;

                var core = ((SystemCore)RepositoryManager.SystemCore);
                while (_highPriority.Any())
                {
                    //Try to get an ID from the high priority list
                    //if none found then grab an arbitrary one from the global list
                    Guid ID = Guid.Empty;
                    if (!_highPriority.TryTake(out ID))
                    {
                        return;
                    }
                    if (ID == Guid.Empty)
                    {
                        return;
                    }

                    //If there was an error it is in the skip list so never handle this ID again
                    if (!_skipList.Any(x => x == ID))
                    {
                        var sb     = new StringBuilder();
                        var schema = RepositoryManager.GetSchema(ID);
                        if (schema != null)
                        {
                            DataQueryResults results = new DataQueryResults();
                            do
                            {
                                if (!IsActive)
                                {
                                    return;            //Stop when housekeeping comes on
                                }
                                var query = new DataQuery {
                                    IncludeRecords = true, IncludeDimensions = false, ExcludeCount = true
                                };
                                query.FieldFilters.Add(new FieldFilter {
                                    Name = SqlHelper.HashField, Comparer = ComparisonConstants.Equals, Value = 0
                                });
                                query.RecordsPerPage = BlockCount;
                                try
                                {
                                    results = core.Manager.Query(ID, query, true);
                                    Interlocked.Add(ref _counter, results.RecordList.Count);
                                }
                                catch
                                {
                                    results = new DataQueryResults();
                                }

                                //Do not overload the system with background queries
                                if (results.ComputeTime > 2000)
                                {
                                    System.Threading.Thread.Sleep(WaitTime * 2);
                                }
                                else if (core.GetCpu() > 60)
                                {
                                    System.Threading.Thread.Sleep(WaitTime * 8);
                                }
                                else
                                {
                                    System.Threading.Thread.Sleep(WaitTime);
                                }
                            } while (results.RecordList?.Count == BlockCount && results.ComputeTime < 5000);
                        }
                    }
                }

                if (InFullIndex)
                {
                    SystemCore.PatchApply(FullIndexPatch, "DataManager:FullIndex");
                }
            }
            catch (Exception ex)
            {
                LoggerCQ.LogError(ex);
            }
            finally
            {
                _timerCheck.Enabled = true;
            }
        }
コード例 #9
0
 protected override void OnInitialize()
 {
     RepositoryManager.Initialize();
 }
コード例 #10
0
        public async Task ShouldAddAndCommitFiles()
        {
            await Initialize(TestRepoMasterCleanSynchronized);

            var managerAutoResetEvent = new RepositoryManagerAutoResetEvent();

            var repositoryManagerListener = Substitute.For <IRepositoryManagerListener>();

            repositoryManagerListener.AttachListener(RepositoryManager, managerAutoResetEvent);

            var expectedAfterChanges = new GitStatus {
                Behind       = 1,
                LocalBranch  = "master",
                RemoteBranch = "origin/master",
                Entries      =
                    new List <GitStatusEntry> {
                    new GitStatusEntry("Assets\\TestDocument.txt",
                                       TestRepoMasterCleanSynchronized.Combine("Assets", "TestDocument.txt"),
                                       "Assets\\TestDocument.txt", GitFileStatus.Modified),
                    new GitStatusEntry("foobar.txt", TestRepoMasterCleanSynchronized.Combine("foobar.txt"),
                                       "foobar.txt", GitFileStatus.Untracked)
                }
            };

            var expectedAfterCommit = new GitStatus {
                Ahead        = 1,
                Behind       = 1,
                LocalBranch  = "master",
                RemoteBranch = "origin/master",
                Entries      = new List <GitStatusEntry>()
            };

            var result = new GitStatus();

            RepositoryManager.OnStatusUpdated += status => {
                result = status;
            };

            Logger.Trace("Issuing Changes");

            var foobarTxt = TestRepoMasterCleanSynchronized.Combine("foobar.txt");

            foobarTxt.WriteAllText("foobar");

            var testDocumentTxt = TestRepoMasterCleanSynchronized.Combine("Assets", "TestDocument.txt");

            testDocumentTxt.WriteAllText("foobar");
            await TaskManager.Wait();

            managerAutoResetEvent.OnRepositoryChanged.WaitOne(TimeSpan.FromSeconds(200)).Should().BeTrue();

            Logger.Trace("Continue test");

            repositoryManagerListener.Received().OnRepositoryChanged(Args.GitStatus);
            result.AssertEqual(expectedAfterChanges);

            repositoryManagerListener.ReceivedWithAnyArgs().OnIsBusyChanged(Args.Bool);
            repositoryManagerListener.DidNotReceive().OnActiveBranchChanged();
            repositoryManagerListener.DidNotReceive().OnActiveRemoteChanged();
            repositoryManagerListener.DidNotReceive().OnHeadChanged();
            repositoryManagerListener.DidNotReceive().OnLocalBranchListChanged();
            repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged();
            repositoryManagerListener.DidNotReceive().OnRemoteOrTrackingChanged();
            repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock);

            repositoryManagerListener.ClearReceivedCalls();

            Logger.Trace("Issuing Command");

            await RepositoryManager
            .CommitFiles(new List <string>() { "Assets\\TestDocument.txt", "foobar.txt" }, "IntegrationTest Commit", string.Empty)
            .StartAsAsync();

            await TaskManager.Wait();

            managerAutoResetEvent.OnActiveBranchChanged.WaitOne(TimeSpan.FromSeconds(5)).Should().BeTrue();

            Logger.Trace("Continue test");

            repositoryManagerListener.Received(1).OnActiveBranchChanged();
            repositoryManagerListener.DidNotReceive().OnActiveRemoteChanged();
            repositoryManagerListener.DidNotReceive().OnHeadChanged();
            repositoryManagerListener.DidNotReceive().OnLocalBranchListChanged();
            repositoryManagerListener.DidNotReceive().OnRemoteBranchListChanged();
            repositoryManagerListener.DidNotReceive().OnRemoteOrTrackingChanged();
            repositoryManagerListener.DidNotReceive().OnLocksUpdated(Args.EnumerableGitLock);
        }
コード例 #11
0
 private void InitProjects()
 {
     //
     RepositoryManager.RegisterFactory(new DefaultRepositoryFactory());
 }
コード例 #12
0
        public static List<DatoAsignacionSemanal> CrearDesdeListaTareas(RepositoryManager<PPPObjectContext> repositoryManager, List<DatosProyecto> tareasProyecto, DateTime fechaInicio)
        {
            var data = repositoryManager.ObjectContext;

            var lista = tareasProyecto
                .Where(x => x.EsFilaDato)
                .Where(x => x.EsFilaActiva)
                .Select(x => new DatoAsignacionSemanal(x)
                {
                    OrdenTipoActividad = data.TipoActividadSet.Where(y => y.IdTipoActividad == x.IdTipoActividad).First().OrdenTipoActividad,
                    OrdenActividad = x.OrdenActividad,
                    TipoActividadDescripcion = data.TipoActividadSet.Where(y => y.IdTipoActividad == x.IdTipoActividad).First().DescripcionTipoActividad,
                    FechaInicio = fechaInicio,
                    IdProyectoAsignacion = null,
                    PersonaAsignacionAlias = "(Sin asignar)",
                })
                .ToList();

            return lista;
        }
コード例 #13
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public bool Delete()
        {
            var repository = RepositoryManager.GetRepository <IBossCommentRepository>(ModuleEnvironment.ModuleName);

            return(repository.Remove(this));
        }
コード例 #14
0
ファイル: RepositoryCache.cs プロジェクト: malain/candle
 public RepositoryCache()
 {
     _provider = new FileRepositoryProvider(CandleSettings.BaseDirectory, RepositoryManager.GetFolderPath(RepositoryCategory.Models));
     HttpContext.Current.Trace.Write(_provider.Name);
 }
コード例 #15
0
 public static void Start()
 {
     //initial database
     RepositoryManager.Init();
 }
コード例 #16
0
 public OfxManager()
 {
     repositoryManager = new RepositoryManager();
 }
コード例 #17
0
        public HttpResponseMessage Put(int id, [FromBody] DeviceController deviceInfo)
        {
            return(ActionWarpper.Process(deviceInfo, OperationCodes.MDV, () =>
            {
                deviceInfo.DeviceID = id;

                var deviceControllerParameterRepo = RepositoryManager.GetRepository <IDeviceControllerParameterRepository>();
                var deviceDoorRepo = RepositoryManager.GetRepository <IDeviceDoorRepository>();
                var deviceHeadReadingRepo = RepositoryManager.GetRepository <IDeviceHeadReadingRepository>();
                var deviceRepo = RepositoryManager.GetRepository <IDeviceControllerRepository>();

                var originalDeviceInfo = deviceRepo.GetByKey(id);
                if (originalDeviceInfo == null)
                {
                    return Request.CreateResponse(HttpStatusCode.BadRequest, string.Format("Device Id={0} does not exist.", id));
                }

                if (deviceRepo.Query(new Hashtable()
                {
                    { "Code", deviceInfo.Code }
                }).Any(x => x.DeviceID != id))
                {
                    return new HttpResponseMessage(HttpStatusCode.BadRequest)
                    {
                        Content = new StringContent(string.Format("系统中已经存在编号为{0}的设备", deviceInfo.Code)),
                        ReasonPhrase = ConstStrings.BusinessLogicError,
                    };
                }

                #region Doors
                var addedDeviceDoors = new List <DeviceDoor>();
                var deletedDeviceDoorIds = new List <int>();
                if (deviceInfo.DeviceDoors != null && deviceInfo.DeviceDoors.Any())
                {
                    var originalDeviceDoorIDs = originalDeviceInfo.DeviceDoors.Select(d => d.DeviceDoorID);
                    var currentDeviceDoorIDs = deviceInfo.DeviceDoors.Select(d => d.DeviceDoorID);
                    deletedDeviceDoorIds = originalDeviceDoorIDs.Except(currentDeviceDoorIDs).ToList();

                    addedDeviceDoors = deviceInfo.DeviceDoors.FindAll(d => d.DeviceDoorID == 0);

                    deletedDeviceDoorIds.ForEach(d => deviceDoorRepo.Delete(d));
                    addedDeviceDoors.ForEach(d => deviceDoorRepo.Insert(d));
                    deviceInfo.DeviceDoors.FindAll(d => d.DeviceDoorID != 0).ForEach(d => deviceDoorRepo.Update(d));
                }
                else
                {
                    deletedDeviceDoorIds = originalDeviceInfo.DeviceDoors.Select(d => d.DeviceDoorID).ToList();
                    deletedDeviceDoorIds.ForEach(d => deviceDoorRepo.Delete(d));
                }

                #endregion

                #region HeadReading
                var addedDeviceHeadReadings = new List <DeviceHeadReading>();
                var deletedDeviceHeadReadingIds = new List <int>();
                if (deviceInfo.DeviceHeadReadings != null && deviceInfo.DeviceHeadReadings.Any())
                {
                    var originalDeviceHeadReadingIDs = originalDeviceInfo.DeviceHeadReadings.Select(d => d.DeviceHeadReadingID);
                    var currentDeviceHeadReadingIDs = deviceInfo.DeviceHeadReadings.Select(d => d.DeviceHeadReadingID);
                    deletedDeviceHeadReadingIds = originalDeviceHeadReadingIDs.Except(currentDeviceHeadReadingIDs).ToList();

                    addedDeviceHeadReadings = deviceInfo.DeviceHeadReadings.FindAll(d => d.DeviceHeadReadingID == 0);

                    deletedDeviceHeadReadingIds.ForEach(d => deviceHeadReadingRepo.Delete(d));
                    addedDeviceHeadReadings.ForEach(d => deviceHeadReadingRepo.Insert(d));
                    deviceInfo.DeviceHeadReadings.FindAll(d => d.DeviceHeadReadingID != 0).ForEach(d => deviceHeadReadingRepo.Update(d));
                }
                else
                {
                    deletedDeviceHeadReadingIds = originalDeviceInfo.DeviceHeadReadings.Select(d => d.DeviceHeadReadingID).ToList();
                    deletedDeviceHeadReadingIds.ForEach(d => deviceHeadReadingRepo.Delete(d));
                }
                #endregion

                #region parameters
                if (deviceInfo.DeviceControllerParameter != null)
                {
                    deviceControllerParameterRepo.Update(deviceInfo.DeviceControllerParameter);
                }
                #endregion

                deviceRepo.Update(deviceInfo);

                return Request.CreateResponse(HttpStatusCode.OK);
            }, this));
        }
コード例 #18
0
        public ActionResult SubmitForm(ActivePageTireSizeConfigEntity entity, int?IsTireSize = null)
        {
            if (entity == null || entity?.FKActiveID == 0)
            {
                return(Content(JsonConvert.SerializeObject(new
                {
                    state = "error",
                    message = "信息为空"
                })));
            }

            RepositoryManager repository = new RepositoryManager();

            try
            {
                var activityEntity = repository.GetEntity <ActivePageListEntity>(entity.FKActiveID);
                if (activityEntity != null)
                {
                    activityEntity.IsTireSize = IsTireSize;
                    repository.Update <ActivePageListEntity>(activityEntity);
                }
                if (entity.PKID == 0)
                {
                    entity.CreateDateTime = DateTime.Now;
                    repository.Add <ActivePageTireSizeConfigEntity>(entity);
                    LoggerManager.InsertLog("ActivityPage", new FlashSaleProductOprLog()
                    {
                        OperateUser    = User.Identity.Name,
                        CreateDateTime = DateTime.Now,
                        BeforeValue    = JsonConvert.SerializeObject(""),
                        AfterValue     = JsonConvert.SerializeObject(entity),
                        LogType        = "ActivityPage",
                        LogId          = entity.FKActiveID.ToString(),
                        Operation      = "新增轮胎适配",
                    });
                    // LoggerManager.InsertOplog(new ConfigHistory() { AfterValue = JsonConvert.SerializeObject(entity), Author = User.Identity.Name, Operation = "新增轮胎适配:"+entity.FKActiveID, ObjectType = "AUCAct", ObjectID = entity.PKID.ToString() });
                }
                else
                {
                    var before = repository.GetEntity <ActivePageTireSizeConfigEntity>(entity.PKID);
                    entity.UpdateDateTime = DateTime.Now;
                    repository.Update <ActivePageTireSizeConfigEntity>(entity);
                    LoggerManager.InsertLog("ActivityPage", new FlashSaleProductOprLog()
                    {
                        OperateUser    = User.Identity.Name,
                        CreateDateTime = DateTime.Now,
                        BeforeValue    = JsonConvert.SerializeObject(before),
                        AfterValue     = JsonConvert.SerializeObject(entity),
                        LogType        = "ActivityPage",
                        LogId          = entity.FKActiveID.ToString(),
                        Operation      = "修改轮胎适配",
                    });
                    //LoggerManager.InsertOplog(new ConfigHistory() { BeforeValue=JsonConvert.SerializeObject(before), AfterValue = JsonConvert.SerializeObject(entity), Author = User.Identity.Name, Operation = "修改轮胎适配:" + entity.FKActiveID, ObjectType = "AUCAct", ObjectID = entity.PKID.ToString() });
                }
                return(Content(JsonConvert.SerializeObject(new
                {
                    state = "success",
                    message = "操作成功"
                })));
            }
            catch (Exception em)
            {
                return(Content(JsonConvert.SerializeObject(new
                {
                    state = "error",
                    message = JsonConvert.SerializeObject(em)
                })));
            }
        }
コード例 #19
0
ファイル: FactoryTest.cs プロジェクト: RobertSheran/GuildWork
        public void ADOFactoryTest()
        {
            RepositoryManager repositoryManager = RepositoryManagerFactory.Create();

            Assert.IsTrue(repositoryManager.GetAllCars().Carss.Count == 6);
        }
コード例 #20
0
ファイル: ManagerBase.cs プロジェクト: Inscrutable700/test
 public ManagerBase(BusinessContext businessContext, RepositoryManager repositoryManger)
 {
     this.repositoryManger = repositoryManger;
     this.businessContext  = businessContext;
 }
コード例 #21
0
 public OracleDbManager(RepositoryManager mgr, string name)
     : base(mgr, name)
 {
     RegisterFieldNameAlias("IComment", "Comment");
 }
コード例 #22
0
ファイル: SignedUpInfo.cs プロジェクト: lwc123/laobandianping
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public bool Save()
        {
            var repository = RepositoryManager.GetRepository <ISignedUpInfoRepository>(ModuleEnvironment.ModuleName);

            return(repository.Save(this));
        }
 public void BikeSearch_SmokeTest()
 {
     //
     RepositoryManager.RegisterFactory(new RepositoryFactoryMock());
     //
 }
コード例 #24
0
        private void BuildLabeledControl(PropertyInfo propertyInfo)
        {
            Grid grid = new Grid();

            grid.Width  = 270.0;
            grid.Height = 23.0;
            grid.Margin = new Thickness(0, 0, 15, 5);

            ColumnDefinition columnDefinition = new ColumnDefinition();

            columnDefinition.Width = new GridLength(120);
            grid.ColumnDefinitions.Add(columnDefinition);

            columnDefinition       = new ColumnDefinition();
            columnDefinition.Width = new GridLength(150);
            grid.ColumnDefinitions.Add(columnDefinition);

            ControlType controlType = DisplayUtil.GetControlType(propertyInfo);

            Binding binding = this.CreateBinding(propertyInfo, controlType, this.DataContext);

            TextBox textBox = null;

            switch (controlType)
            {
            case ControlType.Button:
                Button button = new Button();
                button.SetBinding(Button.CommandProperty, binding);
                button.Content             = DisplayUtil.GetControlDescription(propertyInfo);
                button.HorizontalAlignment = HorizontalAlignment.Right;
                button.Margin  = new Thickness(5, 0, 0, 0);
                button.Padding = new Thickness(15, 3, 15, 3);
                this.commandPanel.Children.Add(button);
                break;



            case ControlType.CheckBox:
                CheckBox checkBox = new CheckBox();
                checkBox.SetBinding(CheckBox.IsCheckedProperty, binding);
                Grid.SetColumn(checkBox, 1);
                grid.Children.Add(checkBox);
                break;

            // combo box
            case ControlType.ComboBox:
                ComboBox comboBox = new ComboBox();

                if (propertyInfo.PropertyType.IsEnum)
                {
                    comboBox.ItemsSource = Enum.GetValues(propertyInfo.PropertyType);
                    // populate?
                }
                else
                {
                    comboBox.ItemsSource = RepositoryManager.GetLookupRepository(propertyInfo.PropertyType).LookupList;
                }

                comboBox.SetBinding(ComboBox.SelectedItemProperty, binding);
                Grid.SetColumn(comboBox, 1);
                grid.Children.Add(comboBox);
                break;

            case ControlType.DateBox:
                break;

            case ControlType.Label:
                textBox           = new TextBox();
                textBox.IsEnabled = false;
                textBox.SetBinding(TextBox.TextProperty, binding);

                Grid.SetColumn(textBox, 1);
                grid.Children.Add(textBox);

                break;

            case ControlType.None:
                break;


            case ControlType.TextBox:
                textBox = new TextBox();
                textBox.SetBinding(TextBox.TextProperty, binding);
                Grid.SetColumn(textBox, 1);
                grid.Children.Add(textBox);
                break;

            default:
                break;
            }

            if (controlType != ControlType.Button)
            {
                Label label = new Label();
                label.Content = DisplayUtil.GetControlDescription(propertyInfo);
                label.Margin  = new Thickness(0, -2, 0, 0);
                Grid.SetColumn(label, 0);
                grid.Children.Add(label);

                RowDefinition rowDefinition = new RowDefinition();
                rowDefinition.Height = GridLength.Auto;

                this.propertyGrid.RowDefinitions.Add(rowDefinition);

                Grid.SetRow(grid, this.propertyGrid.RowDefinitions.Count - 1);

                this.propertyGrid.Children.Add(grid);
            }
        }
コード例 #25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="GenericRepository{T}"/> class.
 /// </summary>
 /// <param name="repositoryManager">The repository manager.</param>
 public GenericRepository(RepositoryManager repositoryManager)
     : base(repositoryManager)
 {
 }
コード例 #26
0
 public PPPFormBase(RepositoryManager<PPPObjectContext> repositoryManager)
     : this()
 {
     _repositoryManager = repositoryManager;
 }
コード例 #27
0
        /// <summary>
        /// 提交大翻盘的配置
        /// </summary>
        /// <param name="modeljson"></param>
        /// <param name="wheeljson"></param>
        /// <returns></returns>
        public async Task <ActionResult> SubmitForm(string modeljson, string wheeljson)
        {
            modeljson = modeljson.Replace("\"&nbsp;\"", "null");
            wheeljson = wheeljson.Replace("\"&nbsp;\"", "null");
            try
            {
                BigBrandRewardListEntity entity = JsonConvert.DeserializeObject <BigBrandRewardListEntity>(modeljson);

                IEnumerable <BigBrandWheelEntity> wheel = null;
                if (!string.IsNullOrWhiteSpace(wheeljson))
                {
                    wheel = JsonConvert.DeserializeObject <IEnumerable <BigBrandWheelEntity> >(wheeljson);
                }

                RepositoryManager manager = new RepositoryManager();
                using (var db = manager.BeginTrans())
                {
                    if (entity.PKID == 0)
                    {
                        entity.HashKeyValue       = Tuhu.Provisioning.Common.SecurityHelper.Sha1Encrypt(Guid.NewGuid().ToString(), System.Text.Encoding.UTF8).Substring(0, 8);
                        entity.CreateDateTime     = DateTime.Now;
                        entity.LastUpdateDateTime = DateTime.Now;
                        entity.UpdateUserName     = User.Identity.Name;
                        entity.CreateUserName     = User.Identity.Name;
                        manager.Add <BigBrandRewardListEntity>(entity);
                        LoggerManager.InsertOplog(new ConfigHistory()
                        {
                            AfterValue = JsonConvert.SerializeObject(entity), Author = User.Identity.Name, Operation = "新增大翻牌活动", ObjectType = "BigBrand"
                        });
                    }
                    else
                    {
                        entity.LastUpdateDateTime = DateTime.Now;
                        entity.UpdateUserName     = User.Identity.Name;
                        manager.Update <BigBrandRewardListEntity>(entity);
                        LoggerManager.InsertOplog(new ConfigHistory()
                        {
                            AfterValue = JsonConvert.SerializeObject(entity), Author = User.Identity.Name, Operation = "更新大翻牌活动", ObjectType = "BigBrand"
                        });
                    }

                    Expression <Func <BigBrandWheelEntity, bool> > exp = _ => _.FKBigBrand == entity.PKID;
                    db.Delete <BigBrandWheelEntity>(exp);

                    if (wheel != null)
                    {
                        foreach (var item in wheel)
                        {
                            item.CreateDateTime     = DateTime.Now;
                            item.CreateUserName     = User.Identity.Name;
                            item.LastUpdateDateTime = DateTime.Now;
                            item.UpdateUserName     = User.Identity.Name;
                            item.FKBigBrand         = entity.PKID;

                            var array = item.FKPoolPKIDText.TrimEnd(',').Split(',');
                            if (array != null && array.Length > 0)
                            {
                                foreach (var s in array)
                                {
                                    int poolPKID = 0;
                                    if (int.TryParse(s, out poolPKID))
                                    {
                                        if (poolPKID != 0)
                                        {
                                            item.FKPoolPKID = poolPKID;
                                            string json      = JsonConvert.SerializeObject(item);
                                            var    tempModel = JsonConvert.DeserializeObject <BigBrandWheelEntity>(json);
                                            db.Insert <BigBrandWheelEntity>(tempModel);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    db.Commit();
                    LoggerManager.InsertOplog(new ConfigHistory()
                    {
                        AfterValue = JsonConvert.SerializeObject(wheel), Author = User.Identity.Name, Operation = "大翻牌明细", ObjectType = "BigBrand"
                    });
                }


                entity = manager.GetEntity <BigBrandRewardListEntity>(p => p.PKID == entity.PKID);
                //读写分离 做延时
                await Task.Delay(3000);

                #region 更新大翻盘缓存
                using (var client = new Tuhu.Service.Activity.BigBrandClient())
                {
                    var result = client.UpdateBigBrand(entity.HashKeyValue);
                    result.ThrowIfException(true);
                }
                #endregion

                #region 更新 活动页的 缓存
                //筛选 出大翻盘相关的 活动页 配置
                List <ActivePageContentEntity> activeEntityList = manager.GetEntityList <ActivePageContentEntity>(p => p.HashKey == entity.HashKeyValue && p.Type == 20).ToList();
                foreach (var activeEntity in activeEntityList)
                {
                    var activePageList = manager.GetEntity <ActivePageListEntity>(activeEntity.FKActiveID);
                    using (var client = new Tuhu.Service.Activity.ActivityClient())
                    {
                        var result1 = await client.RefreshActivePageListModelCacheAsync(new Service.Activity.Models.Requests.ActivtyPageRequest()
                        {
                            Channel = "wap",
                            HashKey = activePageList.HashKey,
                        });

                        result1.ThrowIfException(true);
                        var result2 = await client.RefreshActivePageListModelCacheAsync(new Service.Activity.Models.Requests.ActivtyPageRequest()
                        {
                            ActivityId = activePageList.PKGuid.Value,
                            Channel    = "website",
                            HashKey    = activePageList.HashKey,
                        });

                        result2.ThrowIfException(true);
                    }

                    var list = manager.GetEntityList <ActivePageContentEntity>(_ => _.FKActiveID == activeEntity.FKActiveID);
                    var lucy = list?.Where(_ => _.Type == 13)?.FirstOrDefault();
                    if (lucy != null)
                    {
                        using (var client = new Tuhu.Service.Activity.ActivityClient())
                        {
                            var result = await client.RefreshLuckWheelCacheAsync(lucy.ActivityID.ToString());

                            result.ThrowIfException(true);
                        }
                    }
                }

                #endregion

                return(Content(JsonConvert.SerializeObject(new
                {
                    state = "success",
                    message = "操作成功",
                    data = ""
                })));
            }
            catch (Exception em)
            {
                throw em;
            }
        }
コード例 #28
0
        /// <summary>
        /// Pull the repository and compile for every set of given <paramref name="minutes"/>
        /// </summary>
        /// <param name="minutes">How many minutes the operation should repeat. Does not include running time</param>
        /// <param name="cancellationToken">The <see cref="CancellationToken"/> for the operation</param>
        /// <returns>A <see cref="Task"/> representing the running operation</returns>
                #pragma warning disable CA1502 // TODO: Decomplexify
        async Task TimerLoop(uint minutes, CancellationToken cancellationToken)
        {
            while (true)
            {
                try
                {
                    await Task.Delay(TimeSpan.FromMinutes(minutes > Int32.MaxValue ? Int32.MaxValue : (int)minutes), cancellationToken).ConfigureAwait(false);

                    logger.LogDebug("Beginning auto update...");
                    await eventConsumer.HandleEvent(EventType.InstanceAutoUpdateStart, new List <string>(), cancellationToken).ConfigureAwait(false);

                    try
                    {
                        Models.User user = null;
                        await databaseContextFactory.UseContext(async (db) => user = await db.Users.Where(x => x.CanonicalName == Api.Models.User.AdminName.ToUpperInvariant()).FirstAsync(cancellationToken).ConfigureAwait(false)).ConfigureAwait(false);

                        var repositoryUpdateJob = new Job
                        {
                            Instance = new Models.Instance
                            {
                                Id = metadata.Id
                            },
                            Description      = "Scheduled repository update",
                            CancelRightsType = RightsType.Repository,
                            CancelRight      = (ulong)RepositoryRights.CancelPendingChanges,
                            StartedBy        = user
                        };

                        string deploySha = null;
                        await jobManager.RegisterOperation(repositoryUpdateJob, async (paramJob, databaseContext, progressReporter, jobCancellationToken) =>
                        {
                            var repositorySettingsTask = databaseContext.RepositorySettings.Where(x => x.InstanceId == metadata.Id).FirstAsync(jobCancellationToken);

                            // assume 5 steps with synchronize
                            const int ProgressSections = 7;
                            const int ProgressStep     = 100 / ProgressSections;

                            const int NumSteps = 3;
                            var doneSteps      = 0;

                            Action <int> NextProgressReporter()
                            {
                                var tmpDoneSteps = doneSteps;
                                ++doneSteps;
                                return(progress => progressReporter((progress + (100 * tmpDoneSteps)) / NumSteps));
                            }

                            using (var repo = await RepositoryManager.LoadRepository(jobCancellationToken).ConfigureAwait(false))
                            {
                                if (repo == null)
                                {
                                    logger.LogTrace("Aborting repo update, no repository!");
                                    return;
                                }

                                var startSha = repo.Head;
                                if (!repo.Tracking)
                                {
                                    logger.LogTrace("Aborting repo update, not tracking origin!");
                                    deploySha = startSha;
                                    return;
                                }

                                var repositorySettings = await repositorySettingsTask.ConfigureAwait(false);

                                // the main point of auto update is to pull the remote
                                await repo.FetchOrigin(repositorySettings.AccessUser, repositorySettings.AccessToken, NextProgressReporter(), jobCancellationToken).ConfigureAwait(false);

                                RevisionInformation currentRevInfo = null;
                                bool hasDbChanges = false;

                                Task <RevisionInformation> LoadRevInfo() => databaseContext.RevisionInformations
                                .Where(x => x.CommitSha == startSha && x.Instance.Id == metadata.Id)
                                .Include(x => x.ActiveTestMerges).ThenInclude(x => x.TestMerge)
                                .FirstOrDefaultAsync(cancellationToken);

                                async Task UpdateRevInfo(string currentHead, bool onOrigin)
                                {
                                    if (currentRevInfo == null)
                                    {
                                        currentRevInfo = await LoadRevInfo().ConfigureAwait(false);
                                    }

                                    if (currentRevInfo == default)
                                    {
                                        logger.LogWarning(Repository.Repository.OriginTrackingErrorTemplate, currentHead);
                                        onOrigin = true;
                                    }

                                    var attachedInstance = new Models.Instance
                                    {
                                        Id = metadata.Id
                                    };
                                    var oldRevInfo = currentRevInfo;
                                    currentRevInfo = new RevisionInformation
                                    {
                                        CommitSha       = currentHead,
                                        OriginCommitSha = onOrigin ? currentHead : oldRevInfo.OriginCommitSha,
                                        Instance        = attachedInstance
                                    };
                                    if (!onOrigin)
                                    {
                                        currentRevInfo.ActiveTestMerges = new List <RevInfoTestMerge>(oldRevInfo.ActiveTestMerges);
                                    }

                                    databaseContext.Instances.Attach(attachedInstance);
                                    databaseContext.RevisionInformations.Add(currentRevInfo);
                                    hasDbChanges = true;
                                }

                                // take appropriate auto update actions
                                bool shouldSyncTracked;
                                if (repositorySettings.AutoUpdatesKeepTestMerges.Value)
                                {
                                    logger.LogTrace("Preserving test merges...");

                                    var currentRevInfoTask = LoadRevInfo();

                                    var result = await repo.MergeOrigin(repositorySettings.CommitterName, repositorySettings.CommitterEmail, NextProgressReporter(), jobCancellationToken).ConfigureAwait(false);

                                    if (!result.HasValue)
                                    {
                                        throw new JobException("Merge conflict while preserving test merges!");
                                    }

                                    currentRevInfo = await currentRevInfoTask.ConfigureAwait(false);

                                    var lastRevInfoWasOriginCommit = currentRevInfo == default || currentRevInfo.CommitSha == currentRevInfo.OriginCommitSha;
                                    var stillOnOrigin = result.Value && lastRevInfoWasOriginCommit;

                                    var currentHead = repo.Head;
                                    if (currentHead != startSha)
                                    {
                                        await UpdateRevInfo(currentHead, stillOnOrigin).ConfigureAwait(false);
                                        shouldSyncTracked = stillOnOrigin;
                                    }
                                    else
                                    {
                                        shouldSyncTracked = false;
                                    }
                                }
                                else
                                {
                                    logger.LogTrace("Not preserving test merges...");
                                    await repo.ResetToOrigin(NextProgressReporter(), jobCancellationToken).ConfigureAwait(false);

                                    var currentHead = repo.Head;

                                    currentRevInfo = await databaseContext.RevisionInformations
                                                     .Where(x => x.CommitSha == currentHead && x.Instance.Id == metadata.Id)
                                                     .FirstOrDefaultAsync(jobCancellationToken).ConfigureAwait(false);

                                    if (currentHead != startSha && currentRevInfo != default)
                                    {
                                        await UpdateRevInfo(currentHead, true).ConfigureAwait(false);
                                    }

                                    shouldSyncTracked = true;
                                }

                                // synch if necessary
                                if (repositorySettings.AutoUpdatesSynchronize.Value && startSha != repo.Head)
                                {
                                    var pushedOrigin = await repo.Sychronize(repositorySettings.AccessUser, repositorySettings.AccessToken, repositorySettings.CommitterName, repositorySettings.CommitterEmail, NextProgressReporter(), shouldSyncTracked, jobCancellationToken).ConfigureAwait(false);
                                    var currentHead  = repo.Head;
                                    if (currentHead != currentRevInfo.CommitSha)
                                    {
                                        await UpdateRevInfo(currentHead, pushedOrigin).ConfigureAwait(false);
                                    }
                                }

                                if (hasDbChanges)
                                {
                                    try
                                    {
                                        await databaseContext.Save(cancellationToken).ConfigureAwait(false);
                                    }
                                    catch
                                    {
                                        await repo.ResetToSha(startSha, progressReporter, default).ConfigureAwait(false);
                                        throw;
                                    }
                                }

                                progressReporter(5 * ProgressStep);
                                deploySha = repo.Head;
                            }
                        }, cancellationToken).ConfigureAwait(false);

                        await jobManager.WaitForJobCompletion(repositoryUpdateJob, user, cancellationToken, default).ConfigureAwait(false);

                        if (deploySha == null)
                        {
                            logger.LogTrace("Aborting auto update, repository error!");
                            continue;
                        }

                        if (deploySha == LatestCompileJob()?.RevisionInformation.CommitSha)
                        {
                            logger.LogTrace("Aborting auto update, same revision as latest CompileJob");
                            continue;
                        }

                        // finally set up the job
                        var compileProcessJob = new Job
                        {
                            StartedBy        = user,
                            Instance         = repositoryUpdateJob.Instance,
                            Description      = "Scheduled code deployment",
                            CancelRightsType = RightsType.DreamMaker,
                            CancelRight      = (ulong)DreamMakerRights.CancelCompile
                        };

                        await jobManager.RegisterOperation(compileProcessJob, CompileProcess, cancellationToken).ConfigureAwait(false);

                        await jobManager.WaitForJobCompletion(compileProcessJob, user, cancellationToken, default).ConfigureAwait(false);
                    }
                    catch (OperationCanceledException)
                    {
                        logger.LogDebug("Cancelled auto update job!");
                        throw;
                    }
                    catch (Exception e)
                    {
                        logger.LogWarning("Error in auto update loop! Exception: {0}", e);
                        continue;
                    }
                }
                catch (OperationCanceledException)
                {
                    break;
                }
            }

            logger.LogTrace("Leaving auto update loop...");
        }
コード例 #29
0
 public CategoryService(RepositoryManager repo)
 {
     _repositoryManager = repo;
 }
コード例 #30
0
        public MyBatisRepository()
        {
            SessionToPersistanceAdapter session = RepositoryManager.GetConnection() as SessionToPersistanceAdapter;

            _sqlMapper = session.GetUndelayingSession();
        }
コード例 #31
0
        /// <inheritdoc />
#pragma warning disable CA1506 // TODO: Decomplexify
        public async Task <IInstance> CreateInstance(IBridgeRegistrar bridgeRegistrar, Models.Instance metadata)
        {
            // Create the ioManager for the instance
            var instanceIoManager = new ResolvingIOManager(ioManager, metadata.Path);

            // various other ioManagers
            var repoIoManager          = new ResolvingIOManager(instanceIoManager, "Repository");
            var byondIOManager         = new ResolvingIOManager(instanceIoManager, "Byond");
            var gameIoManager          = new ResolvingIOManager(instanceIoManager, "Game");
            var diagnosticsIOManager   = new ResolvingIOManager(instanceIoManager, "Diagnostics");
            var configurationIoManager = new ResolvingIOManager(instanceIoManager, "Configuration");

            var configuration = new StaticFiles.Configuration(
                configurationIoManager,
                synchronousIOManager,
                symlinkFactory,
                processExecutor,
                postWriteHandler,
                platformIdentifier,
                fileTransferService,
                loggerFactory.CreateLogger <StaticFiles.Configuration>());
            var eventConsumer = new EventConsumer(configuration);
            var repoManager   = new RepositoryManager(
                repositoryFactory,
                repositoryCommands,
                repoIoManager,
                eventConsumer,
                gitRemoteFeaturesFactory,
                loggerFactory.CreateLogger <Repository.Repository>(),
                loggerFactory.CreateLogger <RepositoryManager>());

            try
            {
                var byond = new ByondManager(byondIOManager, byondInstaller, eventConsumer, loggerFactory.CreateLogger <ByondManager>());

                var commandFactory = new CommandFactory(assemblyInformationProvider, byond, repoManager, databaseContextFactory, metadata);

                var chatManager = chatFactory.CreateChatManager(instanceIoManager, commandFactory, metadata.ChatSettings);
                try
                {
                    var sessionControllerFactory = new SessionControllerFactory(
                        processExecutor,
                        byond,
                        topicClientFactory,
                        cryptographySuite,
                        assemblyInformationProvider,
                        gameIoManager,
                        chatManager,
                        networkPromptReaper,
                        platformIdentifier,
                        bridgeRegistrar,
                        serverPortProvider,
                        loggerFactory,
                        loggerFactory.CreateLogger <SessionControllerFactory>(),
                        metadata.CloneMetadata());

                    var dmbFactory = new DmbFactory(
                        databaseContextFactory,
                        gameIoManager,
                        remoteDeploymentManagerFactory,
                        loggerFactory.CreateLogger <DmbFactory>(),
                        metadata.CloneMetadata());
                    try
                    {
                        var reattachInfoHandler = new SessionPersistor(
                            databaseContextFactory,
                            dmbFactory,
                            processExecutor,
                            loggerFactory.CreateLogger <SessionPersistor>(),
                            metadata.CloneMetadata());
                        var watchdog = watchdogFactory.CreateWatchdog(
                            chatManager,
                            dmbFactory,
                            reattachInfoHandler,
                            sessionControllerFactory,
                            gameIoManager,
                            diagnosticsIOManager,
                            eventConsumer,
                            remoteDeploymentManagerFactory,
                            metadata.CloneMetadata(),
                            metadata.DreamDaemonSettings);
                        eventConsumer.SetWatchdog(watchdog);
                        commandFactory.SetWatchdog(watchdog);
                        try
                        {
                            Instance instance   = null;
                            var      dreamMaker = new DreamMaker(
                                byond,
                                gameIoManager,
                                configuration,
                                sessionControllerFactory,
                                eventConsumer,
                                chatManager,
                                processExecutor,
                                dmbFactory,
                                repoManager,
                                remoteDeploymentManagerFactory,
                                loggerFactory.CreateLogger <DreamMaker>(),
                                metadata.CloneMetadata());

                            instance = new Instance(
                                metadata.CloneMetadata(),
                                repoManager,
                                byond,
                                dreamMaker,
                                watchdog,
                                chatManager,
                                configuration,
                                dmbFactory,
                                jobManager,
                                eventConsumer,
                                remoteDeploymentManagerFactory,
                                loggerFactory.CreateLogger <Instance>());

                            return(instance);
                        }
                        catch
                        {
                            await watchdog.DisposeAsync().ConfigureAwait(false);

                            throw;
                        }
                    }
                    catch
                    {
                        dmbFactory.Dispose();
                        throw;
                    }
                }
                catch
                {
                    await chatManager.DisposeAsync().ConfigureAwait(false);

                    throw;
                }
            }
            catch
            {
                repoManager.Dispose();
                throw;
            }
        }
コード例 #32
0
 /// <summary>
 /// Open repository manager
 /// </summary>
 /// <param name="param"></param>
 private void OnOpenRepositoryManager(object param)
 {
     Window window = new RepositoryManager();
     window.DataContext = new RepositoryManagerViewModel(Repository, this, _memoryRepositories) { View = window };
     window.ShowDialog();
     Logger.Log.InfoFormat("User {0} open repository manager", Settings.Default.Login);
 }
コード例 #33
0
        /// <inheritdoc />
        public async Task CompileProcess(Job job, IDatabaseContext databaseContext, Action <int> progressReporter, CancellationToken cancellationToken)
        {
            //DO NOT FOLLOW THE SUGGESTION FOR A THROW EXPRESSION HERE
            if (job == null)
            {
                throw new ArgumentNullException(nameof(job));
            }
            if (databaseContext == null)
            {
                throw new ArgumentNullException(nameof(databaseContext));
            }
            if (progressReporter == null)
            {
                throw new ArgumentNullException(nameof(progressReporter));
            }

            var ddSettingsTask = databaseContext.DreamDaemonSettings.Where(x => x.InstanceId == metadata.Id).Select(x => new DreamDaemonSettings
            {
                StartupTimeout = x.StartupTimeout,
            }).FirstOrDefaultAsync(cancellationToken);

            var compileJobsTask = databaseContext.CompileJobs
                                  .Where(x => x.Job.Instance.Id == metadata.Id)
                                  .OrderByDescending(x => x.Job.StoppedAt)
                                  //TODO: Replace with this select when the issues linked in https://github.com/tgstation/tgstation-server/issues/737 are fixed
                                  //.Select(x => x.Job.StoppedAt.Value - x.Job.StartedAt.Value)
                                  .Select(x => new Job
            {
                StoppedAt = x.Job.StoppedAt,
                StartedAt = x.Job.StartedAt
            })
                                  .Take(10)
                                  .ToListAsync(cancellationToken);

            var dreamMakerSettings = await databaseContext.DreamMakerSettings.Where(x => x.InstanceId == metadata.Id).FirstAsync(cancellationToken).ConfigureAwait(false);

            if (dreamMakerSettings == default)
            {
                throw new JobException("Missing DreamMakerSettings in DB!");
            }
            var ddSettings = await ddSettingsTask.ConfigureAwait(false);

            if (ddSettings == default)
            {
                throw new JobException("Missing DreamDaemonSettings in DB!");
            }

            CompileJob          compileJob;
            RevisionInformation revInfo;

            using (var repo = await RepositoryManager.LoadRepository(cancellationToken).ConfigureAwait(false))
            {
                if (repo == null)
                {
                    throw new JobException("Missing Repository!");
                }

                var repoSha = repo.Head;
                revInfo = await databaseContext.RevisionInformations.Where(x => x.CommitSha == repoSha && x.Instance.Id == metadata.Id).Include(x => x.ActiveTestMerges).ThenInclude(x => x.TestMerge).FirstOrDefaultAsync().ConfigureAwait(false);

                if (revInfo == default)
                {
                    revInfo = new RevisionInformation
                    {
                        CommitSha       = repoSha,
                        OriginCommitSha = repoSha,
                        Instance        = new Models.Instance
                        {
                            Id = metadata.Id
                        }
                    };
                    logger.LogWarning(Repository.Repository.OriginTrackingErrorTemplate, repoSha);
                    databaseContext.Instances.Attach(revInfo.Instance);
                }

                TimeSpan?averageSpan         = null;
                var      previousCompileJobs = await compileJobsTask.ConfigureAwait(false);

                if (previousCompileJobs.Count != 0)
                {
                    var totalSpan = TimeSpan.Zero;
                    foreach (var I in previousCompileJobs)
                    {
                        totalSpan += I.StoppedAt.Value - I.StartedAt.Value;
                    }
                    averageSpan = totalSpan / previousCompileJobs.Count;
                }

                compileJob = await DreamMaker.Compile(revInfo, dreamMakerSettings, ddSettings.StartupTimeout.Value, repo, progressReporter, averageSpan, cancellationToken).ConfigureAwait(false);
            }

            compileJob.Job = job;

            databaseContext.CompileJobs.Add(compileJob);                //will be saved by job context

            job.PostComplete = ct => CompileJobConsumer.LoadCompileJob(compileJob, ct);
        }
コード例 #34
0
ファイル: Game.cs プロジェクト: mobytoby/beastmud
 private Game()
 {
     Repository= new RepositoryManager();
     Commands = new CommandManager();
     Users = new UserManager();
 }
コード例 #35
0
 protected abstract void Populate(RepositoryManager repositories, BlockchainEntities entities);
コード例 #36
0
        protected override void Process(InitializationPipeline pipeline)
        {
            Debug.ArgumentNotNull(pipeline, nameof(pipeline));

            if (!pipeline.IsStartUp)
            {
                return;
            }

            RepositoryManager.Register(RepositoryManager.LicenseFiles);
            RepositoryManager.Register(RepositoryManager.Packages);
            RepositoryManager.Register(RepositoryManager.Reports);
            RepositoryManager.Register(RepositoryManager.SitecoreZip);
            RepositoryManager.Register(RepositoryManager.StartPages);
            RepositoryManager.Register(RepositoryManager.Folders);

            var zipFiles = RepositoryManager.GetRepository(RepositoryManager.SitecoreZip);

            if (!zipFiles.Entries.Any())
            {
                var location = Path.Combine(AppHost.User.UserFolder, @"Repositories\SitecoreZipFiles");
                Directory.CreateDirectory(location);

                var repository = new RepositoryEntry("Sitecore Zip Files", location);
                zipFiles.Entries.Add(repository);
                zipFiles.Save();
            }

            var licenseFiles = RepositoryManager.GetRepository(RepositoryManager.LicenseFiles);

            if (!licenseFiles.Entries.Any())
            {
                var location = Path.Combine(AppHost.User.UserFolder, @"Repositories\LicenseFiles");
                Directory.CreateDirectory(location);

                var repository = new RepositoryEntry("License Files", location);
                licenseFiles.Entries.Add(repository);
                licenseFiles.Save();
            }

            var packages = RepositoryManager.GetRepository(RepositoryManager.Packages);

            if (!packages.Entries.Any())
            {
                var location = Path.Combine(AppHost.User.UserFolder, @"Repositories\Packages");
                Directory.CreateDirectory(location);

                var repository = new RepositoryEntry("Local Packages", location);
                packages.Entries.Add(repository);
                packages.Save();
            }

            var startPages = RepositoryManager.GetRepository(RepositoryManager.StartPages);

            if (!startPages.Entries.Any())
            {
                var location = Path.Combine(AppHost.User.UserFolder, @"Repositories\StartPages");
                Directory.CreateDirectory(location);

                var repository = new RepositoryEntry("Start Pages", location);
                startPages.Entries.Add(repository);
                startPages.Save();
            }

            var reports = RepositoryManager.GetRepository(RepositoryManager.Reports);

            if (!reports.Entries.Any())
            {
                var location = Path.Combine(AppHost.User.UserFolder, @"Repositories\Reports");
                Directory.CreateDirectory(location);

                var repository = new RepositoryEntry("Reports", location);
                reports.Entries.Add(repository);
                reports.Save();
            }

            var folders = RepositoryManager.GetRepository(RepositoryManager.Folders);

            if (!folders.Entries.Any())
            {
                var combine = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) ?? string.Empty, @"Repositories\Folders");

                Directory.CreateDirectory(combine);

                var repository = new RepositoryEntry("Default", @".\Repositories\Folders");
                folders.Entries.Add(repository);
                folders.Save();
            }
        }
コード例 #37
0
			public void AssertFileExistsInRepo(string s)
			{
				Chorus.sync.RepositoryManager r = new RepositoryManager(PathToBackupProjectDir, new ProjectFolderConfiguration(SourceProjectDir));
				Assert.IsTrue(r.GetFileExistsInRepo(Path.Combine(PathToBackupProjectDir ,"test.lift")));
			}