Hi Angelo, >> The question is, why does EO expect a column for a derived attribute for a >> custom class and not for a ERXGenericRecord?
It doesn’t. You’ve found a EntityModeler bug I just found last week as well. A derived attribute should not have a value for “columnName” in the .plist - regardless if it has a specific custom/generic class or not. It should either be an empty string (columnName = "";) or just remove the entry all together. I don’t think EOF will even look at the definition entry if there is a value for columnName. Your entry of: >> definition = "case code when 0 then 'Active' when 1 then 'Inactive' end"; Should work correctly if that would be a valid SQL clause in a MySQL select statement. I think if you just get rid of the columnName entry it should work. Dave On Mar 23, 2014, at 1:50 PM, Ângelo Andrade Cirino <aacir...@gmail.com> wrote: > Hi Aaron, > > 1) You are right, I am using Eclipse and WOlips, so, forgive me for the old > times lingo, but I am really using Eclipse's (WOlips) Entity Modeler. > > 2) Since I am dedicating some time to deepen my understanding of Wonder I > decided to do it with a new Eclipse (Kepler) install. I am using Kepler and > the latest WOlips 4.3 stable build. After finishing installation I just > forgot to turn off generate bundles... > > 3) Unfortunately we need to live with the Eclipse problems. But Apple's PB > and EOModeler weren't free of problems too… > > Angelo > > > 2014-03-23 14:32 GMT-03:00 Aaron Rosenzweig <aa...@chatnbike.com>: > Hi Angelo, > > Glad you got it working in the end. A couple things though: > > 1) You keep saying “EOModeler.” Technically that is an Apple product that > requires the Objective-C to Java bridge which has not worked since probably > Mac OS X Tiger. Is that what you are using or are you using “EntityModeler” > that runs in Eclipse? > > 2) Are you using the “bundle-less build” in Eclipse? If you are not, some of > these problems could be related to that. Since it has been possible to run > without generating a bundle, I doubt anyone has tested the older way much. > > 3) Eclipse just sucks… in general. I mean, it’s a tall order, taking all > those “dead” files on disk and then puffing them up like the “living dead” in > a cool IDE so that you can see “who calls who” and “refactor” etc. But It’s > easy to get out of sync or just to have problems. If you are running > EntityModeler on its own (Can you do that? I know RuleModeler can… I’m not > sure about EntityModeler) then you better “refresh” all your projects and > “clean” all your projects after you make an edit and save from EntityModeler. > It’s what I have to do when using any external tool. And sometimes, even when > I’m totally in the Eclipse universe something invariably will screw the pooch > and I need to “refresh” “clean all” and sometimes restart Eclipse. I call it > the “Eclipse dance." > AARON ROSENZWEIG / Chat 'n Bike > e: aa...@chatnbike.com t: (301) 956-2319 > > > On Mar 23, 2014, at 11:58 AM, Ângelo Andrade Cirino <aacir...@gmail.com> > wrote: > >> Hi Aaron, >> >> Thank you for your prompt answer. Unfortunately none of the suggestions >> worked. >> >> 1) I can't find any combination of double or single apostrophe that will >> work. A similar MySQL SELECT statement is as simple as this >> >> select Party.id as partyID, (case status >> when 0 then 'Active' >> when 1 then 'Inactive' >> end) as fullStatus from Party; >> >> Even this simple derived attribute that returns a constant won't work (from >> the plist entity file): >> >> { >> columnName = fullStatus; >> definition = "'Full Status'"; >> name = fullStatus; >> prototypeName = varchar16; >> }, >> >> with the following error: >> >> IllegalStateException: sqlStringForAttribute: attempt to generate SQL for >> attribute 'fullStatus' on entity 'Party' with undefined column name. You >> must define a column name for this attribute before attempting a database >> operation. >> >> 2) The read format option didn't work either since the attribute is an >> integer number and the return value is a string. I attempted this format: >> >> if(%P,'Active','Inactive') >> >> and it resulted in this error: >> >> JDBCAdaptorException: Invalid value for getInt() - 'Inactive' >> >> However, this works just fine as a read format: >> >> if(%P,2*%P,5*%P) >> >> But I am stubborn and think that a derived attribute is a desirable >> attribute. I would like to use it for more complex operations, for example >> involving concatenation of strings in related entities. >> >> Anyway, trying to figure out what is happening, it occurred to me that my >> Party entity is a custom class, so I tried a non-custom class with a simple >> entity to see if the derived attribute would work. And it worked. My simple >> tentative entity is this: >> >> { >> attributes = ( >> {columnName = code; name = code; prototypeName = intNumber; }, >> { >> columnName = fullStatus; >> definition = "case code when 0 then 'Active' when 1 then >> 'Inactive' end"; >> isReadOnly = Y; >> name = fullStatus; >> prototypeName = varchar16; >> userInfo = {"_EntityModeler" = {generateSource = NO; }; }; >> }, >> {allowsNull = N; name = id; prototypeName = id; } >> ); >> attributesUsedForLocking = (code, id); >> className = "er.extensions.eof.ERXGenericRecord"; >> classProperties = (code, fullStatus); >> externalName = Status; >> fetchSpecificationDictionary = {}; >> name = Status; >> primaryKeyAttributes = (id); >> } >> >> But this isn't a solution for me, since my entity will have a lot of >> business logic that demands a custom class. Perhaps I should set my Party >> entity as a ERXGenericRecord and then subclass it to implement the business >> logic. >> >> The question is, why does EO expect a column for a derived attribute for a >> custom class and not for a ERXGenericRecord? >> >> By the way, the original Apple EOModeler User Guide doesn't state that a >> derived attribute will not work for a custom class nor does the >> documentation states that a derived attribute should be modeled for a >> generic record. >> >> Angelo >> >> 2014-03-23 1:01 GMT-03:00 Aaron Rosenzweig <aa...@chatnbike.com>: >> Hi Angelo, >> >> Couple things to try: >> >> 1) Remove the single apostrophes surrounding “status” and try again. It is >> possible that it isn’t parsing properly… don’t column names need to have >> “double apostrophes” ??? Perhaps MySQL is lax about that but still… Either >> use no apostrophe or use a “double apostrophe” meaning a single character >> the shift-apostrophe key. If it is a single apostrophe that is a String in >> SQL. >> >> 2) Try a different way. Remove all the code you have in the derived part and >> make this a normal EOAttribute. Put “STATUS” in there by itself. Now go to >> the “advanced” tab and type what you want in the “Read Format” and check the >> “read only” box. In the read format you want to use %P for your columnName >> so you’ll want something like this: >> >> case %P when 0 then 'Active' when 1 then 'Inactive’ end >> >> Honestly, I almost always use the #2 way and never the “derived” way because >> it is more flexible. I like the idea that I define the column in one box and >> in another I write something complex but refer to it with %P. >> >> Try it out and report back. >> AARON ROSENZWEIG / Chat 'n Bike >> e: aa...@chatnbike.com t: (301) 956-2319 >> >> >> > > > > > -- > Ângelo Andrade Cirino > aacir...@gmail.com > 31-3494-8642 > 31-9303-0695 > MSN aacir...@hotmail.com > Skype aacirino > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.com > > This email sent to webobje...@avendasora.com ————————————————————————————— WebObjects - so easy that even Dave Avendasora can do it!™ ————————————————————————————— David Avendasora Senior Software Abuser Nekesto, Inc.
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list (Webobjects-dev@lists.apple.com) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com