Еще рефакторинга

This commit is contained in:
Danil Kislov
2019-03-15 18:15:34 +03:00
parent 25b39a45f8
commit b67ff9b079
26 changed files with 105 additions and 72 deletions
+7 -4
View File
@@ -2,11 +2,13 @@
using Autofac; using Autofac;
using Autofac.Extras.AggregateService; using Autofac.Extras.AggregateService;
using JiraTimeBotForm.JiraIntegration; using JiraTimeBotForm.JiraIntegration;
using JiraTimeBotForm.JiraIntegration.Comments;
using JiraTimeBotForm.Mercurial; using JiraTimeBotForm.Mercurial;
using JiraTimeBotForm.TaskProcessors; using JiraTimeBotForm.Mercurial.Modifiers;
using JiraTimeBotForm.TasksProcessors; using JiraTimeBotForm.TasksProcessors;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime;
using JiraTimeBotForm.UI; using JiraTimeBotForm.UI;
using JiraTimeBotForm.UI.Tray;
namespace JiraTimeBotForm.DI namespace JiraTimeBotForm.DI
{ {
@@ -25,12 +27,13 @@ namespace JiraTimeBotForm.DI
_builder.Register(f => new TrayMenu()).As<ITrayMenu>().AsSelf(); _builder.Register(f => new TrayMenu()).As<ITrayMenu>().AsSelf();
_builder.Register(c => new CommitSkipper()).As<ICommitSkipper>(); _builder.Register(c => new CommitSkipper()).As<ICommitSkipper>();
_builder.Register(c => new MercurialLog(c.Resolve<ILog>(), c.Resolve<ICommitSkipper>())).As<IMercurialLog>().AsSelf(); _builder.RegisterType<TechnicalInfoSkipper>().As<ITechnicalInfoSkipper>().AsSelf();
_builder.Register(c => new TaskTimeDiscoverer(c.Resolve<ILog>())).As<ITaskTimeDiscoverer>().AsSelf(); _builder.RegisterType<MercurialLog>().As<IMercurialLog>().AsSelf();
_builder.RegisterType<TaskTimeDiscoverer>().As<ITaskTimeDiscoverer>().AsSelf();
_builder.RegisterType<WorkLogTasksProcessor>().AsSelf().As<ITasksProcessor>(); _builder.RegisterType<WorkLogTasksProcessor>().AsSelf().As<ITasksProcessor>();
_builder.RegisterType<MeetingProcessor>().AsSelf().As<ITasksProcessor>(); _builder.RegisterType<MeetingProcessor>().AsSelf().As<ITasksProcessor>();
_builder.RegisterAggregateService<ITasksProcessors>(); _builder.RegisterAggregateService<IAllTasksProcessors>();
_builder.RegisterType<JiraDescriptionSource>().AsSelf().As<IJiraDescriptionSource>(); _builder.RegisterType<JiraDescriptionSource>().AsSelf().As<IJiraDescriptionSource>();
_builder.RegisterType<JiraApi>().AsSelf().AsImplementedInterfaces(); _builder.RegisterType<JiraApi>().AsSelf().AsImplementedInterfaces();
@@ -1,6 +1,6 @@
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.JiraIntegration namespace JiraTimeBotForm.JiraIntegration.Comments
{ {
public interface IJiraDescriptionSource public interface IJiraDescriptionSource
{ {
@@ -1,9 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.JiraIntegration namespace JiraTimeBotForm.JiraIntegration.Comments
{ {
public class JiraDescriptionSource : IJiraDescriptionSource public class JiraDescriptionSource : IJiraDescriptionSource
{ {
@@ -3,7 +3,9 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using Atlassian.Jira; using Atlassian.Jira;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.JiraIntegration.Comments;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime;
using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.JiraIntegration namespace JiraTimeBotForm.JiraIntegration
{ {
+12 -10
View File
@@ -81,15 +81,17 @@
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Compile Include="DI\ContainerBuilder.cs" /> <Compile Include="DI\ContainerBuilder.cs" />
<Compile Include="JiraIntegration\IJiraDescriptionSource.cs" /> <Compile Include="JiraIntegration\Comments\IJiraDescriptionSource.cs" />
<Compile Include="JiraIntegration\JiraDescriptionSource.cs" /> <Compile Include="JiraIntegration\Comments\JiraDescriptionSource.cs" />
<Compile Include="Job.cs" /> <Compile Include="Job.cs" />
<Compile Include="Logger.cs" /> <Compile Include="Logger.cs" />
<Compile Include="Configuration\Settings.cs" /> <Compile Include="Configuration\Settings.cs" />
<Compile Include="Mercurial\CommitSkipper.cs" /> <Compile Include="Mercurial\Modifiers\ITechnicalInfoSkipper.cs" />
<Compile Include="Mercurial\ICommitSkipper.cs" /> <Compile Include="Mercurial\Modifiers\CommitSkipper.cs" />
<Compile Include="Mercurial\Modifiers\ICommitSkipper.cs" />
<Compile Include="Mercurial\IMercurialLog.cs" /> <Compile Include="Mercurial\IMercurialLog.cs" />
<Compile Include="TasksProcessors\ITasksProcessors.cs" /> <Compile Include="Mercurial\Modifiers\TechnicalInfoSkipper.cs" />
<Compile Include="TasksProcessors\IAllTasksProcessors.cs" />
<Compile Include="UI\frmMain.cs"> <Compile Include="UI\frmMain.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
@@ -97,7 +99,7 @@
<DependentUpon>frmMain.cs</DependentUpon> <DependentUpon>frmMain.cs</DependentUpon>
</Compile> </Compile>
<Compile Include="JiraIntegration\JiraApi.cs" /> <Compile Include="JiraIntegration\JiraApi.cs" />
<Compile Include="Mercurial\MercurialCommitItem.cs" /> <Compile Include="Mercurial\Objects\MercurialCommitItem.cs" />
<Compile Include="Mercurial\MercurialLog.cs" /> <Compile Include="Mercurial\MercurialLog.cs" />
<Compile Include="Configuration\PasswordEncryptionClass.cs" /> <Compile Include="Configuration\PasswordEncryptionClass.cs" />
<Compile Include="Program.cs" /> <Compile Include="Program.cs" />
@@ -107,10 +109,10 @@
<Compile Include="TasksProcessors\WorkLogTasksProcessor.cs" /> <Compile Include="TasksProcessors\WorkLogTasksProcessor.cs" />
<Compile Include="TaskTime\ITaskTimeDiscoverer.cs" /> <Compile Include="TaskTime\ITaskTimeDiscoverer.cs" />
<Compile Include="TaskTime\TaskTimeDiscoverer.cs" /> <Compile Include="TaskTime\TaskTimeDiscoverer.cs" />
<Compile Include="TaskTime\TaskTimeItem.cs" /> <Compile Include="TaskTime\Objects\TaskTimeItem.cs" />
<Compile Include="UI\ITrayMenu.cs" /> <Compile Include="UI\Tray\ITrayMenu.cs" />
<Compile Include="UI\RestoreFromTray.cs" /> <Compile Include="UI\Tray\RestoreFromTray.cs" />
<Compile Include="UI\TrayMenu.cs" /> <Compile Include="UI\Tray\TrayMenu.cs" />
<EmbeddedResource Include="UI\frmMain.resx"> <EmbeddedResource Include="UI\frmMain.resx">
<DependentUpon>frmMain.cs</DependentUpon> <DependentUpon>frmMain.cs</DependentUpon>
</EmbeddedResource> </EmbeddedResource>
+2 -1
View File
@@ -5,9 +5,10 @@ using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.Mercurial; using JiraTimeBotForm.Mercurial;
using JiraTimeBotForm.TaskProcessors; using JiraTimeBotForm.Mercurial.Objects;
using JiraTimeBotForm.TasksProcessors; using JiraTimeBotForm.TasksProcessors;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime;
using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm namespace JiraTimeBotForm
{ {
@@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Threading; using System.Threading;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.Mercurial.Objects;
namespace JiraTimeBotForm.Mercurial namespace JiraTimeBotForm.Mercurial
{ {
+6 -36
View File
@@ -5,6 +5,8 @@ using System.Linq;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.Mercurial.Modifiers;
using JiraTimeBotForm.Mercurial.Objects;
using Mercurial; using Mercurial;
namespace JiraTimeBotForm.Mercurial namespace JiraTimeBotForm.Mercurial
@@ -13,11 +15,13 @@ namespace JiraTimeBotForm.Mercurial
{ {
private readonly ILog _log; private readonly ILog _log;
private readonly ICommitSkipper _commitSkipper; private readonly ICommitSkipper _commitSkipper;
private readonly ITechnicalInfoSkipper _technicalInfoSkipper;
public MercurialLog(ILog log, ICommitSkipper commitSkipper) public MercurialLog(ILog log, ICommitSkipper commitSkipper, ITechnicalInfoSkipper technicalInfoSkipper)
{ {
_log = log; _log = log;
_commitSkipper = commitSkipper; _commitSkipper = commitSkipper;
_technicalInfoSkipper = technicalInfoSkipper;
} }
public List<MercurialCommitItem> GetMercurialLog(Settings settings, DateTime? date = null, CancellationToken cancellationToken = default(CancellationToken)) public List<MercurialCommitItem> GetMercurialLog(Settings settings, DateTime? date = null, CancellationToken cancellationToken = default(CancellationToken))
@@ -60,7 +64,7 @@ namespace JiraTimeBotForm.Mercurial
{ {
continue; continue;
} }
commitMessage = StripTechnicalInfo(commitMessage); commitMessage = _technicalInfoSkipper.StripTechnicalInfo(commitMessage);
workTasks.Add(new MercurialCommitItem workTasks.Add(new MercurialCommitItem
{ {
@@ -81,40 +85,6 @@ namespace JiraTimeBotForm.Mercurial
} }
private string StripTechnicalInfo(string commitMessage)
{
if (!commitMessage.Contains("Signed-by:"))
{
return commitMessage;
}
var arr = commitMessage.Split('\n');
var sb = new StringBuilder();
foreach (var itm in arr)
{
if (string.IsNullOrEmpty(itm))
{
continue;
}
if (itm.StartsWith("Signed-by"))
{
continue;
}
if (itm.StartsWith("Jira:"))
{
continue;
}
sb.AppendLine(itm);
}
var message = sb.ToString();
message = message.TrimEnd('\n');
message = message.TrimEnd('\r');
return message;
}
private string FixEncoding(string source) private string FixEncoding(string source)
{ {
//перекодируем сообщение - ибо оно криво забирается в 1252 //перекодируем сообщение - ибо оно криво забирается в 1252
@@ -1,6 +1,6 @@
using System; using System;
namespace JiraTimeBotForm.Mercurial namespace JiraTimeBotForm.Mercurial.Modifiers
{ {
public class CommitSkipper : ICommitSkipper public class CommitSkipper : ICommitSkipper
{ {
@@ -1,4 +1,4 @@
namespace JiraTimeBotForm.Mercurial namespace JiraTimeBotForm.Mercurial.Modifiers
{ {
public interface ICommitSkipper public interface ICommitSkipper
{ {
@@ -0,0 +1,7 @@
namespace JiraTimeBotForm.Mercurial.Modifiers
{
public interface ITechnicalInfoSkipper
{
string StripTechnicalInfo(string commitMessage);
}
}
@@ -0,0 +1,42 @@
using System.Text;
namespace JiraTimeBotForm.Mercurial.Modifiers
{
public class TechnicalInfoSkipper : ITechnicalInfoSkipper
{
public string StripTechnicalInfo(string commitMessage)
{
if (!commitMessage.Contains("Signed-by:"))
{
return commitMessage;
}
var arr = commitMessage.Split('\n');
var sb = new StringBuilder();
foreach (var itm in arr)
{
if (string.IsNullOrEmpty(itm))
{
continue;
}
if (itm.StartsWith("Signed-by"))
{
continue;
}
if (itm.StartsWith("Jira:"))
{
continue;
}
sb.AppendLine(itm);
}
var message = sb.ToString();
message = message.TrimEnd('\n');
message = message.TrimEnd('\r');
return message;
}
}
}
@@ -1,6 +1,6 @@
using System; using System;
namespace JiraTimeBotForm.Mercurial namespace JiraTimeBotForm.Mercurial.Objects
{ {
public class MercurialCommitItem public class MercurialCommitItem
{ {
+1
View File
@@ -1,6 +1,7 @@
using System; using System;
using System.Diagnostics; using System.Diagnostics;
using System.Windows.Forms; using System.Windows.Forms;
using JiraTimeBotForm.UI;
namespace JiraTimeBotForm namespace JiraTimeBotForm
{ {
@@ -2,6 +2,8 @@
using System.Threading; using System.Threading;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.Mercurial; using JiraTimeBotForm.Mercurial;
using JiraTimeBotForm.Mercurial.Objects;
using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.TaskTime namespace JiraTimeBotForm.TaskTime
{ {
@@ -1,6 +1,6 @@
using System; using System;
namespace JiraTimeBotForm.TaskTime namespace JiraTimeBotForm.TaskTime.Objects
{ {
public class TaskTimeItem public class TaskTimeItem
{ {
@@ -5,6 +5,8 @@ using System.Text;
using System.Threading; using System.Threading;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.Mercurial; using JiraTimeBotForm.Mercurial;
using JiraTimeBotForm.Mercurial.Objects;
using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.TaskTime namespace JiraTimeBotForm.TaskTime
{ {
@@ -1,6 +1,6 @@
namespace JiraTimeBotForm.TasksProcessors namespace JiraTimeBotForm.TasksProcessors
{ {
public interface ITasksProcessors public interface IAllTasksProcessors
{ {
WorkLogTasksProcessor WorkLogTasksProcessor { get; } WorkLogTasksProcessor WorkLogTasksProcessor { get; }
@@ -1,9 +1,9 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.TaskProcessors namespace JiraTimeBotForm.TasksProcessors
{ {
interface ITasksProcessor interface ITasksProcessor
{ {
@@ -3,8 +3,8 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.JiraIntegration; using JiraTimeBotForm.JiraIntegration;
using JiraTimeBotForm.TaskProcessors;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime;
using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.TasksProcessors namespace JiraTimeBotForm.TasksProcessors
{ {
@@ -2,8 +2,8 @@
using System.Collections.Generic; using System.Collections.Generic;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.JiraIntegration; using JiraTimeBotForm.JiraIntegration;
using JiraTimeBotForm.TaskProcessors;
using JiraTimeBotForm.TaskTime; using JiraTimeBotForm.TaskTime;
using JiraTimeBotForm.TaskTime.Objects;
namespace JiraTimeBotForm.TasksProcessors namespace JiraTimeBotForm.TasksProcessors
{ {
@@ -1,6 +1,6 @@
using System.Windows.Forms; using System.Windows.Forms;
namespace JiraTimeBotForm.UI namespace JiraTimeBotForm.UI.Tray
{ {
public interface ITrayMenu public interface ITrayMenu
{ {
@@ -2,7 +2,7 @@
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
namespace JiraTimeBotForm.UI namespace JiraTimeBotForm.UI.Tray
{ {
public static class RestoreFromTray { public static class RestoreFromTray {
[DllImport( "user32.dll" )] [DllImport( "user32.dll" )]
@@ -1,7 +1,7 @@
using System; using System;
using System.Windows.Forms; using System.Windows.Forms;
namespace JiraTimeBotForm.UI namespace JiraTimeBotForm.UI.Tray
{ {
public class TrayMenu: ITrayMenu public class TrayMenu: ITrayMenu
{ {
+1 -1
View File
@@ -1,4 +1,4 @@
namespace JiraTimeBotForm namespace JiraTimeBotForm.UI
{ {
partial class frmMain partial class frmMain
{ {
+4 -4
View File
@@ -8,12 +8,12 @@ using Autofac;
using JiraTimeBotForm.Configuration; using JiraTimeBotForm.Configuration;
using JiraTimeBotForm.DI; using JiraTimeBotForm.DI;
using JiraTimeBotForm.TasksProcessors; using JiraTimeBotForm.TasksProcessors;
using JiraTimeBotForm.UI; using JiraTimeBotForm.UI.Tray;
// This is the code for your desktop app. // This is the code for your desktop app.
// Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app. // Press Ctrl+F5 (or go to Debug > Start Without Debugging) to run your app.
namespace JiraTimeBotForm namespace JiraTimeBotForm.UI
{ {
public partial class frmMain : Form public partial class frmMain : Form
{ {
@@ -21,7 +21,7 @@ namespace JiraTimeBotForm
private readonly Job _job; private readonly Job _job;
private readonly IReadOnlyList<Control> _controls; private readonly IReadOnlyList<Control> _controls;
private readonly IContainer _container; private readonly IContainer _container;
private readonly ITasksProcessors _tasksProcessors; private readonly IAllTasksProcessors _tasksProcessors;
private readonly ITrayMenu _trayIcon; private readonly ITrayMenu _trayIcon;
private CancellationTokenSource _tokenSource; private CancellationTokenSource _tokenSource;
@@ -47,7 +47,7 @@ namespace JiraTimeBotForm
_job = _container.Resolve<Job>(); _job = _container.Resolve<Job>();
_log = _container.Resolve<ILog>(); _log = _container.Resolve<ILog>();
_tasksProcessors = _container.Resolve<ITasksProcessors>(); _tasksProcessors = _container.Resolve<IAllTasksProcessors>();
_controls = new Control[] { txtJiraLogin, txtJiraPassword, txtMercurialEmail, actTime, txtRepoPath, txtDummyMode, btnSave, btnStart, btnMeeting, chkAddComments }; _controls = new Control[] { txtJiraLogin, txtJiraPassword, txtMercurialEmail, actTime, txtRepoPath, txtDummyMode, btnSave, btnStart, btnMeeting, chkAddComments };
} }