segunda-feira, 2 de junho de 2014
Descompactar arquivos zip em Lotus Script utilizando LS2J
Como Lotus Script não possui uma classe nativa para compactar () ou descompactar arquivos no formato '.zip', Criei essa funcionalidade utilizando 'ls2j' para conectar na classe java.
Necessidade: Extrair o arquivo compactado do campo richtext e exibir o arquivo 'Player.html'.
1º Criação de um agent Lotus Script com o código abaixo:
Option Public
Option Declare
UseLSX "*javacon"
Use "bib_unZip"
Sub Initialize
On Error GoTo trataerro
Dim ses_Sessao As New NotesSession
Dim ws_AreaTrabalho As New NotesUIWorkspace
Dim rti_anexos As NotesRichTextItem
Dim doc_Anexo As NotesDocument
Dim strCaminho As String
Dim strNomeAnexoZip As String
Set doc_Anexo = ws_AreaTrabalho.Currentdocument.Document
Set rti_anexos = doc_Anexo.Getfirstitem("ca_AnexoConvertido")
If Not rti_anexos Is Nothing Then
If ( rti_anexos.Type = RICHTEXT ) Then
If Not IsEmpty( rti_anexos.EmbeddedObjects ) Then
strCaminho = Environ("temp")
strCaminho = MkDir(strCaminho + "\" + doc_Anexo.Universalid)
ForAll Anexo In rti_Anexos.EmbeddedObjects
If Anexo.Type = EMBED_ATTACHMENT Then
Call Anexo.ExtractFile(strCaminho & Anexo.Source)
strNomeAnexoZip = Anexo.Source
End If
End ForAll
Else
MsgBox |Documento não possui anexo convertido!|,64,|Operação Cancelada|
Exit Sub
End If
End If
End If
Dim strFullPathZip As String
strFullPathZip = strCaminho & strNomeAnexoZip
If strNomeAnexoZip = "" Then
MsgBox |Documento não possui anexo convertido!|,64,|Operação Cancelada|
Kill strFullPathZip
Exit sub
End If
Dim strExtensaoAnexo As String
strExtensaoAnexo = |.|&LCase(StrRightBack(CStr(strNomeAnexoZip), "."))
If (strExtensaoAnexo <> ".zip" )Then
MsgBox |Arquivo convertido contem arquivos inválidos!|,64,|Operação Cancelada|
Kill strFullPathZip
Exit Sub
End If
Dim mySession As JavaSession
Dim zipClass As JavaClass
Dim zipFileObject As JavaObject
Set mySession = New JavaSession()
Set zipClass = mySession.GetClass("br.com.unzip.controller.UnZip")
Set zipFileObject = zipClass.CreateObject()
Call zipFileObject.ziparArquivo(strFullPathZip)
Dim returnZipExtractFolder As String
returnZipExtractFolder = zipFileObject.getDestinationFolder()
If Trim(returnZipExtractFolder)="" Then
Error 1001,|Não foi possível descompactar o arquivo : | & strFullPathZip
Exit Sub
End If
Dim intRespostaShell As Integer
intRespostaShell = Shell("explorer " & returnZipExtractFolder & "\Player.html",1)
Exit Sub
trataerro:
MsgBox "Aconteceu um erro inesperado, favor, contactar o administrador!",16,"Operação Cancelada!"
Call logError()
Exit sub
End Sub
2º Criação da biblioteca de script 'bib_UnZip' em Java com os métodos p/compactar.
Classe Progresso. => Progressive dialog
package br.com.unzip.view;
import java.awt.Window;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import javax.swing.JFrame;
import javax.swing.ProgressMonitor;
public class Progresso {
ProgressMonitor progress;
public Progresso(String strMensagem, String strAlerta, int intMaximo){
JFrame frame = new JFrame();
WindowListener exitListener;
exitListener = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
Window window = e.getWindow();
window.setVisible(false);
window.dispose();
System.exit(0);
}
};
frame.addWindowListener(exitListener);
progress = new ProgressMonitor(frame, strMensagem, strAlerta, 0, intMaximo);
}
public void setProgresso(int intProgresso){
progress.setProgress(intProgresso);
}
public boolean cancelado(){
return progress.isCanceled();
}
}
Classe model => descompactar os arquivos
package br.com.unzip.model;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
public class UnZipFile {
/**
* Unzip it
* @param zipFile input zip file
* @param output zip file output folder
*/
public void unZipIt(String zipFile, String outputFolder){
byte[] buffer = new byte[1024];
try{
//create output directory is not exists
File folder = new File(outputFolder);
if(!folder.exists()){
folder.mkdir();
}
//get the zip file content
ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile));
//get the zipped file list entry
ZipEntry ze = zis.getNextEntry();
while(ze!=null){
String fileName = ze.getName();
File newFile = new File(outputFolder + File.separator + fileName);
System.out.println("file unzip : "+ newFile.getAbsoluteFile());
//create all non exists folders
//else you will hit FileNotFoundException for compressed folder
new File(newFile.getParent()).mkdirs();
FileOutputStream fos = new FileOutputStream(newFile);
int len;
while ((len = zis.read(buffer)) > 0) {
fos.write(buffer, 0, len);
}
fos.close();
ze = zis.getNextEntry();
}
zis.closeEntry();
zis.close();
}catch(IOException ex){
ex.printStackTrace();
}
}
}
Classe UnZip => principal
package br.com.unzip.controller;
import java.text.SimpleDateFormat;
import java.util.Date;
import br.com.unzip.model.UnZipFile;
public class UnZip {
private String destinationFolder = null;
public UnZip(){
}
public void ziparArquivo(String caminhoArquivoZip) {
String sourceFolder = "";
sourceFolder = caminhoArquivoZip;
if(sourceFolder != null){
destinationFolder = System.getProperty("java.io.tmpdir");
Date data = new Date();
SimpleDateFormat dateFormat = new SimpleDateFormat("ddMMyyyy-HHmmss");
destinationFolder = destinationFolder + dateFormat.format(data);
System.out.println("destinationFolder: " + destinationFolder);
UnZipFile zipFolder = new UnZipFile();
zipFolder.unZipIt(sourceFolder, destinationFolder);
}
}
public String getDestinationFolder() {
return destinationFolder;
}
}
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário