Exportar tabela como arquivo XML no ADF

Tweet about this on TwitterShare on Facebook0Share on LinkedIn7Share on Google+0

Desde que eu escrevi sobre como exportar tabela para Excel no Oracle ADF, este tem sido um dos posts mais lidos do blog. Eu sei que a exportação de dados é uma característica importante em uma aplicação, desta forma, vou mostrar como exportar linhas (todas ou algumas) da tabela como um arquivo XML.

Faça o download do aplicativo de amostra: ADFXMLApp.zip.

Crie uma nova aplicação ADF que irá utilizar os dados dos funcionários.

export-table-to-xml-in-adf1

Vá para o View Object EmployeesView e gere a implementação da classe View Object.

export-table-to-xml-in-adf2

Copie o seguinte código dentro classe EmployeesViewImpl.

public RowSet filterById(String id) {
  ViewCriteria myCriteria = this.createViewCriteria();
  myCriteria.setName("myCriteria");
  ViewCriteriaRow criteriaRow = myCriteria.createViewCriteriaRow();
  criteriaRow.setAttribute("EmployeeId", "IN (" + id + ")");
  myCriteria.addElement(criteriaRow);

  ViewRowSetImpl rs = (ViewRowSetImpl) findByViewCriteria(myCriteria, -1, ViewObject.QUERY_MODE_SCAN_VIEW_ROWS);

  removeRowSet(rs);
  rs.setName("EmployeesRowSet");
  addRowSet(rs);

  return rs;
}

export-table-to-xml-in-adf3

A página empView.jsf contém uma tabela de funcionários e dois botões para exportar linhas como arquivo XML.

export-table-to-xml-in-adf4

Vá para a aba source e remova a propriedade selectedRowKeys da tag af:table.
Se você não removê-la, quando você tentar obter todas as linhas selecionadas da tabela, o método getSelectedRowKeys retornará apenas a última linha selecionada.

export-table-to-xml-in-adf5

A classe EmployeesBean contém dois métodos.

public void exportSelectedRowsToXML(FacesContext facesContext, OutputStream outputStream) {
  RichTable table = (RichTable) JSFUtils.findComponentInRoot("t1");
  RowKeySet rksSelectedRows = table.getSelectedRowKeys();
  Iterator itrSelectedRows = rksSelectedRows.iterator();

  StringBuilder id = new StringBuilder("");
  while (itrSelectedRows.hasNext()) {
    Key key = (Key) ((List) itrSelectedRows.next()).get(0);
    id.append(key.getKeyValues()[0]);

    if (itrSelectedRows.hasNext()) {
      id.append(",");
    }
  }

  DCIteratorBinding dcIteratorBindings = ADFUtils.findIterator("EmployeesView1Iterator");
  ViewObject vo = dcIteratorBindings.getViewObject();
  RowSet rs = ((EmployeesViewImpl) vo).filterById(id.toString());

  try {
    ((XMLNode) (rs.writeXML(0, XMLInterface.XML_OPT_ALL_ROWS))).print(outputStream);
  } catch (IOException e) {
    e.printStackTrace();
  }
}

public void exportAllRowsToXML(FacesContext facesContext, OutputStream outputStream) {
  DCIteratorBinding dcIteratorBindings = ADFUtils.findIterator("EmployeesView1Iterator");
  ViewObject vo = dcIteratorBindings.getViewObject();

  try {
    ((XMLNode) (vo.writeXML(0, XMLInterface.XML_OPT_ALL_ROWS))).print(outputStream);
  } catch (IOException e) {
    e.printStackTrace();
  }
}

export-table-to-xml-in-adf6

Agora, quando você executar a aplicação, você pode exportar todas as linhas como um arquivo XML.

export-table-to-xml-in-adf7

Você pode exportar apenas as linhas selecionadas como um arquivo XML, também.

export-table-to-xml-in-adf8

Para alterar os nomes dos elementos XML, use as propriedades personalizadas: XML_ELEMENT e XML_ROW_ELEMENT.

export-table-to-xml-in-adf9

export-table-to-xml-in-adf10

export-table-to-xml-in-adf11

Tweet about this on TwitterShare on Facebook0Share on LinkedIn7Share on Google+0

Autor: Waslley Souza

Consultor Oracle com foco em tecnologias Oracle Fusion Middleware e SOA. Certificado Oracle WebCenter Portal, Oracle ADF e Java.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *