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://
String baseURLRest = "http://
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.