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
-~----------~----~----~----~------~----~------~--~---

Reply via email to