except maybe this is too early. this line is important: EOQualifier booksAssignedToShowQualifier = Book.SHOW.eq(this.show()); //all the books for this show
it looks like there is no Show assigned yet. so it looks like willInsert() happens a little later (at least after the show is assigned). On Feb 11, 2015, at 12:22 PM, Chuck Hill <[email protected]> wrote: > Init() is correct though I am still not keen on calling saveChanges() in that > method. > > On 2015-02-11, 9:21 AM, "Theodore Petrosky" wrote: > > Actually, I was just thinking of that as I am setting a couple of values > (booleans) in the init method, and why not assign the relations there also. > > I’ll try to set it up there and see what happens. > > what do you think Chuck, does this sound OK? > > > On Feb 11, 2015, at 11:46 AM, Timothy Worman <[email protected]> wrote: > > Isn’t init() the Wonder Preferred Method ™? :-) > Tim Worman > UCLA GSE&IS > On Feb 11, 2015, at 8:38 AM, Chuck Hill <[email protected]> wrote: > On 2015-02-11, 8:26 AM, "Theodore Petrosky" wrote: > so are you suggesting that awakeFromInsertion is the correct place to assign > these entities? > That is a more correct place. > I actually assumed that there was an editingContext at this point. And you > know what they say about assuming. > My interpretation of “willInsert” is that there is an EC, but the EO has not > been inserted into it yet. And EO that is not in an EC is a bomb. > If I put my code in awake from insertion, I then call > “editingContext().saveChanges” at the end? > I am NOT a fan of having EOs call saveChanges(). That is possibly OK but not > something that I would do. All of this seems like something that belongs in > an Controller object. > Chuck > On Feb 11, 2015, at 11:21 AM, Chuck Hill <[email protected]> wrote: > Doing anything to an EO when it is not in an EC (e.g. Before it is inserted) > seems like a Very Bad Idea. EOF is not expecting this. > Chuck > On 2015-02-11, 8:17 AM, "Theodore Petrosky" wrote: > but (and I will test this assumption) isn’t awakeFromInsertion called AFTER > the insertion? and willInsert Before? > I need to assign these relationships BEFORE the main EO is inserted. So in my > case, I want to relate all the BOOKS that belong to the Show, then assign the > PrimaryPlayer to the books. > As I said, I will confirm the order of events with some tests. > The next question is the exception. If two people are marked PrimaryMusician > ( which is an operator error ), I want to throw an exception and tell the > user, “Sorry, could not assign person to Viola as two people are marked > “Primary Player”! (Jane Doe, Peter Simpson) > On Feb 11, 2015, at 10:49 AM, Samuel Pelletier <[email protected]> wrote: > Theodore, > I think your code would be in a better place in the awakeFromInsertion > instead of willInsert. > awakeFromInsertion is called only once when the EO is created. My > understanding is willInsert is called when a EO will be saved the first time > by an EOEditingcontext. > Samuel > Le 2015-02-10 à 09:13, Theodore Petrosky <[email protected]> a écrit : > I am in the process of creating an example d2w app. Basically it manages > Shows and the People that play them. the end result is a report for any given > week and specific show, who played what book? > So I can create shows, people, instruments. and I am looking at the Events. > An event is a performance. It needs a show, and date/time (there could be > multiple performances on any given day). > So I create an Event, and I need to pick up all the books that belong to the > Show and the people that are the Primary players of the book. > My solution was to use the willInsert() in the EO: > @Override > public void willInsert() { > super.willInsert(); > EOQualifier bookForPrimaryPersonQualifier = Person.CURRENT.eq(true); > bookForPrimaryPersonQualifier = ERXQ.and(bookForPrimaryPersonQualifier, > Person.PERSON_BOOKS.dot(PersonBook.IS_PRIMARY_PLAYER.eq(true))); > EOQualifier booksAssignedToShowQualifier = Book.SHOW.eq(this.show()); //all > the books for this show > NSArray<Book> booksForThisEvent = Book.fetchBooks(editingContext(), > booksAssignedToShowQualifier, null); > for (Book aBook: booksForThisEvent) { > bookForPrimaryPersonQualifier = ERXQ.and(bookForPrimaryPersonQualifier, > Person.PERSON_BOOKS.dot(PersonBook.BOOK.eq(aBook))); > Person aPerson = Person.fetchPerson(this.editingContext(), > bookForPrimaryPersonQualifier); > if (aPerson != null) { //if there is a primary person applied to this book, > assign him/her to the EventBook else it's null! > EventBook eo = EventBook.createEventBook(this.show().editingContext(), aBook, > this); > eo.setPersonRelationship(aPerson); > } else { > EventBook.createEventBook(this.show().editingContext(), aBook, this); > } > bookForPrimaryPersonQualifier = Person.CURRENT.eq(true); //resetting the > qualifier to base case > } > } > Am I stepping on myself doing this in the EO and willInsert? > and > I need help with throwing an exception. if there are two people assigned as > the primary player of a given book, of course it blows up. > Person aPerson = Person.fetchPerson(this.editingContext(), > bookForPrimaryPersonQualifier); > Assuming that the willInsert() method is okay to do, what’s the correct way > to surround this with a try/catch and throw the exception. Obviously, if I > just surround it with the try/catch like this: > Person aPerson = null; > try { > aPerson = Person.fetchPerson(this.editingContext(), > bookForPrimaryPersonQualifier); > } catch (Exception e) { > // TODO Auto-generated catch block > e.printStackTrace(); > } > the insertion will succeed assigning no one to the offending book. > I can only hope that willInsert passes muster! > Ted > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list ([email protected]) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/samuel%40samkar.com > This email sent to [email protected] > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list ([email protected]) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/chill%40gevityinc.com > This email sent to [email protected] > _______________________________________________ > Do not post admin requests to the list. They will be ignored. > Webobjects-dev mailing list ([email protected]) > Help/Unsubscribe/Update your Subscription: > https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.com > This email sent to [email protected] > >
_______________________________________________ Do not post admin requests to the list. They will be ignored. Webobjects-dev mailing list ([email protected]) Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com This email sent to [email protected]
