Mercurial > repos > IBBoard.WarFoundry.API
view API/FileLoadFailure.cs @ 493:6b0ca39025ed
Re #423: Support nested units in GTK UI
* Swap order of removing unit from parent so that we validation at the appropriate time
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Mon, 06 Aug 2012 20:44:26 +0100 |
parents | 1ed2f3ab5e35 |
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; using IBBoard.WarFoundry.API.Loading; 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 ILoadableObject 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="ILoadableObject"/> 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(ILoadableObject 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="ILoadableObject"/> 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(ILoadableObject 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="ILoadableObject"/> 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(ILoadableObject file, IWarFoundryFactory factory, string message, string translationID, Exception exception) { failedFile = file; loadingFactory = factory; defaultMessage = message; messageTranslationID = translationID; cause = exception; } public ILoadableObject FailedFile { get { return failedFile; } } public string Message { get { if (message == null) { string fileName = FailedFile.Name; string factoryType = (loadingFactory == null ? "" : loadingFactory.GetType().Name); if (String.IsNullOrEmpty(messageTranslationID)) { message = String.Format(defaultMessage, fileName, factoryType); } else { message = Translation.GetTranslation(messageTranslationID, defaultMessage, fileName, factoryType); } } return message; } } public Exception Exception { get { return cause; } } } }