Mercurial > repos > snowblizz-super-API-ideas
view api/FileLoadFailure.cs @ 108:2060f23abee9
Re #53: Create XML saver
* Add saving of unit equipment
* Add extra property to DTD to indicate whether equipment amount is fixed or a ratio
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 21 Aug 2009 20:12:27 +0000 |
parents | 2f3cafb69799 |
children |
line wrap: on
line source
// This file (FileLoadFailure.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2009 IBBoard. // // The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. using System; using System.IO; using IBBoard.Lang; using IBBoard.WarFoundry.API.Factories; namespace IBBoard.WarFoundry.API { /// <summary> /// A container class that holds information about file load failures. Core information covers the file that failed and a message. Additional information includes the factory loading the file and the excetion that was thrown. Messages are passed through <code>String.Format</code> and supplied with the failed file path and the failing factory /// </summary> public class FileLoadFailure { private FileInfo failedFile; private IWarFoundryFactory loadingFactory; private string defaultMessage; private string messageTranslationID; private string message; private Exception cause; /// <summary> /// Constructor for a failed file load where no factory was found. Translatable messages can be providied through a <code>translationID</code> or skipped by passing <code>null</code>. /// </summary> /// <param name="file"> /// The <see cref="FileInfo"/> that failed to load /// </param> /// <param name="message"> /// A message about the failure in English - used as a default fall-back message. /// </param> /// <param name="translationID"> /// The ID of a translation for the message. /// </param> public FileLoadFailure(FileInfo file, string message, string translationID) : this (file, null, message, "") { } /// <summary> /// Constructor for a failed file load where a factory was identified as supporting the file but failed to load it. Translatable messages can be providied through a <code>translationID</code> or skipped by passing <code>null</code>. /// </summary> /// <param name="file"> /// The <see cref="FileInfo"/> that failed to load /// </param> /// <param name="factory"> /// The <see cref="IWarFoundryFactory"/> that failed to load the file /// </param> /// <param name="message"> /// A message about the failure in English - used as a default fall-back message. /// </param> /// <param name="translationID"> /// The ID of a translation for the message. /// </param> public FileLoadFailure(FileInfo file, IWarFoundryFactory factory, string message, string translationID) : this(file, factory, message, translationID, null) { } /// <summary> /// Constructor for a failed file load where a factory was identified as supporting the file but an exception occurred while loading it. Translatable messages can be providied through a <code>translationID</code> or skipped by passing <code>null</code>. /// </summary> /// <param name="file"> /// The <see cref="FileInfo"/> that failed to load /// </param> /// <param name="factory"> /// The <see cref="IWarFoundryFactory"/> that failed to load the file /// </param> /// <param name="message"> /// A message about the failure in English - used as a default fall-back message. /// </param> /// <param name="translationID"> /// The ID of a translation for the message. /// </param> /// <param name="exception"> /// The <see cref="Exception"/> that occurred to cause the load to fail /// </param> public FileLoadFailure(FileInfo file, IWarFoundryFactory factory, string message, string translationID, Exception exception) { failedFile = file; loadingFactory = factory; defaultMessage = message; messageTranslationID = translationID; cause = exception; } public FileInfo FailedFile { get { return failedFile; } } public string Message { get { if (message == null) { string fileName = FailedFile.FullName; string factoryType = (loadingFactory == null ? "" : loadingFactory.GetType().Name); if (messageTranslationID == "" || messageTranslationID == null) { message = String.Format(defaultMessage, fileName, factoryType); } else { message = Translation.GetTranslation(messageTranslationID, defaultMessage, fileName, factoryType); } } return message; } } public Exception Exception { get { return cause; } } } }