Listando e exibindo imagens do WCM através de um servlet - JSP - I
Autor: Bernardo | Publicado: 2011-09-02T07:00:00-07:00

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)&nbsp;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



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

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





function init() {&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; $('TABLE[id=Resultset]').tablesorter( &nbsp;);&nbsp;

&nbsp; &nbsp; }&nbsp;

function janela(src){

	var url = "http:///wps/wcm/jsp/html/Iframe_img.jsp?src="+src;

	var w = window.open('','Leitura','width=800,height=600');

	w.document.write('');

	}




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


&lt;%
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+"&amp;Nome=";
	String baseURLRest = "http:///wps/wcm/jsp/html/conteudoRestartar.jsp?Bib="+Biblioteca+"&amp;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 (%&gt;), 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.













function init() {&nbsp;

&nbsp; &nbsp; &nbsp; &nbsp; $('TABLE[id=Resultset]').tablesorter( &nbsp;);&nbsp;

&nbsp; &nbsp; }&nbsp;

function janela(src){

	var url = "http:///wps/wcm/jsp/html/Iframe_img.jsp?src="+src;

	var w = window.open('','Leitura','width=800,height=600');

	w.document.write('');

	}