Thanks James :-), i'll pull it down and test shortly. I'm trying to decide whether to feel psyched or a bit self conscious about having my name in the code base anywhere. i'm leaning toward the later ;-). On Wed, Aug 26, 2009 at 12:30 PM, James Gregory <[email protected]>wrote:
> I've just committed a change that should hopefully fix this. There's now a > test in your honor ;) *ShouldHandleEverettsWeirdMapping* > > On Wed, Aug 26, 2009 at 1:20 PM, Everett Muniz <[email protected]>wrote: > >> I've included the classes I'm mapping along with the intermediate classes >> in the inheritance hierarchy. >> >> public abstract class ColorSource >> { >> public ColorSource() >> { >> } >> >> public abstract Color GetColorFrom(IRecord record); >> } >> >> public class ConstantColorSource : ColorSource >> { >> public const string ColorPartOutOfRangeMessage = "{0} is less than >> 0 or greater than 255."; >> >> protected internal ConstantColorSource() >> { >> } >> >> internal ConstantColorSource(int alpha, int red, int green, int >> blue) >> { >> if (!WholeNumber.IsByteValue(alpha)) >> throw new >> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "alpha"), >> "alpha"); >> if (!WholeNumber.IsByteValue(red)) >> throw new >> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "red"), "red"); >> if (!WholeNumber.IsByteValue(green)) >> throw new >> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "green"), >> "green"); >> if (!WholeNumber.IsByteValue(blue)) >> throw new >> ArgumentException(String.Format(ColorPartOutOfRangeMessage, "blue"), >> "blue"); >> >> this.Alpha = alpha; >> this.Blue = blue; >> this.Green = green; >> this.Red = red; >> } >> >> internal ConstantColorSource(int red, int green, int blue) >> : this(Byte.MaxValue, red, green, blue) >> { >> } >> >> internal ConstantColorSource(Color color) >> { >> this.Alpha = color.A; >> this.Red = color.R; >> this.Green = color.G; >> this.Blue = color.B; >> } >> >> public virtual int Alpha { get; private set; } >> >> public virtual int Blue { get; private set; } >> >> public virtual int Green { get; private set; } >> >> public virtual int Red { get; private set; } >> >> public override Color GetColorFrom(IRecord record) >> { >> return Color.FromArgb(this.Alpha, this.Red, this.Green, >> this.Blue); >> } >> } >> >> public abstract class DataBoundColorSource : ColorSource >> { >> protected internal DataBoundColorSource() >> { >> } >> >> public DataBoundColorSource(RecordAccessor recordAccessor) >> { >> if (recordAccessor == null) >> throw new ArgumentNullException("recordAccessor", >> "recordAccessor is null."); >> this.RecordAccessor = recordAccessor; >> } >> >> public virtual RecordAccessor RecordAccessor { get; private set; } >> } >> >> public abstract class ColorMapColorSource : DataBoundColorSource >> { >> protected internal ColorMapColorSource() >> { >> } >> >> public ColorMapColorSource(ColorMap colorMap, RecordAccessor >> recordAccessor) >> : base(recordAccessor) >> { >> if (colorMap == null) >> throw new ArgumentNullException("colorMap", "colorMap is >> null."); >> this.ColorMap = colorMap; >> } >> >> public virtual ColorMap ColorMap { get; private set; } >> } >> >> public class SubstringColorSource : ColorMapColorSource >> { >> public const string ColorMappingExceptionMessage = "An error was >> encountered while attempting to locate a color for the value '{0}' in the >> '{1}' color map."; >> public const string RecordAccessExceptionMessage = "An error was >> encountered while attempting to access the supplied record ({0})."; >> public const string ValueNotMappedToValidColorExceptionMessage = >> "The value '{0}' is not mapped to a valid color in the {1} color map."; >> >> private static readonly TextSelector TextSelector = new >> TextSelector(); >> >> internal SubstringColorSource(int start, int length, ColorMap >> colorMap, RecordAccessor recordAccessor) >> : base(colorMap, recordAccessor) >> { >> this.Start = start; >> this.Length = length; >> } >> >> protected internal SubstringColorSource() >> { >> } >> >> public virtual int Length { get; private set; } >> >> public virtual int Start { get; private set; } >> >> public override Color GetColorFrom(IRecord record) >> { >> if (record == null) >> throw new ArgumentNullException("record", "record is >> null."); >> >> var value = TextSelector.Select(getValue(record), this.Start, >> this.Length); >> var color = getColor(value); >> >> if (color.ToArgb() == Color.Empty.ToArgb()) >> { >> throw new ApplicationException(String.Format( >> ValueNotMappedToValidColorExceptionMessage, >> value, >> this.ColorMap.Name >> )); >> } >> >> return color; >> } >> >> private Color getColor(string value) >> { >> try >> { >> return this.ColorMap.FindColorBy(value); >> } >> catch (Exception exception) >> { >> throw new ApplicationException( >> String.Format(ColorMappingExceptionMessage, value, >> this.ColorMap.Name), >> exception >> ); >> } >> } >> >> private string getValue(IRecord record) >> { >> try >> { >> return this.RecordAccessor.GetValueFrom(record); >> } >> catch (Exception exception) >> { >> throw new ApplicationException( >> String.Format(RecordAccessExceptionMessage, >> record.Schema.ToString()), >> exception >> ); >> } >> } >> } >> >> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Fluent NHibernate" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/fluent-nhibernate?hl=en -~----------~----~----~----~------~----~------~--~---
