DOUI - Processando dados através do PostLoadProcessor | Lumis XP

Neste vídeo explicamos como implementar um Post Load Processor para carregar informações de outras origens depois que o source é carregado

Para isso, mostramos os seguintes tópicos:

douidefinition.xml

<?xml version="1.0" encoding="UTF-8"?>
<doui:douiDefinition xmlns:doui="http://www.lumis.com.br/lumisportal/xsd/doui" xmlns:control="http://www.lumis.com.br/douicontrols">
    <service>
        <sources>
            <source id="default" type="contentTable">
                <table>t_produtos</table>
                <fields>
                    <field id="id" name="id" dataType="guid" required="true" isPrimaryKey="true" display="false" />
                    <field id="nome" name="Nome" dataType="string" required="true" isPrimaryName="true" isSearchable="true" />
                    <field id="introducao" name="Introdução" dataType="text" isSearchable="true" isIntroduction="true" />
                    <field id="detalhes" name="Detalhes" dataType="html" required="true" isSearchable="true" />
                    <field id="tipo" name="Tipo" dataType="string" required="true" >
                        <options>
                            <option value="1">Tipo A</option>
                            <option value="2">Tipo B</option>
                        </options>
                    </field>
                    <field id="inventario" name="Inventário" dataType="integer" externalData="true"/>
                </fields>
                <metaData>
                    <comments/>
                    <publishToServiceInstances/>
                    <publishStartDate/>
                    <publishEndDate/>
                    <highlight/>
                    <highlightEndDate/>
                    <publishToPrincipals/>
                    <versioning/>
                    <workflow/>
                    <tag/>
                    <seo/>
                </metaData>
            </source>
        </sources>
    </service>
    <interfaces>
        <interface id="quicklist">
            <sources>
                <source id="default">
                    <fields inherit="default">
                        <field id="tipo" doOptionLookup="true"/>
                        <field id="inventario"></field>
                    </fields>
                    <filters>
                        <filter id="tipo" className="br.com.treinamento.service.produto.TipoProdutoFilter"></filter>
                    </filters>
                    <maxRows>3</maxRows>
                    <postLoadProcessors>
                        <postLoadProcessor className="br.com.treinamento.service.produtos.ProdutoInventarioPostLoadProcessor"></postLoadProcessor>
                    </postLoadProcessors>
                </source>
            </sources>
        </interface>
        ...

ProdutoInventarioPostLoadProcessor.java

package br.com.treinamento.service.produtos;

import org.w3c.dom.Node;
import lumis.doui.source.ISourceData;
import lumis.doui.source.Source;
import lumis.doui.source.TabularData;
import lumis.doui.source.postloadprocessor.IPostLoadProcessor;
import lumis.portal.PortalException;
import lumis.portal.authentication.SessionConfig;
import lumis.util.ITransaction;

public class ProdutoInventarioPostLoadProcessor implements IPostLoadProcessor
{
    @Override
    public void processSource(SessionConfig sessionConfig, Source source, Node parametersNode, ITransaction transaction) throws PortalException
    {
        TabularData td = (TabularData) source.getData();
        int count = 0;
        for(ISourceData row : td.getRows())
        {
            count++;
            row.put("inventario", count);
        }
    }
}