Re: unique contraint error
Re: unique contraint error
- Subject: Re: unique contraint error
- From: Fabian Peters <email@hidden>
- Date: Thu, 22 Aug 2013 18:47:12 +0200
Hi Ted,
Am 22.08.2013 um 16:15 schrieb Theodore Petrosky:
> So I can create ValidationTemplate.strings
>
> "Quote.quoteAmount"="You must enter a dollar amount in the format 123.00 (you entered weird characters)!";
>
> is there a key that I can access what was typed? @@enteredQuoteAmountValue@@
>
> so I can add it to the error message?
You should be able to refer to the value the user entered via "@@escapedValue@@". If you create the exception, then you should pass the value, see <http://www.aurealis.de/webobjects/wonder/api/html/classer_1_1extensions_1_1validation_1_1_e_r_x_validation_factory.html#0a9ef3a34c0e7f052c37ff669a8c223d>
> also,
> if I input 234.66666666666 in the field my app crashes with:
>
> Error: com.webobjects.eoaccess.EOGeneralAdaptorException: The attribute quoteAmount has a scale of 2, but the value 123.666666666 has a scale of 9: Rounding necessary
> Reason: The attribute quoteAmount has a scale of 2, but the value 123.666666666 has a scale of 9: Rounding necessary
I'm not sure about the rounding issue as I've never had that. As an aside: Maybe you should consider using BigDecimal if precision is an issue.
> so I created a validation method:
>
> public Object validateQuoteAmount(Object aValue) throws ValidationException {
>
> Double returnValue = 0.0;
> try {
> DecimalFormat df = new DecimalFormat("#.##");
> returnValue = Double.valueOf(df.format(aValue));
>
> } catch (Exception e) {
> // TODO Auto-generated catch block
> e.printStackTrace();
> }
>
> return returnValue;
> }
You should check the object type (is it a double?), coerce the value and if anything is invalid, throw a validation exception:
throw ERXValidationFactory.defaultFactory().createCustomException(
this,
theProperty,
theValueProvided),
"TheExceptionType");
Fabian
> is there a better way?
>
> Ted
>
>
> On Aug 21, 2013, at 1:42 PM, Ramsey Gurley <email@hidden> wrote:
>
>> http://thecodinglove.com/post/49933241299/when-i-start-using-a-3rd-party-lib-and-notice-there-is
>>
>> ERXValidationFactory.templateForEntityPropertyType determines what keys are considered for most validation messages. In order, they are
>>
>> entity.property.type
>> entity.property
>> property.type
>> property
>> type
>>
>> So let's say you have an EO named Document with a mandatory title attribute. Leaving that blank would result in a NullPropertyException type validation error. So, your keys would be from most specific to least:
>>
>> Document.title.NullPropertyException
>> Document.title
>> title.NullPropertyException
>> title
>> NullPropertyException
>>
>> Typically, the least specific key is already defined in Wonder's ValidationTemplate.strings in the frameworks.
>>
>> "NullPropertyException" = "Please provide @@indefiniteArticleForProperty@@ <b>@@displayNameForProperty@@</b>.";
>>
>> You can override these with the more specific keys.
>>
>> In this specific case, the validation template string is actually defined elsewhere. It's the result of an EOGeneralAdaptorException being converted into a standard validation exception in the ERXSQLHelper. You can find it in the PostgresqlSQLHelper.handleDatabaseException method.
>>
>> On Aug 21, 2013, at 10:22 AM, Christoph Wick wrote:
>>
>>> Is there a documentation about the possible keys for that? What kinds of keys can I put into a ValidationTemplates.string?
>>>
>>> Thx, C.U.CW
>>> --
>>> What are the three enemies of a programmer? Sunlight, oxygen, and the appalling roar of the birds.
>>>
>>> On 14.08.2013, at 04:07, Theodore Petrosky <email@hidden> wrote:
>>>
>>>> wow, that's beautiful
>>>>
>>>>
>>>>
>>>> On Aug 13, 2013, at 8:45 PM, Paul Hoadley <email@hidden> wrote:
>>>>
>>>>> Hi Ted,
>>>>>
>>>>> On 14/08/2013, at 10:03 AM, Theodore Petrosky <email@hidden> wrote:
>>>>>
>>>>>> I added an index and unique constraint to my User. loginName column.
>>>>>>
>>>>>> I see in the logs that when I try to violate the uniqueness my d2w does the correct thing and complain however this is the error:
>>>>>>
>>>>>> Could not save your changes: CustomMethodException
>>>>>>
>>>>>> I do see in the logs:
>>>>>>
>>>>>> ERROR: duplicate key value violates unique constraint "loginname_idx"
>>>>>>
>>>>>> did I miss something in a rule to pass the better worded error message to the user?
>>>>>
>>>>> Create Resources/English.lproj/ValidationTemplate.strings and add:
>>>>>
>>>>> {
>>>>> "UniqueConstraintException.loginname_idx" = "Please choose a different username.";
>>>>> }
>>>>>
>>>>> Does that work?
>>>>>
>>>>>
>>>>> --
>>>>> Paul Hoadley
>>>>> http://logicsquad.net/
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> 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
>>
>>
>> _______________________________________________
>> 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
_______________________________________________
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