sexta-feira, 2 de setembro de 2011

Listando e exibindo imagens do WCM através de um servlet - JSP - I

Mecanismo a princípio incompreensível é a manipulação de imagens por uma script JSP externa ao WCM, porém dentro do espaço do Websphere.

Alguns pontos teóricos necessários para se compreender a script que está mais abaixo:
  • Imagens não pertencem a uma área de site (sitearea) ou site específico. Elas pertencem e devem ser procuradas diretamente abaixo do nível biblioteca (Library);
  • As imagens são armazenadas na biblioteca como streams de bytes em java, e para exibição devem ser transformadas em arrays de bits;
  • Imagens, seja no formato jpeg, seja no formato gif, correspondem ao MIME (tipo de conteúdo para o protocolo http) image/jpeg;


Script JSP para listar as imagens de uma Biblioteca

Os trechos da script estão enumerados e explicados a seguir. Ao final, basta uní-los em uma script com extensão JSP.

Bibliotecas necessárias



<%@ page language="java" contentType="text/html; charset=ISO-8859-1" %>
<%@page import="com.ibm.workplace.wcm.api.*, com.ibm.workplace.wcm.api.exceptions.*,java.security.Principal, java.util.*, javax.servlet.*" %>
<%@page import="com.ibm.workplace.wcm.api.exceptions.*,
	java.security.Principal,
	java.io.*,
	java.lang.*" %>
<%@ taglib uri="/WEB-INF/tld/wcm.tld" prefix="wcm" %>


Declarações básicas HTML


O tipo de documento HTML, estilos e o content-type do META são todos triviais. Um acréscimo é a poderosa framework jQuery, cujo uso é justificado pelo fato dela oferecer uma compatibilidade de código javascript muito grande. Já existem versões mais avançadas, mas aqui está declarada em 1.3.2. A biblioteca javascript jquery.tablesorter não precisa ser entendida profundamente, mas oferece a seguinte vantagem:

Clicar no título da coluna que se quer ordenar da tabela de imagens provoca a ordenação do conteúdo da tabela pelo conteúdo desta coluna. Isto economiza chamadas ao banco do WCM . Esta ordenação é feita no micro cliente, e não no servidor.

Rotinas Javascript de apoio




A função init faz a inicialização da rotina de ordenação da biblioteca javascript jquery.tablesorter. Ela faz a leitura dos conteúdos das tags TH, que deverão estar dentro de tags THEAD. As linhas de resultado deverão estar também dentro de tags TBODY. Do contrário, o tablesorter não fará a correta interpretação da tabela. E não se esqueça que o atributo id da TABLE deverá ser Resultset.

Inicialização do código JSP


<%
String sNome = "";
String sSenha = "";
// Biblioteca Default
String Biblioteca = "";
if( request.getParameter("Bib") != null ) {
Biblioteca = request.getParameter("Bib");
}

Este trecho coleta parâmetros que serão aproveitados em toda a script. São eles:

NOME - Substitua pelo nome de usuário, registrado no LDAP e declarado no Websphere e WCM. Nestes dois últimos consta o Web Anonymous para acesso via HTTP. Como esta script vai abrir uma workspace que precisa de acesso tanto aos componentes quanto ao espaço de renderização, e a senha do Anonymous deve ser mantida em segredo, vamos precisar de um nome de usuário;
SENHA - Senha do usuário cujo identificador é NOME;
NOME DA BIBLIOTECA - É fornecido através da URL, que pode recebê-lo de um formulário. Neste caso, é um parâmetro de name Bib na URL ou num INPUT de FORM;

Isto corrobora nossa afirmação de que as imagens estão no nível das bibliotecas (Library), e não precisam de acesso à hierarquia das áreas de site.

Constantes para facilitar a leitura de código no trecho principal


// Constantes
String baseURL = "http:///wps/wcm/jsp/html/LeConteudoImprensa.jsp?Bib="+Biblioteca+"&Nome=";
String baseURLRest = "http:///wps/wcm/jsp/html/conteudoRestartar.jsp?Bib="+Biblioteca+"&Nome=";
String eRecDoc = "Não consegui recuperar o documento
";

String eAutorz = "Sem autorização
";


Workspace e cabeçalho


A workspace é estabelecida com base no usuário, conforme já explicamos. O cabeçalho da página é um simples header H1.

Busca pelas imagens e inicialização da lista com pointers





A lista de imagens é colocada num objeto do tipo iterador (iterator) na forma de ponteiros para cada uma delas. É preparado o cabeçalho da TABLE, na forma que é exigida pelo jquery.tablesorter.

Loop de exibição dos itens de imagem



Finalizações


Emite um fechamento de table () e fecha a workspace (é necessário). Fecha a script (%>), ajusta a tag IFRAME (onde a figura vai ser exibida) e fecha a tag BODY.


No próximo post mostraremos o servlet chamado no link VER para exibir a figura na IFRAME desta script.


















Nenhum comentário:

Postar um comentário