Index: src/Plugins/Wti/Wti.Service/PipingCalculationService.cs
===================================================================
diff -u -r1689206627a4343d07fafcebb0a931b7a0e9e2d2 -r49b7320ad56bfa60788e8792b79dd537318f68ff
--- src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 1689206627a4343d07fafcebb0a931b7a0e9e2d2)
+++ src/Plugins/Wti/Wti.Service/PipingCalculationService.cs (.../PipingCalculationService.cs) (revision 49b7320ad56bfa60788e8792b79dd537318f68ff)
@@ -1,66 +1,101 @@
-using System.Collections.Generic;
+using System;
+using log4net;
using Wti.Calculation.Piping;
using Wti.Data;
+using Wti.Service.Properties;
namespace Wti.Service
{
///
- /// This class controls the and its PipingDataNodePresenter.
- /// Interactions from the PipingDataNodePresenter are handles by this class.
+ /// This class is responsible for invoking operations on the . Error and status information is
+ /// logged during the execution of the operation. At the end of an operation, a is returned,
+ /// representing the result of the operation.
///
public static class PipingCalculationService
{
+ private static readonly ILog PipingDataLogger = LogManager.GetLogger(typeof(PipingData));
+
///
/// Performs a piping calculation based on the supplied and sets
- /// to the if the calculation was successful.
+ /// to the if the calculation was successful. Error and status information is logged during
+ /// the execution of the operation.
///
/// The to base the input for the calculation upon.
- /// A with all the messages that were returned due to validation errors in the given
- /// or error message that occurred when performing the calculation.
- public static List PerfromValidatedCalculation(PipingData pipingData)
+ /// If contains validation errors, then is returned.
+ /// If problems were encountered during the calculation, is returned.
+ /// Otherwise, is returned.
+ public static PipingCalculationResult PerfromValidatedCalculation(PipingData pipingData)
{
- var validationResults = Validate(pipingData);
- if (validationResults.Count > 0)
+ PipingCalculationResult validationResult = Validate(pipingData);
+
+ if (validationResult == PipingCalculationResult.Successful)
{
ClearOutput(pipingData);
- return validationResults;
+ return Calculate(pipingData);
}
- try
+
+ return validationResult;
+ }
+
+ ///
+ /// Performs validation over the values on the given . Error and status information is logged during
+ /// the execution of the operation.
+ ///
+ /// The for which to validate the values.
+ /// If contains validation errors, then is returned.
+ /// Otherwise, is returned.
+ public static PipingCalculationResult Validate(PipingData pipingData)
+ {
+ PipingDataLogger.Info(String.Format(Resources.ValidationStarted_0, DateTimeService.CurrentTimeAsString));
+
+ var validationResults = new PipingCalculation(CreateInputFromData(pipingData)).Validate();
+ LogMessagesAsError(validationResults.ToArray());
+
+ PipingDataLogger.Info(String.Format(Resources.ValidationEnded_0, DateTimeService.CurrentTimeAsString));
+
+ return validationResults.Count > 0 ? PipingCalculationResult.ValidationErrors : PipingCalculationResult.Successful;
+ }
+
+ private static void LogMessagesAsError(params string[] errorMessages)
+ {
+ foreach (var errorMessage in errorMessages)
{
- Calculate(pipingData);
+ PipingDataLogger.Error(string.Format(Resources.ErrorInPipingCalculation_0, errorMessage));
}
- catch (PipingCalculationException e)
- {
- ClearOutput(pipingData);
- return new List{ e.Message };
- }
- return new List();
}
private static void ClearOutput(PipingData pipingData)
{
pipingData.Output = null;
}
- private static void Calculate(PipingData pipingData)
+ private static PipingCalculationResult Calculate(PipingData pipingData)
{
- var input = CreateInputFromData(pipingData);
- var pipingCalculation = new PipingCalculation(input);
+ PipingDataLogger.Info(String.Format(Resources.CalculationStarted_0, DateTimeService.CurrentTimeAsString));
- var pipingResult = pipingCalculation.Calculate();
+ try
+ {
+ var pipingResult = new PipingCalculation(CreateInputFromData(pipingData)).Calculate();
- pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
- pipingResult.UpliftFactorOfSafety,
- pipingResult.HeaveZValue, pipingResult.HeaveFactorOfSafety, pipingResult.SellmeijerZValue, pipingResult.SellmeijerFactorOfSafety);
+ pipingData.Output = new PipingOutput(pipingResult.UpliftZValue,
+ pipingResult.UpliftFactorOfSafety,
+ pipingResult.HeaveZValue,
+ pipingResult.HeaveFactorOfSafety,
+ pipingResult.SellmeijerZValue,
+ pipingResult.SellmeijerFactorOfSafety);
+ }
+ catch (PipingCalculationException e)
+ {
+ LogMessagesAsError(e.Message);
+ return PipingCalculationResult.CalculationErrors;
+ }
+ finally
+ {
+ PipingDataLogger.Info(String.Format(Resources.CalculationEnded_0, DateTimeService.CurrentTimeAsString));
+ }
+ return PipingCalculationResult.Successful;
}
- public static List Validate(PipingData pipingData)
- {
- var input = CreateInputFromData(pipingData);
-
- return new PipingCalculation(input).Validate();
- }
-
private static PipingCalculationInput CreateInputFromData(PipingData pipingData)
{
return new PipingCalculationInput(