On 2011-08-29, at 10:44 PM, David Avendasora wrote:

> 
> On Aug 29, 2011, at 11:43 PM, Markus Ruggiero wrote:
> 
>> Thanks Ramsey,
>> 
>> This is a completely standalone table with no relationships that contains 
>> one record with a couple attributes that define the configuration of the 
>> app. I was so deep into doing everything without programming that I missed 
>> the obvious. Your answer triggered the following solution: Having a simple 
>> page with a message and only a CANCEL button for the Create* 
>> pageConfiguration should solve my problem.
> 
> Beware. That solution only prevents creating new instances of your class when 
> the creation is called using D2W, and then only for ways of creating it that 
> match your rule. Any other code can still very simply call:
> 
> EOUtillities. createAndInsertInstance(editingContext, "MySingleton")
> 
> and get a new instance.
> 
> At a minimum, you should override all the easy ways to create a new instance 
> in the class to simply return the Singleton instead of actually creating a 
> new one.
> 
> I think a better solution (off the top of my head, not tested, Chuck will 
> probably say it's all wrong, yadda, yadda) would be:
> 
> public class MySingletonEO {
> 
>    private static MySingletonEO singleton = null;
> 
>    public MySingletonEO() {
>      // Don't call super() so this will stop instantiation. 
>      // Not sure what EOF will do, probably die horribly, 
>      // but really, that's okay, right?!

You would need to throw.  The JVM will call super() or force you to.  I forget. 
 And how will you create the singleton?

Better would be to override awakeFromInsertion and throw there.

Chuck


>    }
> 
>    public static MySingletonEO initialize(EOEditingContext editingContext) {
>       if(singleton == null) {
>           singleton  = EOUtilities.faultWithPrimaryKeyValue(editingContext, 
>                                                            
> MySingletonEO.ENTITY_NAME,
>                                                            
> Integer.valueOf(123456789)));
>       }
>       return singleton;
>    }
> }
> 
> Which should completely prevent it ever being created.
> 
>> Thanks Ramsey, it is not the first time that your input has helped me 
>> further.💐
> 
> Funny, now you'll probably be saying "Thanks Dave, it's not the first time 
> your input has completely screwed me over."
> 
> Dave
> 
> 
>> ---markus---
>> 
>> On 29.08.2011, at 17:18, Ramsey Gurley wrote:
>> 
>>> 
>>> On Aug 29, 2011, at 6:32 AM, Markus Ruggiero wrote:
>>> 
>>>> Quick D2W question:
>>>> 
>>>> isEntityEditable, isEntityDeletable, isEntityInspectable are all fine, but 
>>>> is there something like isEntityNewable?
>>>> 
>>>> In other words: I have an entity with exactly one record that contains 
>>>> some global parameters to my app. The user must be able to update that one 
>>>> record but he must not be able to add a new record, there must be exactly 
>>>> one record with the same primary key at all times. How would I do this?
>>>> 
>>>> Thanks
>>>> ---markus---
>>> 
>>> This sounds like a model problem, not a view or controller problem.  If 
>>> this is a one to one relationship, then model it that way.
>>> 
>>> If the relationship is required, you can simply model it as a mandatory 
>>> one-to-one joined on PKs and propagate the primary key.  EOF will 
>>> automatically create the related object for you when your eo is created.  
>>> 
>>> If it is an optional one-to-one, then model it as two to-one relationships 
>>> with an FK on each table.  Then in your entity class, override the 
>>> inverseKeyForRelationship method to return the proper inverse relationship 
>>> for each.
>>> 
>>> If you have no control over the database schema and you need to do optional 
>>> one-to-one with PKs then you're out of luck.  From your description, it 
>>> sounds like doing it in the app is the wrong way to do it. To do it the 
>>> wrong way, you'll need to provide your page level actions using a branch 
>>> delegate and something like ERDControllerButton instead of using isEntity* 
>>> since there is no key like isEntityNewable.  Either that, or you can build 
>>> your own d2w page template and include an isEntityNewable conditional.
>>> 
>>> Ramsey
>> 
>> _______________________________________________
>> Do not post admin requests to the list. They will be ignored.
>> Webobjects-dev mailing list      ([email protected])
>> Help/Unsubscribe/Update your Subscription:
>> http://lists.apple.com/mailman/options/webobjects-dev/webobjects%40avendasora.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:
> http://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
> 
> This email sent to [email protected]

-- 
Chuck Hill             Senior Consultant / VP Development

Practical WebObjects - for developers who want to increase their overall 
knowledge of WebObjects or who are trying to solve specific problems.    
http://www.global-village.net/products/practical_webobjects







 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to