Re: ideas to dupe an EO
Re: ideas to dupe an EO
- Subject: Re: ideas to dupe an EO
- From: David LeBer <email@hidden>
- Date: Fri, 15 Feb 2013 16:33:07 -0500
Ted,
You should be able to do something like:
((ERXCopyable)object()).copy();
Or more safely:
if (object() instanceof ERXCopyable) {
...
((ERXCopyable)object()).copy();
...
}
notactuallylookedattheapivoidwhereprohibitedbylawyourmilagemayvary.
On 2013-02-15, at 4:12 PM, Theodore Petrosky <email@hidden> wrote:
> Thank you very much for the catch!!!
>
> I am stuck half way in D2W land. the TPMODInspectPage only knows about the object(). I was hoping that I could just wire up a button that says "Dupe" and the method would dupe the EO, saveChanges and present the lastPage.
>
> Obviously, object().copy() won't work as object is an EO that doesn't know that the method copy() exists. I don't think I should be casting this to an Entity of Agenda as that kind of destroys the abstracting process.
>
> I think I need to do (pseudo coded)
>
> if (object().respondsTo(copy)) {
> EO newObject = object().copy();
> saveChanges(newObject().editingContext);
> }
>
> But I am tired and lost here. I have the Practical WO book at home and hope that will shed light on my ineptitude.
>
> Ted
>
> --- On Fri, 2/15/13, David Avendasora <email@hidden> wrote:
>
>> From: David Avendasora <email@hidden>
>> Subject: Re: ideas to dupe an EO
>> To: "Theodore Petrosky" <email@hidden>
>> Cc: "WebObjects Development" <email@hidden>
>> Date: Friday, February 15, 2013, 3:52 PM
>> Hi Ted,
>>
>> On Feb 16, 2013, at 2:11 AM, Theodore Petrosky <email@hidden>
>> wrote:
>>
>>> @Override
>>> public Agenda
>> duplicate(NSMutableDictionary<EOGlobalID,
>> ERXCopyable<?>> copiedObjects) {
>>> Agenda duplicate =
>> ERXCopyable.Utility.modelCopy(copiedObjects, (Agenda)
>> this);
>>> return duplicate;
>>> }
>>
>> Whoops! My Javadoc has lead you astray. Change the
>> "modelCopy" call to "deepCopy". So:
>>
>> @Override
>> public Agenda
>> duplicate(NSMutableDictionary<EOGlobalID,
>> ERXCopyable<?>> copiedObjects) {
>> Agenda duplicate =
>> ERXCopyable.Utility.deepCopy(copiedObjects, (Agenda) this);
>> return duplicate;
>> }
>>
>> In order to use the "modelCopy" method, you need to add
>> entries Agenda's UserInfo dictionary in your EOModel which
>> I'm guessing you haven't done.
>>
>> Once you've done that, calling anInstanceOfAgenda.copy()
>> will create a new instance of Agenda EO in the same EC as
>> anInstanceOfAgenda and then copy all the attributes and
>> relationships from anInstanceOfAgenda to the new instance.
>> You then need to make all the related Entities implement
>> ERXCopyable as well.
>>
>> The deepCopy assumes that you want copies of all of Agenda's
>> related EOs also, which may or may not be true (probably
>> not). If it is not true, you will need to change the
>> duplicate method to do what is correct for Agenda and its
>> related EOs. If you have Practical WebObjects, read Chapter
>> 9, with special attention to the Tweaking the Copy Process
>> section on page 264.
>>
>> Basically, you are going to want to use some combination of
>> the various ERXCopyable.Utility.xxxxCopyRelationship methods
>> where xxxx could be reference, shallow or deep. See
>> the javadoc for an explanation of what each will do.
>>
>> I hope that helps you!
>>
>> Dave
>>
>>
>>>
>>> I am trying to add a method to my version of the
>> ERMODInspectPage that will create and save a new copy the
>> object().
>>>
>>> i'm stuck with the method that fires to duplicate the
>> EO. Could you point me to some code that actually copies?
>>>
>>> Ted
>>>
>>>
>>> --- On Fri, 2/15/13, David LeBer <email@hidden>
>> wrote:
>>>
>>>> From: David LeBer <email@hidden>
>>>> Subject: Re: ideas to dupe an EO
>>>> To: "Theodore Petrosky" <email@hidden>
>>>> Cc: "WebObjects Development" <email@hidden>
>>>> Date: Friday, February 15, 2013, 10:51 AM
>>>> You probably want ERXCopyable.
>>>>
>>>> http://www.mail-archive.com/email@hidden/msg52084.html
>>>>
>>>> D
>>>>
>>>> On 2013-02-15, at 10:42 AM, Theodore Petrosky
>> <email@hidden>
>>>> wrote:
>>>>
>>>>> I am looking for an idea on duping an EO. I've
>> thought
>>>> of putting a hyperlink on the listPage then I
>> thought of
>>>> putting a button on the editPage (i am toying with
>> that
>>>> now).
>>>>>
>>>>> I duped ERMODInspectPage and I added a button.
>> If I
>>>> create a localInstance in a new EC, how can I save
>> this
>>>> 'new' EO. it isn't a new EO yet just a duplicate in
>> a new
>>>> editing context. I am looking at
>> ERXEOControlUtilities to
>>>> see if there are any methods to create a new EO
>> from my old
>>>> one.
>>>>>
>>>>> but some pointing in the right direction would
>> be
>>>> appreciated.
>>>>>
>>>>> Ted
>>>>>
>> _______________________________________________
>>>>> Do not post admin requests to the list. They
>> will be
>>>> ignored.
>>>>> Webobjects-dev mailing list
>> (email@hidden)
>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>
>>>>> This email sent to email@hidden
>>>>
>>>>
>>>
>>>
>>
>>
>> —————————————————————————————
>> WebObjects - so easy that even Dave Avendasora can do
>> it!™
>> —————————————————————————————
>> David Avendasora
>> Senior Software Abuser
>> Kaiten, Inc.
>>
>>
>>
>>
>>
>
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list (email@hidden)
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden