Merge lp:~adam-rpconnelly/dbversion/cmdtimeout into lp:dbversion
- cmdtimeout
- Merge into trunk
Proposed by
Adam Connelly
Status: | Merged |
---|---|
Merged at revision: | 50 |
Proposed branch: | lp:~adam-rpconnelly/dbversion/cmdtimeout |
Merge into: | lp:dbversion |
Diff against target: | 450 lines |
To merge this branch: | bzr merge lp:~adam-rpconnelly/dbversion/cmdtimeout |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Colin Winning | Approve | ||
Review via email: mp+121925@code.launchpad.net |
Commit message
Description of the change
Moved the code to convert the property value to an int into the PropertyService.
To post a comment you must log in.
Revision history for this message
Colin Winning (colinwinning) wrote : | # |
Revision history for this message
Colin Winning (colinwinning) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'src/DatabaseVersion.Tests/Manifests/ManifestReaderTests.cs' |
2 | --- src/DatabaseVersion.Tests/Manifests/ManifestReaderTests.cs 2011-10-10 18:43:53 +0000 |
3 | +++ src/DatabaseVersion.Tests/Manifests/ManifestReaderTests.cs 2012-08-29 19:06:19 +0000 |
4 | @@ -95,9 +95,8 @@ |
5 | |
6 | Mock<IDatabaseTaskFactory > factory = new Mock<IDatabaseTaskFactory>(); |
7 | Mock<IDatabaseTask > task = new Mock<IDatabaseTask>(); |
8 | - Mock<IMessageService> messageService = new Mock<IMessageService>(); |
9 | factory.Setup(f => f.CanCreate(It.Is<XElement>(r => r.Name == "script"))).Returns(true); |
10 | - factory.Setup(f => f.Create(It.Is<XElement>(r => r.Name == "script"), 0, It.IsAny<IDatabaseVersion>(), messageService.Object)).Returns(task.Object); |
11 | + factory.Setup(f => f.Create(It.Is<XElement>(r => r.Name == "script"), 0, It.IsAny<IDatabaseVersion>())).Returns(task.Object); |
12 | |
13 | reader.Factories = new[] { factory.Object }; |
14 | |
15 | @@ -116,9 +115,8 @@ |
16 | |
17 | Mock<IDatabaseTaskFactory > factory = new Mock<IDatabaseTaskFactory>(); |
18 | Mock<IDatabaseTask > task = new Mock<IDatabaseTask>(); |
19 | - Mock<IMessageService> messageService = new Mock<IMessageService>(); |
20 | factory.Setup(f => f.CanCreate(It.IsAny<XElement>())).Returns(true); |
21 | - factory.Setup(f => f.Create(It.IsAny<XElement>(), It.IsAny<int>(), It.IsAny<IDatabaseVersion>(), messageService.Object)).Returns(task.Object); |
22 | + factory.Setup(f => f.Create(It.IsAny<XElement>(), It.IsAny<int>(), It.IsAny<IDatabaseVersion>())).Returns(task.Object); |
23 | |
24 | reader.Factories = new[] { factory.Object }; |
25 | |
26 | @@ -129,7 +127,7 @@ |
27 | int expectedOrder = 0; |
28 | foreach (IDatabaseTask createdTask in version.Tasks) |
29 | { |
30 | - factory.Verify(f => f.Create(It.IsAny<XElement>(), expectedOrder, It.IsAny<IDatabaseVersion>(), messageService.Object)); |
31 | + factory.Verify(f => f.Create(It.IsAny<XElement>(), expectedOrder, It.IsAny<IDatabaseVersion>())); |
32 | expectedOrder++; |
33 | } |
34 | } |
35 | |
36 | === modified file 'src/DatabaseVersion.Tests/Property/PropertyServiceTests.cs' |
37 | --- src/DatabaseVersion.Tests/Property/PropertyServiceTests.cs 2011-09-02 23:16:14 +0000 |
38 | +++ src/DatabaseVersion.Tests/Property/PropertyServiceTests.cs 2012-08-29 19:06:19 +0000 |
39 | @@ -85,6 +85,6 @@ |
40 | |
41 | // Assert |
42 | Assert.Equal(0, service.Properties.Count()); |
43 | - } |
44 | + } |
45 | |
46 | [Fact] |
47 | public void ShouldBeAbleToReturnPropertyAsInt() |
48 | { |
49 | // Arrange |
50 | var service = new PropertyService(); |
51 | service.Add(new Property { Key = "myProperty", Value = "100" }); |
52 | |
53 | // Act |
54 | var value = service.GetInt("myProperty"); |
55 | |
56 | // Assert |
57 | Assert.Equal(100, value); |
58 | } |
59 | |
60 | [Fact] |
61 | public void ShouldReturnNullIfPropertyIsNotAnInt() |
62 | { |
63 | // Arrange |
64 | var service = new PropertyService(); |
65 | service.Add(new Property { Key = "myProperty", Value = "abcd" }); |
66 | |
67 | // Act |
68 | var value = service.GetInt("myProperty"); |
69 | |
70 | // Assert |
71 | Assert.Null(value); |
72 | } |
73 | |
74 | [Fact] |
75 | public void ShouldReturnNullFromGetIntIfPropertyIsNotSet() |
76 | { |
77 | // Arrange |
78 | var service = new PropertyService(); |
79 | |
80 | // Act |
81 | var value = service.GetInt("myProperty"); |
82 | |
83 | // Assert |
84 | Assert.Null(value); |
85 | } |
86 | } |
87 | } |
88 | |
89 | === modified file 'src/DatabaseVersion.Tests/Sql/ScriptTaskFactoryTests.cs' |
90 | --- src/DatabaseVersion.Tests/Sql/ScriptTaskFactoryTests.cs 2011-10-10 09:00:52 +0000 |
91 | +++ src/DatabaseVersion.Tests/Sql/ScriptTaskFactoryTests.cs 2012-08-29 19:06:19 +0000 |
92 | @@ -63,7 +63,7 @@ |
93 | new XAttribute(XName.Get("file"), "path/file.sql")); |
94 | |
95 | // Act |
96 | - IDatabaseTask task = this.factory.Create(element, 0, null, null); |
97 | + IDatabaseTask task = this.factory.Create(element, 0, null); |
98 | |
99 | // Assert |
100 | Assert.IsType<ScriptTask>(task); |
101 | @@ -78,7 +78,7 @@ |
102 | new XAttribute(XName.Get("file"), "path/file.sql")); |
103 | |
104 | // Act |
105 | - IDatabaseTask task = this.factory.Create(element, 0, null, null); |
106 | + IDatabaseTask task = this.factory.Create(element, 0, null); |
107 | |
108 | // Assert |
109 | Assert.Equal("path/file.sql", ((ScriptTask)task).FileName); |
110 | @@ -93,7 +93,7 @@ |
111 | new XAttribute(XName.Get("file"), "path/file.sql")); |
112 | |
113 | // Act |
114 | - IDatabaseTask task = this.factory.Create(element, 25, null, null); |
115 | + IDatabaseTask task = this.factory.Create(element, 25, null); |
116 | |
117 | // Assert |
118 | Assert.Equal(25, task.ExecutionOrder); |
119 | |
120 | === modified file 'src/DatabaseVersion.Tests/Sql/ScriptTaskTests.cs' |
121 | --- src/DatabaseVersion.Tests/Sql/ScriptTaskTests.cs 2012-01-24 22:01:24 +0000 |
122 | +++ src/DatabaseVersion.Tests/Sql/ScriptTaskTests.cs 2012-08-29 19:06:19 +0000 |
123 | @@ -9,6 +9,7 @@ |
124 | using Moq; |
125 | using System.Data; |
126 | using System.IO; |
127 | + using dbversion.Property; |
128 | using dbversion.Tasks; |
129 | using dbversion.Version; |
130 | using NHibernate; |
131 | @@ -18,10 +19,12 @@ |
132 | private readonly Mock<ISession> session = new Mock<ISession>() { DefaultValue = DefaultValue.Mock }; |
133 | private readonly Mock<IDbCommand> command = new Mock<IDbCommand>(); |
134 | private readonly Mock<IMessageService> messageService = new Mock<IMessageService> { DefaultValue = DefaultValue.Mock }; |
135 | + private readonly Mock<IPropertyService> propertyService = new Mock<IPropertyService>(); |
136 | |
137 | public ScriptTaskTests() |
138 | { |
139 | this.session.Setup(s => s.Connection.CreateCommand()).Returns(command.Object); |
140 | + this.command.SetupProperty(c => c.CommandTimeout); |
141 | } |
142 | |
143 | [Fact] |
144 | @@ -32,7 +35,7 @@ |
145 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
146 | version.Setup(v => v.Archive.GetScriptPath("1\\database.xml", "scripts\\schema.sql")).Returns("1\\scripts\\schema.sql"); |
147 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns(this.GetStream("A")); |
148 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
149 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
150 | |
151 | // Act |
152 | task.Execute(session.Object, 1, 1); |
153 | @@ -49,7 +52,7 @@ |
154 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
155 | version.Setup(v => v.Archive.GetScriptPath("1\\database.xml", "scripts\\schema.sql")).Returns("1\\scripts\\schema.sql"); |
156 | version.Setup(v => v.Archive.GetFile("1\\scripts\\schema.sql")).Returns(GetStream("ABCDE")); |
157 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
158 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
159 | |
160 | // Act |
161 | task.Execute(session.Object, 1, 1); |
162 | @@ -67,7 +70,7 @@ |
163 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
164 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
165 | GetStream("ABCDE" + Environment.NewLine + "GO" + Environment.NewLine + "FGHIJ")); |
166 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
167 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
168 | |
169 | // Act |
170 | task.Execute(session.Object, 1, 1); |
171 | @@ -96,7 +99,7 @@ |
172 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
173 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
174 | GetStream(ScriptWithDifferentCasedSeparators)); |
175 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
176 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
177 | |
178 | // Act |
179 | task.Execute(session.Object, 1, 1); |
180 | @@ -124,7 +127,7 @@ |
181 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
182 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
183 | GetStream(ScriptWithSeparatorsWithinLines)); |
184 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
185 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
186 | |
187 | // Act |
188 | task.Execute(session.Object, 1, 1); |
189 | @@ -147,7 +150,7 @@ |
190 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
191 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
192 | GetStream(ScriptWithSeparatorAtStartOfScript)); |
193 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
194 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
195 | |
196 | // Act |
197 | task.Execute(session.Object, 1, 1); |
198 | @@ -168,7 +171,7 @@ |
199 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
200 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
201 | GetStream(ScriptWithSeparatorAtEndOfScript)); |
202 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
203 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
204 | |
205 | // Act |
206 | task.Execute(session.Object, 1, 1); |
207 | @@ -186,7 +189,7 @@ |
208 | version.Setup(v => v.Archive.GetScriptPath("1\\database.xml", "scripts\\schema.sql")).Returns("1\\scripts\\schema.sql"); |
209 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
210 | GetStream(ScriptWithSeparatorAtEndOfScript)); |
211 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
212 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
213 | Exception exception = new Exception(); |
214 | command.Setup(c=>c.ExecuteNonQuery()).Throws(exception); |
215 | |
216 | @@ -207,7 +210,7 @@ |
217 | version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
218 | version.Setup(v => v.Archive.GetScriptPath("1\\database.xml", "scripts\\schema.sql")).Returns("1\\scripts\\schema.sql"); |
219 | version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns((Stream)null); |
220 | - ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object); |
221 | + ScriptTask task = new ScriptTask("scripts\\schema.sql", 0, version.Object, messageService.Object, this.propertyService.Object); |
222 | |
223 | // Act |
224 | Exception thrownException = Record.Exception(() => task.Execute(new Mock<ISession>().Object, 1, 1)); |
225 | @@ -217,6 +220,44 @@ |
226 | Assert.Equal("The script file \"1\\scripts\\schema.sql\" does not exist in the archive.", thrownException.Message); |
227 | } |
228 | |
229 | + [Fact] |
230 | + public void ShouldSetCommandTimeoutIfSpecified() |
231 | + { |
232 | + // Arrange |
233 | + Mock<IDatabaseVersion> version = new Mock<IDatabaseVersion>{ DefaultValue = DefaultValue.Mock }; |
234 | + version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
235 | + version.Setup(v => v.Archive.GetScriptPath("1\\database.xml", "scripts\\schema.sql")).Returns("1\\scripts\\schema.sql"); |
236 | + version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
237 | + GetStream(ScriptWithSeparatorAtEndOfScript)); |
238 | + var task = new ScriptTask("scripts\\test.sql", 0, version.Object, this.messageService.Object, this.propertyService.Object); |
239 | + |
240 | + propertyService.Setup(p => p.GetInt(ScriptTask.CommandTimeoutPropertyName)).Returns(100); |
241 | + |
242 | + // Act |
243 | + task.Execute(this.session.Object, 1, 1); |
244 | + |
245 | + // Assert |
246 | + Assert.Equal(100, task.TaskTimeout); |
247 | + } |
248 | + |
249 | + [Fact] |
250 | + public void ShouldNotSetCommandTimeoutIfNotSpecified() |
251 | + { |
252 | + // Arrange |
253 | + Mock<IDatabaseVersion> version = new Mock<IDatabaseVersion> { DefaultValue = DefaultValue.Mock }; |
254 | + version.Setup(v => v.ManifestPath).Returns("1\\database.xml"); |
255 | + version.Setup(v => v.Archive.GetScriptPath("1\\database.xml", "scripts\\schema.sql")).Returns("1\\scripts\\schema.sql"); |
256 | + version.Setup(v => v.Archive.GetFile(It.IsAny<string>())).Returns( |
257 | + GetStream(ScriptWithSeparatorAtEndOfScript)); |
258 | + var task = new ScriptTask("scripts\\test.sql", 0, version.Object, this.messageService.Object, this.propertyService.Object); |
259 | + |
260 | + // Act |
261 | + task.Execute(this.session.Object, 1, 1); |
262 | + |
263 | + // Assert |
264 | + Assert.Null(task.TaskTimeout); |
265 | + } |
266 | + |
267 | private Stream GetStream(string contents) |
268 | { |
269 | return new MemoryStream(Encoding.Default.GetBytes(contents)); |
270 | |
271 | === modified file 'src/DatabaseVersion/Manifests/ManifestReader.cs' |
272 | --- src/DatabaseVersion/Manifests/ManifestReader.cs 2011-10-10 18:43:53 +0000 |
273 | +++ src/DatabaseVersion/Manifests/ManifestReader.cs 2012-08-29 19:06:19 +0000 |
274 | @@ -58,7 +58,7 @@ |
275 | IDatabaseTaskFactory factory = this.Factories.FirstOrDefault(f => f.CanCreate(element)); |
276 | if (factory != null) |
277 | { |
278 | - return factory.Create(element, element.ElementsBeforeSelf().Count(), version, MessageService); |
279 | + return factory.Create(element, element.ElementsBeforeSelf().Count(), version); |
280 | } |
281 | } |
282 | |
283 | |
284 | === modified file 'src/DatabaseVersion/Property/IPropertyService.cs' |
285 | --- src/DatabaseVersion/Property/IPropertyService.cs 2011-09-02 23:16:14 +0000 |
286 | +++ src/DatabaseVersion/Property/IPropertyService.cs 2012-08-29 19:06:19 +0000 |
287 | @@ -51,6 +51,17 @@ |
288 | /// The prefix to look for. |
289 | /// </param> |
290 | IEnumerable<Property> StartingWith(string prefix); |
291 | + |
292 | + /// <summary> |
293 | + /// Gets the specified property as an int. |
294 | + /// </summary> |
295 | + /// <param name='key'> |
296 | + /// The property key. |
297 | + /// </param> |
298 | + /// <returns> |
299 | + /// The int value or null if the property is not defined, or is not an int. |
300 | + /// </returns> |
301 | + int? GetInt(string key); |
302 | } |
303 | } |
304 | |
305 | |
306 | === modified file 'src/DatabaseVersion/Property/PropertyService.cs' |
307 | --- src/DatabaseVersion/Property/PropertyService.cs 2011-09-03 23:15:46 +0000 |
308 | +++ src/DatabaseVersion/Property/PropertyService.cs 2012-08-29 19:06:19 +0000 |
309 | @@ -53,14 +53,7 @@ |
310 | { |
311 | get |
312 | { |
313 | - Property propertyValue; |
314 | - |
315 | - if (this.properties.TryGetValue(propertyName, out propertyValue)) |
316 | - { |
317 | - return propertyValue; |
318 | - } |
319 | - |
320 | - return null; |
321 | + return this.Get(propertyName); |
322 | } |
323 | } |
324 | |
325 | @@ -88,6 +81,47 @@ |
326 | { |
327 | return this.properties.Where(p => p.Key.StartsWith(prefix)).Select(p => p.Value); |
328 | } |
329 | + |
330 | + /// <summary> |
331 | + /// Gets the specified property as an int. |
332 | + /// </summary> |
333 | + /// <param name='key'> |
334 | + /// The property key. |
335 | + /// </param> |
336 | + /// <returns> |
337 | + /// The int value or null if the property is not defined, or is not an int. |
338 | + /// </returns> |
339 | + public int? GetInt(string key) |
340 | + { |
341 | + Validate.NotNull(() => key); |
342 | + |
343 | + int value; |
344 | + var property = this.Get(key); |
345 | + |
346 | + if (property != null && int.TryParse(property.Value, out value)) |
347 | + { |
348 | + return value; |
349 | + } |
350 | + |
351 | + return null; |
352 | + } |
353 | + |
354 | + /// <summary> |
355 | + /// Get the property with the specified name. |
356 | + /// </summary> |
357 | + /// <param name='propertyName'> |
358 | + /// The name of the property. |
359 | + /// </param> |
360 | + private Property Get(string propertyName) |
361 | + { |
362 | + Property propertyValue; |
363 | + if (this.properties.TryGetValue(propertyName, out propertyValue)) |
364 | + { |
365 | + return propertyValue; |
366 | + } |
367 | + |
368 | + return null; |
369 | + } |
370 | } |
371 | } |
372 | |
373 | |
374 | === modified file 'src/DatabaseVersion/Tasks/IDatabaseTaskFactory.cs' |
375 | --- src/DatabaseVersion/Tasks/IDatabaseTaskFactory.cs 2011-10-10 18:43:53 +0000 |
376 | +++ src/DatabaseVersion/Tasks/IDatabaseTaskFactory.cs 2012-08-29 19:06:19 +0000 |
377 | @@ -19,8 +19,7 @@ |
378 | /// <param name="element">The element containing the definition of the task.</param> |
379 | /// <param name="executionOrder">The zero-based execution order of the task.</param> |
380 | /// <param name="version">The database version that the task is contained within.</param> |
381 | - /// <param name="messageService">The Message Service to use for logging</param> |
382 | /// <returns>The new task.</returns> |
383 | - IDatabaseTask Create(XElement element, int executionOrder, IDatabaseVersion version, IMessageService messageService); |
384 | + IDatabaseTask Create(XElement element, int executionOrder, IDatabaseVersion version); |
385 | } |
386 | } |
387 | |
388 | === modified file 'src/DatabaseVersion/Tasks/Sql/ScriptTask.cs' |
389 | --- src/DatabaseVersion/Tasks/Sql/ScriptTask.cs 2012-01-24 22:01:24 +0000 |
390 | +++ src/DatabaseVersion/Tasks/Sql/ScriptTask.cs 2012-08-29 19:06:19 +0000 |
391 | @@ -9,6 +9,7 @@ |
392 | using System.Diagnostics; |
393 | using System.Text.RegularExpressions; |
394 | |
395 | + using dbversion.Property; |
396 | using dbversion.Version; |
397 | |
398 | using NHibernate; |
399 | @@ -27,6 +28,11 @@ |
400 | "{0}{1}|{0}{1}{0}|{1}{0}"; |
401 | |
402 | /// <summary> |
403 | + /// The name of the command timeout property. |
404 | + /// </summary> |
405 | + public const string CommandTimeoutPropertyName = "dbversion.sql.command_timeout"; |
406 | + |
407 | + /// <summary> |
408 | /// The regex object created from the regex format. |
409 | /// </summary> |
410 | private readonly Regex StringSplitRegex; |
411 | @@ -36,15 +42,30 @@ |
412 | /// </summary> |
413 | private readonly IDatabaseVersion version; |
414 | |
415 | + private readonly IPropertyService propertyService; |
416 | + |
417 | protected override string GetTaskDescription() |
418 | { |
419 | return string.Format("Executing script \"{0}\"", this.GetScriptPath()); |
420 | } |
421 | |
422 | - public ScriptTask(string fileName, int executionOrder, IDatabaseVersion version, IMessageService messageService) |
423 | + /// <summary> |
424 | + /// The Timeout in seconds for the task |
425 | + /// </summary> |
426 | + /// <returns>The Timeout in seconds or if none set null</returns> |
427 | + public int? TaskTimeout |
428 | + { |
429 | + get |
430 | + { |
431 | + return this.propertyService.GetInt(CommandTimeoutPropertyName); |
432 | + } |
433 | + } |
434 | + |
435 | + public ScriptTask(string fileName, int executionOrder, IDatabaseVersion version, IMessageService messageService, IPropertyService propertyService) |
436 | : base(fileName, executionOrder, messageService) |
437 | { |
438 | this.version = version; |
439 | + this.propertyService = propertyService; |
440 | |
441 | this.StringSplitRegex = GetStringSplitRegex(); |
442 | } |
443 | @@ -119,6 +140,7 @@ |
444 | using (var command = session.Connection.CreateCommand()) |
445 | { |
446 | session.Transaction.Enlist(command); |
447 | + if (TaskTimeout.HasValue) command.CommandTimeout = TaskTimeout.Value; |
448 | command.CommandText = batch; |
449 | command.ExecuteNonQuery(); |
450 | } |
451 | |
452 | === modified file 'src/DatabaseVersion/Tasks/Sql/ScriptTaskFactory.cs' |
453 | --- src/DatabaseVersion/Tasks/Sql/ScriptTaskFactory.cs 2011-10-10 09:00:52 +0000 |
454 | +++ src/DatabaseVersion/Tasks/Sql/ScriptTaskFactory.cs 2012-08-29 19:06:19 +0000 |
455 | @@ -7,19 +7,34 @@ |
456 | using System.Xml.Linq; |
457 | using System.ComponentModel.Composition; |
458 | |
459 | + using dbversion.Property; |
460 | using dbversion.Version; |
461 | |
462 | [Export(typeof(IDatabaseTaskFactory))] |
463 | public class ScriptTaskFactory : IDatabaseTaskFactory |
464 | { |
465 | + [Import] |
466 | + public IPropertyService PropertyService |
467 | + { |
468 | + get; |
469 | + set; |
470 | + } |
471 | + |
472 | + [Import] |
473 | + public IMessageService MessageService |
474 | + { |
475 | + get; |
476 | + set; |
477 | + } |
478 | + |
479 | public bool CanCreate(XElement element) |
480 | { |
481 | return element != null && element.Name == "script"; |
482 | } |
483 | |
484 | - public IDatabaseTask Create(XElement element, int executionOrder, IDatabaseVersion version, IMessageService messageService) |
485 | + public IDatabaseTask Create(XElement element, int executionOrder, IDatabaseVersion version) |
486 | { |
487 | - return new ScriptTask(element.Attribute(XName.Get("file")).Value, executionOrder, version, messageService); |
488 | + return new ScriptTask(element.Attribute(XName.Get("file")).Value, executionOrder, version, this.MessageService, this.PropertyService); |
489 | } |
490 | } |
491 | } |
All looks good to me.