OK, well if they're nullable you could use configure() to default the
property to NULL, and then check for nulls in your method rather than
checking for "".  Does that make sense?


On Wed, Aug 26, 2009 at 9:15 PM, Jim Rising<cfflex...@jimrising.com> wrote:
> I just got your previous email on that... (after i sent my last).
>
> I checked my local transfer config, and nullable="true". I have to pull my
> laptop up to date with svn ... been awhile since i've worked from it... and
> all my tests are failing at the moment.
>
> thanks for all the help here!
>
> -jim
>
>
> On Wed, Aug 26, 2009 at 8:09 PM, Bob Silverberg <bob.silverb...@gmail.com>
> wrote:
>>
>> Which brings me back to my question: Is loginRequired nullable?
>>
>> On Wed, Aug 26, 2009 at 9:02 PM, Jim Rising<cfflex...@jimrising.com>
>> wrote:
>> > that would be great if i could actually evaluate it as empty or null. my
>> > if(loginRequired GT "") evaluation is an attempt at not including
>> > loginRequired in the map. if i can only conditionally evaluate a boolean
>> > as
>> > true or false and not "" (empty) or NULL, i do not have the ability to
>> > dynamically exclude it from the map because it will always evaluate as
>> > 'false' (defaulted from transfer within my handler, then evaluated in my
>> > conditional within my manager) even if it is left "empty" by me when i
>> > first
>> > create the transfer object from my event handler.
>> >
>> > my issue is that i actually do want to filter by it, and i want to
>> > filter
>> > 'true', 'false', as well as "true and false".
>> >
>> > again... i'm taking in arguments from the request scope into the event
>> > scope
>> > (via coldbox), and turning those into a transfer object. when that
>> > transfer
>> > object is created, empty properties are either left empty (strings) or
>> > else
>> > default properties are applied (numeric, uuid, and boolean). the fact
>> > that
>> > numeric and uuid apply default values has (up to now) not been an issue
>> > because i can actually evaluate them conditionally and the likelyhood
>> > that
>> > the defaults would show up in my data is neglligible. however, i can see
>> > how
>> > this would also be a problem if i actually did want to filter on '0' for
>> > a
>> > numeric property.
>> >
>> > --
>> > Jim Rising
>> > Serial Entrepreneur
>> > Software Engineer
>> > Web Developer
>> >
>> > "Knowledge work requires both autonomy and accountability."
>> >
>> > On Wed, Aug 26, 2009 at 6:27 PM, Mark Mandel <mark.man...@gmail.com>
>> > wrote:
>> >>
>> >> But I can see that you are including it in your:
>> >> map.loginRequired
>> >>
>> >> If you don't want to filter by it, then don't include it in the
>> >> listByPropertyMap()
>> >>
>> >> Mark
>> >>
>> >> On Thu, Aug 27, 2009 at 7:35 AM, Jim Rising <cfflex...@jimrising.com>
>> >> wrote:
>> >>>
>> >>> no. i want both true and false (all records independent of the boolean
>> >>> field).
>> >>>
>> >>> preferably, when i am not populating setLoginRequired() myself... i
>> >>> would rather it not include it in the where clause.
>> >>>
>> >>> -jim
>> >>>
>> >>>
>> >>> On Aug 26, 3:35 pm, Mark Mandel <mark.man...@gmail.com> wrote:
>> >>> > I'm so confused still... so you want a list of all records that are
>> >>> > false...
>> >>> > but not the ones that are false? Huh?
>> >>> >
>> >>> > Mark
>> >>> >
>> >>> >
>> >>> >
>> >>> > On Thu, Aug 27, 2009 at 1:08 AM, Jim Rising
>> >>> > <cfflex...@jimrising.com>
>> >>> > wrote:
>> >>> > > The only workaround that i've found for this is to set all of my
>> >>> > > boolean
>> >>> > > fields to varchar. if i do this and the request does not contain
>> >>> > > loginRequired, it does not seem to be included in transfer's where
>> >>> > > clause,
>> >>> > > thereby returning all of the true and all of the false records.
>> >>> >
>> >>> > > --
>> >>> > > Jim Rising
>> >>> > > Serial Entrepreneur
>> >>> > > Software Engineer
>> >>> > > Web Developer
>> >>> >
>> >>> > > "Knowledge work requires both autonomy and accountability."
>> >>> >
>> >>> > > On Wed, Aug 26, 2009 at 10:02 AM, Jim Rising
>> >>> > > <cfflex...@jimrising.com>wrote:
>> >>> >
>> >>> > >> it seems that even if i do not pass my loginRequired in as part
>> >>> > >> of
>> >>> > >> the
>> >>> > >> request, it still finds it's way into transfer's where clause
>> >>> > >> with
>> >>> > >> the
>> >>> > >> default of 'false':
>> >>> >
>> >>> > >> 'select name, description, loginRequired, apiEventID from
>> >>> > >> apievents
>> >>> > >> where
>> >>> > >> loginRequired = false'
>> >>> >
>> >>> > >> the problem seems to be that because
>> >>> > >> arguments.apiEvent.getLoginRequired()
>> >>> > >> is already set as 'false', loginRequired always evaluates as GT
>> >>> > >> "",
>> >>> > >> and gets
>> >>> > >> passed into my map. If I change it to anything else via
>> >>> > >> configure()
>> >>> > >> other
>> >>> > >> than true or false, it is no longer boolean and throws a type
>> >>> > >> error
>> >>> > >> (makes
>> >>> > >> sense). i have handled this with other data types by checking for
>> >>> > >> the
>> >>> > >> default value, but the nature of bit values seems to create a
>> >>> > >> paradox where
>> >>> > >> i can't just obtain a list of true and false records. :)
>> >>> >
>> >>> > >> ultimately what i'm wanting is that if there is nothing passed
>> >>> > >> into
>> >>> > >> the
>> >>> > >> request scope for 'loginRequired', i don't want it included in
>> >>> > >> the
>> >>> > >> map for
>> >>> > >> listByPropertyMap.
>> >>> >
>> >>> > >> Here is the relavent portion of my manager:
>> >>> >
>> >>> > >>     <cffunction name="getByAttributesRelated" access="public"
>> >>> > >> returntype="any">
>> >>> > >>         <cfargument name="apiEvent"
>> >>> > >> type="transfer.com.transferObject"
>> >>> > >> required="true">
>> >>> > >>         <cfargument name="sortBy" type="string" required="false"
>> >>> > >> default="userID">
>> >>> > >>         <cfargument name="orderAsc" type="string"
>> >>> > >> required="false"
>> >>> > >> default="true">
>> >>> >
>> >>> > >>         <cfset var apiEventID =
>> >>> > >> arguments.apiEvent.getApiEventID()>
>> >>> > >>         <cfset var name = arguments.apiEvent.getName()>
>> >>> > >>         <cfset var description =
>> >>> > >> arguments.apiEvent.getDescription()>
>> >>> > >>         <cfset var loginRequired =
>> >>> > >> arguments.apiEvent.getLoginRequired()>
>> >>> >
>> >>> > >>         <cfscript>
>> >>> > >>         map = StructNew();
>> >>> > >>         if(apiEventID GT "" and apiEventID NEQ 0)
>> >>> > >>         {
>> >>> > >>             map.apiEventID = apiEventID;
>> >>> > >>         }
>> >>> > >>         if(name GT "")
>> >>> > >>         {
>> >>> > >>             map.name = name;
>> >>> > >>         }
>> >>> > >>         if(description GT "")
>> >>> > >>         {
>> >>> > >>             map.description = description;
>> >>> > >>         }
>> >>> > >>         if(loginRequired GT "")
>> >>> > >>         {
>> >>> > >>             map.loginRequired = loginRequired;
>> >>> > >>         }
>> >>> >
>> >>> > >>         // get a query of the users that match this map
>> >>> > >>         apiEvents =
>> >>> > >> transfer.listByPropertyMap("apiEvent.ApiEvent",
>> >>> > >> map,
>> >>> > >> "#arguments.sortBy#", #arguments.orderASC#);
>> >>> >
>> >>> > >> Thanks for the help!
>> >>> >
>> >>> > >> --
>> >>> > >> Jim Rising
>> >>> > >> Serial Entrepreneur
>> >>> > >> Software Engineer
>> >>> > >> Web Developer
>> >>> >
>> >>> > >> "Knowledge work requires both autonomy and accountability."
>> >>> >
>> >>> > >> On Tue, Aug 25, 2009 at 4:27 PM, Mark Mandel
>> >>> > >> <mark.man...@gmail.com>wrote:
>> >>> >
>> >>> > >>> Jim, I'm trying to follow you here...
>> >>> >
>> >>> > >>> On Wed, Aug 26, 2009 at 6:41 AM, Jim Rising
>> >>> > >>> <cfflex...@jimrising.com>wrote:
>> >>> >
>> >>> > >>>> just curious if anyone has ever run into any issues with
>> >>> > >>>> transfer
>> >>> > >>>> creating default values for boolean?
>> >>> >
>> >>> > >>> Transfer default boolean values to false, yes. You can override
>> >>> > >>> this in a
>> >>> > >>> configure() method.
>> >>> >
>> >>> > >>>> what i'm doing, is building a transfer object out of an event
>> >>> > >>>> into
>> >>> > >>>> a
>> >>> > >>>> coldbox handler called 'apiEvent.getByAttributes', and then
>> >>> > >>>> passing these
>> >>> > >>>> into a manager i've built called 'apiEvent.getByAttributes'...
>> >>> > >>>> one
>> >>> > >>>> of the
>> >>> > >>>> properties is 'loginRequired', which in mySQL is a tinyInt, and
>> >>> > >>>> in
>> >>> > >>>> my
>> >>> > >>>> transfer config is a boolean. when i instatiate the apiEvent
>> >>> > >>>> transfer object
>> >>> > >>>> out of the event scope data (request), and there is no
>> >>> > >>>> event.getValue("loginRequired"), the getLoginRequired() from
>> >>> > >>>> transfer
>> >>> > >>>> defaults to 'false'.
>> >>> >
>> >>> > >>> Is this a problem? What would you like it to default to (in your
>> >>> > >>> application context)?
>> >>> >
>> >>> > >>>> the problem that i am trying to resolve is simply that i would
>> >>> > >>>> like to
>> >>> > >>>> retrieve via listByPropertyMap (in the manager) a list of ALL
>> >>> > >>>> of
>> >>> > >>>> my
>> >>> > >>>> apiEvents (irrespective of loginRequired) but also still be
>> >>> > >>>> able
>> >>> > >>>> to retrieve
>> >>> > >>>> apiEvents with loginRequired explicitly declared true or false.
>> >>> > >>>> it
>> >>> > >>>> seems
>> >>> > >>>> that i can only retrieve true or false, but not both because
>> >>> > >>>> transfer
>> >>> > >>>> defaults to false. i get why it's doing it, and i've worked
>> >>> > >>>> around
>> >>> > >>>> it with
>> >>> > >>>> other field types... but have not figured out a way to deal
>> >>> > >>>> with
>> >>> > >>>> boolean.
>> >>> >
>> >>> > >>> This is where you lose me. Maybe if you provide an example of
>> >>> > >>> what
>> >>> > >>> you
>> >>> > >>> are trying to do?
>> >>> >
>> >>> > >>> Mark
>> >>> >
>> >>> > >>> --
>> >>> > >>> E: mark.man...@gmail.com
>> >>> > >>> T:http://www.twitter.com/neurotic
>> >>> > >>> W:www.compoundtheory.com
>> >>> >
>> >>> > --
>> >>> > E: mark.man...@gmail.com
>> >>> > T:http://www.twitter.com/neurotic
>> >>> > W:www.compoundtheory.com
>> >>>
>> >>
>> >>
>> >>
>> >> --
>> >> E: mark.man...@gmail.com
>> >> T: http://www.twitter.com/neurotic
>> >> W: www.compoundtheory.com
>> >>
>> >>
>> >>
>> >
>> >
>> >
>> > >
>> >
>>
>>
>>
>> --
>> Bob Silverberg
>> www.silverwareconsulting.com
>>
>>
>
>
>
> --
> Jim Rising
> Serial Entrepreneur
> Software Engineer
> Web Developer
>
> "Knowledge work requires both autonomy and accountability."
>
> >
>



-- 
Bob Silverberg
www.silverwareconsulting.com

--~--~---------~--~----~------------~-------~--~----~
Before posting questions to the group please read:
http://groups.google.com/group/transfer-dev/web/how-to-ask-support-questions-on-transfer

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

Reply via email to