On Fri, Feb 13, 2009 at 11:04 AM, Erik Hatcher
<e...@ehatchersolutions.com> wrote:
> What about having the template transformer support ${field:default} syntax?

this is the only usecase for this. this can be easily achieved with a
custom Transformer
>  I'm assuming it doesn't support that currently right?  The replace stuff in
> the config files does though.
>
>        Erik
>
>
> On Feb 13, 2009, at 8:17 AM, Fergus McMenemie wrote:
>
>> Paul,
>>
>> Following up your usenet sussgetion:
>>
>> <field column="id" template="${jc.fileAbsolutePath}${x.vurl}"
>> ignoreMissingVariables="true"/>
>>
>> and to add more to what I was thinking...
>>
>> if the field is undefined in the input document, but the schema.xml
>> does allow a default value, then TemplateTransformer can use the
>> default value. If there is no default value defined in schema.xml
>> then it can fail as at present. This would allow "" or any other
>> value to be fed into TemplateTransformer, and still enable avoidance
>> of the partial strings you referred to.
>>
>> Regards Fergus.
>>
>>>> Hello,
>>>>
>>>> templatetransformer behaves rather ungracefully if one of the
>>>> replacement
>>>> fields is missing.
>>>
>>> Looking at TemplateString.java I see that left to itself fillTokens would
>>> replace a missing variable with "". It is an extra check in
>>> TemplateTransformer
>>> that is throwing the warning and stopping the row being returned.
>>> Commenting
>>> out the check seems to solve my problem.
>>>
>>> Having done this, an undefined replacement string in TemplateTransformer
>>> is replaced with "". However a neater fix would probably involve making
>>> use of the default value which can be assigned to a row? in schema.xml.
>>>
>>>> I am parsing a single XML document into multiple separate solr
>>>> documents.
>>>> It turns out that none of the source documents fields can be used to
>>>> create
>>>> a uniqueKey alone. I need to combine two, using template transformer as
>>>> follows:
>>>>
>>>> <entity name="x"
>>>> dataSource="myfilereader"
>>>> processor="XPathEntityProcessor"
>>>> url="${jc.fileAbsolutePath}"
>>>> rootEntity="true"
>>>> stream="false"
>>>> forEach="/record | /record/mediaBlock"
>>>> transformer="DateFormatTransformer,TemplateTransformer,RegexTransformer"
>>>>>
>>>>
>>>> <field column="fileAbsolutePath"    template="${jc.fileAbsolutePath}" />
>>>> <field column="fileWebPath"
>>>> regex="${dataimporter.request.installdir}(.*)" replaceWith="/ford$1"
>>>> sourceColName="fileAbsolutePath"/>
>>>> <field column="id"
>>>>  template="${jc.fileAbsolutePath}${x.vurl}" />
>>>> <field column="vurl"
>>>>  xpath="/record/mediaBlock/mediaObject/@vurl" />
>>>>
>>>> The trouble is that vurl is only defined as a child of
>>>> "/record/mediaBlock"
>>>> so my attempt to create id, the uniqueKey fails for the parent document
>>>> "/record"
>>>>
>>>> I am hacking around with "TemplateTransformer.java" to sort this but was
>>>> wondering if there was a good reason for this behavior.
>>>>
>>
>> --
>>
>> ===============================================================
>> Fergus McMenemie               Email:fer...@twig.me.uk
>> Techmore Ltd                   Phone:(UK) 07721 376021
>>
>> Unix/Mac/Intranets             Analyst Programmer
>> ===============================================================
>
>



-- 
--Noble Paul

Reply via email to