Take a look at ERD2WPropertyName/ERMD2WPropertyName.
They don't get a properyKey binding, everything is pulled out of the d2wContext.
As to why our component is not being used (if that is what 'it doesn't get
called' means) I don't know.
Double check your rules?
D
--
David LeBer
Codeferous Software
On 2012-01-16, at 4:04 PM, James Cicenia wrote:
> "propertyNameComponentName" !!!
>
> Now that is what I was looking for.. so I dutifully create a component.
>
> It doesn't get called?
>
>
> public class D2WCustomKeyToTitle extends ERD2WPropertyName
> {
> public EOEnterpriseObject object;
> public String lookupString;
> public String propertyKey;
>
> public D2WCustomKeyToTitle(WOContext context)
> {
> super(context);
> }
>
> public String value()
> {
> lookupString =(String) valueForBinding("propertyKey");
> return lookupString.substring("rpt_project_quant_".length(),
> lookupString.length());
>
> }
> }
>
>
>
> On Jan 16, 2012, at 2:02 PM, David LeBer wrote:
>
>> Why don't you do the same kind of thing for your propertyName component?
>>
>> Create a custom propertyName component that looks at the property key, if it
>> matches "rpt_quant_XX-*" do your logic on it to extract the name, otherwise
>> use default to ERMD2WPropertyName behaviour. Set it as the default
>> propertyName component for the page.
>>
>> 100 : pageConfiguration = 'ListFoo' => propertyNameComponentName =
>> "SooperSmartPropertyName" [com.webobjects.directtoweb.Assignment]
>>
>> --
>> David LeBer
>> Codeferous Software
>>
>> On 2012-01-16, at 2:23 PM, James Cicenia wrote:
>>
>>> I create an array of report keys from the Admin ->Metrics table for that
>>> session and that report:
>>>
>>> Sample Key:
>>> rpt_quant_01-The metric Name
>>>
>>> rpt_quant tells me it is a quant metric and to use my custom property
>>> component.
>>> I then parse the name after "rpt_quant_XX-", i.e. "The metric Name", this
>>> is then used to find the value. Works great. Maybe a bad approach?
>>>
>>> So now I move onto the displayName. Boom stuck.
>>>
>>> Though can Localizable.strings be dynamically created in the session?
>>>
>>> Thanks
>>> James
>>>
>>>
>>>
>>> On Jan 16, 2012, at 12:52 PM, Ramsey Gurley wrote:
>>>
>>>>
>>>> On Jan 16, 2012, at 11:22 AM, James Cicenia wrote:
>>>>
>>>>> What I am trying to accomplish is to se the displayNameForProperty
>>>>> dynamically based upon the key.
>>>>>
>>>>> So, somehow, pass the key that returns a value to displayNameForProperty.
>>>>>
>>>>> Now I don't know what the property key is ahead of time.
>>>>> This comes from data in the session.
>>>>
>>>> I guess that's what has me confused. Where are you getting
>>>> displayPropertyKeys if you don't know ahead of time? Are you doing
>>>> something like
>>>>
>>>> 100: entity.name = "Report" => displayPropertyKeys =
>>>> "session.reptHdrDict.allKeys"
>>>>
>>>> ? Where is that getting loaded? Because if you want the values to be the
>>>> displayed headers, then you can teach your localizer the values when you
>>>> load the dictionary, no?
>>>>
>>>>>
>>>>> It works like a charm to fill in the list, but it is the
>>>>> displayNameForProperty that is confusing me.
>>>>
>>>> The displayNameForProperty is going to come out of Localization. So if
>>>> you know what the possible keys are, then there's no problem. Just add
>>>> this to your Localizable.strings file
>>>>
>>>> "PropertyKey.metricA" = "Metric A";
>>>> "PropertyKey.metricB" = "Metric B";
>>>>
>>>>>
>>>>>
>>>>> Admin
>>>>> Metrics
>>>>> Metric A
>>>>> Metric B
>>>>> Metric C
>>>>> etc.
>>>>>
>>>>>
>>>>> Current Portfolio
>>>>> Project A
>>>>> Metric Value A
>>>>> Metric Value B
>>>>> Metric Value C
>>>>>
>>>>> Project B
>>>>> Metric Value A
>>>>> Metric Value B
>>>>> Metric Value C
>>>>>
>>>>>
>>>>> Report
>>>>>
>>>>> Project A Metric A Metric B Metric C
>>>>> .
>>>>> .
>>>>> .
>>>>>
>>>>>
>>>>>
>>>>> Thanks
>>>>> James
>>>>>
>>>>>
>>>>> On Jan 16, 2012, at 12:02 PM, Ramsey Gurley wrote:
>>>>>
>>>>>> I'm still in the dark about what James is actually trying to accomplish.
>>>>>>
>>>>>> 100: propertyKey = 'metricA' => displayNameForProperty =
>>>>>> "PropertyKey.metricA" [ERDLocalizedAssignment]
>>>>>>
>>>>>> Why does that require a custom rule?
>>>>>>
>>>>>> Ramsey
>>>>>>
>>>>>> On Jan 16, 2012, at 10:51 AM, Jesse Tayler wrote:
>>>>>>
>>>>>>> I missed this thread, but don't you just want to identify significant
>>>>>>> keys which are calculated at runtime each time you fire the rule?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Jan 16, 2012, at 12:20 PM, Farrukh Ijaz wrote:
>>>>>>>
>>>>>>>> Try this:
>>>>>>>>
>>>>>>>> Implement your own D2WModel the way you like but make sure you can
>>>>>>>> actually add remove rules to your model. Perhaps you need to define
>>>>>>>> your own methods similar to "addMyRule" or "removeMyRule" etc.
>>>>>>>>
>>>>>>>> Override application's didFinishLaunching() method and add following
>>>>>>>> code.
>>>>>>>>
>>>>>>>> @Override
>>>>>>>> public void didFinishLaunching() {
>>>>>>>> super.didFinishLaunching();
>>>>>>>> D2WModel.setDefaultModel(MyD2WModel.singleton());
>>>>>>>> }
>>>>>>>>
>>>>>>>> From this point and onwards I hope you'll be able to use your dynamic
>>>>>>>> rules in d2w components as well. Even if you add rules to by adding /
>>>>>>>> removing rules in your code anywhere using
>>>>>>>> MyD2WModel.singleton().addMyRule(...) will affect the behaviour of d2w
>>>>>>>> components.
>>>>>>>>
>>>>>>>> Farrukh
>>>>>>>>
>>>>>>>> On 2012-01-16, at 4:52 PM, James Cicenia wrote:
>>>>>>>>
>>>>>>>>> You already seem experienced in this manner! :-)
>>>>>>>>>
>>>>>>>>> I could see how this works. Creating my own on the fly rule model
>>>>>>>>> could solve the problem.
>>>>>>>>>
>>>>>>>>> But like you said... where?
>>>>>>>>>
>>>>>>>>> Have to be session specific.
>>>>>>>>>
>>>>>>>>> James
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Jan 15, 2012, at 1:50 AM, Farrukh Ijaz wrote:
>>>>>>>>>
>>>>>>>>>> It's possible. You need to play around with the D2WContext, D2WModel
>>>>>>>>>> and Rule classes.
>>>>>>>>>>
>>>>>>>>>> Start with creating your own D2WModel class since it has methods to
>>>>>>>>>> update Rules.
>>>>>>>>>>
>>>>>>>>>> public class MyD2WModel extends D2WModel {
>>>>>>>>>> public MyD2WModel(NSArray<Rule> rules) {
>>>>>>>>>> super(rules);
>>>>>>>>>> }
>>>>>>>>>> public void addMyRule(Rule newRule) {
>>>>>>>>>> super.addRule(newRule);
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>>>
>>>>>>>>>> You can override other methods as needed.
>>>>>>>>>>
>>>>>>>>>> I would suggest implement a singleton pattern for MyD2WModel, and
>>>>>>>>>> use that whenever you want to infer keys. Whenever you need to
>>>>>>>>>> access D2WContext with your rules, do something like this:
>>>>>>>>>>
>>>>>>>>>> D2WContext d2wContext = new D2WContext(session);
>>>>>>>>>> d2wContext._setModel(MyD2WModel.singleton());
>>>>>>>>>>
>>>>>>>>>> Just hack around and see where you need to place it to make it
>>>>>>>>>> accessible in your templates. May be some guru out there can point
>>>>>>>>>> out the exact place to hack ;)
>>>>>>>>>>
>>>>>>>>>> Have fun coding!
>>>>>>>>>>
>>>>>>>>>> Farrukh
>>>>>>>>>>
>>>>>>>>>> On 2012-01-13, at 8:20 PM, James Cicenia wrote:
>>>>>>>>>>
>>>>>>>>>>> Ok, is it possible to dynamically load up a rule set?
>>>>>>>>>>>
>>>>>>>>>>> If that is possible I could create the a rule for each dynamic key.
>>>>>>>>>>>
>>>>>>>>>>> Thanks
>>>>>>>>>>> James
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> 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/farrukh.ijaz%40fuegodigitalmedia.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/farrukh.ijaz%40fuegodigitalmedia.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/jtayler%40oeinc.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/rgurley%40smarthealth.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/rgurley%40smarthealth.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/dleber_wodev%40codeferous.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/dleber_wodev%40codeferous.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/archive%40mail-archive.com
This email sent to [email protected]