I'll just leave this here:
contributing<http://wiki.fluentnhibernate.org/Contributing>
.

On Tue, Mar 16, 2010 at 12:04 PM, Daniel Mirapalheta
<mirapalh...@gmail.com>wrote:

>   About  the proposed changes to FluentMappingsContainter being totally
> superflous you are right, I hadn't realized that the model field is being
> returned in the public property PersistentModel and no, I don't need to set
> the wasused property (neither I don't see why I would need it).
>
>   Actually I have told why I need that. I have data restriction definitions
> stored in the database witch I'll set as filters in the initialization and I
> don't have as classes to be passed to my entities mapping classes so them
> can't apply those filters. Sorry, "new TFilter().Name" was a bad copy and
> paste, it was suposed to be just "name" (the parameter). You told me that it
> won't hurt me to use the already existing methods, take a look:
>
> class DynamicFilter: FilterDefinition
> {
>   public DynamicFilter() { } // FilterDefinition's constructor is
> protected, this allow me to create and set a custom filter (runtime)
> }
> class DummyFilter: FilterDefinition
> {
>   public DummyFilter() { base.WithName(DummyFilter.DummyName); }
>   static string DymmyName;
> }
> class FooMap: ClassMap<Foo>
> {
>   public FooMap()
>   {
>     ... mapping stuff ...
>   }
> }
>
> foreach (DbFilterDef dbf in filterDefinitions) // supposed list I got from
> my database
> {
>   DynamicFilter filter = new DynamicFilter()
>   filter.WithName(dbf.Name);
>   ... set other filter infos ...
>   cfg.Mappings(x => x.FluentMappings.PersistentModel.Add(filter);
>
>   FooMap foo = new FooMap();
>   DummyFilter.DummyName = filter.Name;
>   foo.ApplyFilter<DummyFilter>();
> }
>
>   This kind of ugly code hurts me and I believe that should hurt every
> programmer who reads it... well, this is just a scratch I wrote to explain
> the kind of workaround I have to do so I can setup those filters, yes it may
> not compile (I just wrote it here in this e-mail body), yes it seems silly,
> but in the whole context it has a reason to exists (user defined data
> restrictions witch I set as filters in the initialization).
>
>   Regards,
>   DM
>
> 2010/3/15 snicker <ngordon...@gmail.com>
>
> Correct. What I meant to say was "Why do you need this?"
>>
>> You mention above that you Apply it just by the name. Why? The
>> FilterDefinition classes are hardly more than a few properties and
>> methods for generating some mapping information. It's not going to
>> hurt you particularly badly if you just use the methods already
>> existing. The code you provided wouldn't compile anyway, I believe in
>> your second method you meant "new FilterPart(name, condition);"
>> TFilter is not defined.
>>
>> Your proposed changes to FluentMappingsContainer are TOTALLY
>> superfluous. You've added additional overloads for the Add method
>> taking instances rather than types. Instead of
>> FluentMappingsContainer.Add(), you can call the PersistenceModel
>> directly for this purpose:
>> FluentMappingsContainerInstance.PersistenceModel.Add(IFilterDefinition
>> or IMappingProvider). If you need to set the WasUsed property on the
>> mappings container, either pass in an dummy empty mapping class or use
>> reflection to modify it. Here's an extension method I use:
>>
>>        public static void BecomeUsed(this FluentMappingsContainer m)
>>        {
>>            PropertyInfo pi = m.GetType().GetProperty("WasUsed",
>> BindingFlags.NonPublic | BindingFlags.Instance);
>>            if (pi != null)
>>                pi.SetValue(m, true, null);
>>        }
>>
>>
>>
>> On Mar 15, 10:00 am, Daniel Mirapalheta <mirapalh...@gmail.com> wrote:
>> > I just checked both classes (in the following links) and nothing of that
>> > have been added.
>> >
>> >
>> http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentN...http://github.com/jagregory/fluent-nhibernate/blob/master/src/FluentN.
>> ..
>> >
>> > Regards,
>> > DM
>> >
>> > 2010/3/15 snicker <ngordon...@gmail.com>
>> >
>> >
>> >
>> > > I'm quite confused. Your suggestions exist in the latest revisions of
>> > > the repository. If you check out the repo and build from source you'll
>> > > have exactly what you wish for.
>> >
>> > > On Mar 14, 5:27 pm, "Mira.D" <mirapalh...@gmail.com> wrote:
>> > > >   Hi,
>> >
>> > > >   Just like I told in another post (http://groups.google.com/group/
>> > > > fluent-nhibernate/t/9eb53f6447e9771a) I use to set some dynamic
>> > > > filters on my entities. Actually I have to do a very ugly workaround
>> > > > so I can acomplish that, for the definitions I have to emit code to
>> > > > make the FilterDefinitions inherited classes and for the mapping
>> > > > classes I have to set a static property with the filters witch it
>> has
>> > > > to Apply (when just it needs is the filter name). I think it should
>> be
>> > > > very better if you could add two more overloads in the
>> > > > ClassMap<T>.ApplyFilter method, those should be:
>> >
>> > > >         public ClassMap<T> ApplyFilter(string name)
>> > > >         {
>> > > >             return this.ApplyFilter(name, null);
>> > > >         }
>> > > >         public ClassMap<T> ApplyFilter(string name, string
>> condition)
>> > > >         {
>> > > >             var part = new FilterPart(new TFilter().Name,
>> condition);
>> > > >             filters.Add(part);
>> > > >             return this;
>> > > >         }
>> >
>> > > >   And the current one could be changed to:
>> >
>> > > >         public ClassMap<T> ApplyFilter<TFilter>(string condition)
>> > > > where TFilter : FilterDefinition, new()
>> > > >         {
>> > > >             return this.ApplyFilter(new TFilter().Name, condition);
>> > > >         }
>> >
>> > > >   That should solve part of my problem, second I would have the
>> > > > FluentMappingsContainer.Add restricting me to add just types and
>> > > > forcing me to emit code for the filter definitions as, also, set
>> > > > static properties of my entities mapping classes so they know witch
>> > > > filters should they apply when I could just instantiated then, set
>> the
>> > > > filters on then an pass this instance to the
>> > > > FluentMappingsContainer.Add.
>> >
>> > > >   Would be something like:
>> >
>> > > >     public class FluentMappingsContainer
>> > > >     {
>> > > >         private readonly IList<IMappingProvider> mappings = new
>> > > > List<IMappingProvider>();
>> > > >         private readonly IList<IFilterDefinition> filters = new
>> > > > List<IFilterDefinition>();
>> > > >         ...
>> > > >         public FluentMappingsContainer Add(IMappingProvider mapping)
>> > > >         {
>> > > >             mappings.Add(mapping);
>> > > >             WasUsed = true;
>> > > >             return this;
>> > > >         }
>> > > >         public FluentMappingsContainer Add(IFilterDefinition filter)
>> > > >         {
>> > > >             filters.Add(filters);
>> > > >             WasUsed = true;
>> > > >             return this;
>> > > >         }
>> > > >         internal void Apply(Configuration cfg)
>> > > >         {
>> > > >             foreach (var mapping in mappings)
>> > > >             {
>> > > >                 model.Add(mapping);
>> > > >             }
>> >
>> > > >             foreach (var filter in filters)
>> > > >             {
>> > > >                 model.Add(filter);
>> > > >             }
>> >
>> > > >             foreach (var assembly in assemblies)
>> > > >             {
>> > > >                 model.AddMappingsFromAssembly(assembly);
>> > > >             }
>> >
>> > > >             foreach (var type in types)
>> > > >             {
>> > > >                 model.Add(type);
>> > > >             }
>> >
>> > > >             if (!string.IsNullOrEmpty(exportPath))
>> > > >                 model.WriteMappingsTo(exportPath);
>> >
>> > > >             model.Configure(cfg);
>> > > >         }
>> >
>> > > >   I have posted this last year (
>> http://groups.google.com/group/fluent-
>> > > > nhibernate/browse_thread/thread/fdc23fd8197d9bbc/
>> > > > 743077793216c027#743077793216c027) but got nothing, to my happiness
>> I
>> > > > haven't to change fluentnh code that time as in that case was for
>> > > > dicriminating classes witch have it's behavior changed to use
>> > > > SubclassMap<T>. I'm not posting a real case because the code is long
>> > > > and uggly and I don't see that those overloads should be a major
>> > > > change in the FluentNHibernate structure (enlighten me if I'm
>> wrong),
>> > > > all those code have been tested here and worked fine I just don't
>> use
>> > > > them because if I make a change on FluentNHibernate I'll have to
>> peek
>> > > > it on every new version I download, too messy, error prone,
>> > > > whatever...
>> >
>> > > >   Best Regards,
>> > > >   DM
>> >
>> > > --
>> > > You received this message because you are subscribed to the Google
>> Groups
>> > > "Fluent NHibernate" group.
>> > > To post to this group, send email to
>> fluent-nhibern...@googlegroups.com.
>> > > To unsubscribe from this group, send email to
>> > > fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com>
>> <fluent-nhibernate%2bunsubscr...@googlegroups.com<fluent-nhibernate%252bunsubscr...@googlegroups.com>
>> >
>> > > .
>> > > For more options, visit this group at
>> > >http://groups.google.com/group/fluent-nhibernate?hl=en.
>> >
>> > --
>> > Daniel Mirapalheta
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Fluent NHibernate" group.
>> To post to this group, send email to fluent-nhibern...@googlegroups.com.
>> To unsubscribe from this group, send email to
>> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com>
>> .
>> For more options, visit this group at
>> http://groups.google.com/group/fluent-nhibernate?hl=en.
>>
>>
>
>
> --
> Daniel Mirapalheta
>
> --
> You received this message because you are subscribed to the Google Groups
> "Fluent NHibernate" group.
> To post to this group, send email to fluent-nhibern...@googlegroups.com.
> To unsubscribe from this group, send email to
> fluent-nhibernate+unsubscr...@googlegroups.com<fluent-nhibernate%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/fluent-nhibernate?hl=en.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Fluent NHibernate" group.
To post to this group, send email to fluent-nhibern...@googlegroups.com.
To unsubscribe from this group, send email to 
fluent-nhibernate+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/fluent-nhibernate?hl=en.

Reply via email to