/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package br.uff.ic.oceano.peixeespada.controller; import br.uff.ic.oceano.contexto.ConstantesAplicacao; import br.uff.ic.oceano.controller.BaseBean; import br.uff.ic.oceano.util.file.FileUtils; import java.util.ArrayList; import br.uff.ic.oceano.util.file.Archive; import java.io.InputStream; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardCopyOption; import java.util.Date; import org.apache.commons.io.FilenameUtils; import org.richfaces.event.FileUploadEvent; import org.richfaces.model.UploadedFile; /** * * @author Heliomar */ public class PeixeEspadaBean extends BaseBean { private ArrayList<UploadedFile> files = new ArrayList<UploadedFile>(); private int uploadsAvailable = 1; private Archive archiveInfo = new Archive(ConstantesAplicacao.DIR_FILE_INFO_UPLOAD); private static final String PAGINA_DOWN_JNLP = "def:/privado/peixeespada/formPeixeEspada"; private static final String PAGINA_UP_JNLP = "def:/privado/peixeespada/uploadPeixeCliente"; public PeixeEspadaBean() { super("PeixeEspadaBean"); sessao.setPerfilPeixeEspada(); } public String pageDownloadJNPL(){ return PAGINA_DOWN_JNLP; } public String pageUploadJNPL(){ return PAGINA_UP_JNLP; } public int getSize() { return (files != null) ? files.size(): 0; } public String getInfoUpload() { StringBuilder sb = new StringBuilder(); if (archiveInfo.existsFile()) { // pegando todas as linhas do arquivo String line = null; sb.append("<br/>"); while ((line = archiveInfo.readLine()) != null) { sb.append(line); sb.append("<br/>"); } } else { sb.append(getMessageResourceString("msgNoPeixeEspadaClientFileInServer", null)); } return sb.toString(); } public void listener(FileUploadEvent event) throws Exception { final UploadedFile uploadedFile = event.getUploadedFile(); if (uploadedFile.getFileExtension().compareToIgnoreCase("zip")!=0 ) { error("Only files ended with '.zip' are accepted"); return; } final Path folder = Paths.get(ConstantesAplicacao.DIR_BASE_JNLP); String filename = FilenameUtils.getBaseName(uploadedFile.getName()); String extension = FilenameUtils.getExtension(uploadedFile.getName()); Path tempPath = Files.createTempFile(folder, filename, "." + extension); try (InputStream input = uploadedFile.getInputStream()) { Files.copy(input, tempPath, StandardCopyOption.REPLACE_EXISTING); } if(FileUtils.extractZip(tempPath.toFile(), tempPath.toFile().getParentFile())){ String currentVersion = uploadedFile.getName().substring(0, uploadedFile.getName().length()-4); StringBuilder sb = new StringBuilder(); if(archiveInfo.existsFile()){ // pegando as duas primeiras linhas do arquivo String infoUltimo = archiveInfo.readLine(); sb.append("Último upload"); sb.append(infoUltimo.substring(infoUltimo.indexOf(":"))); sb.append("\n"); infoUltimo = archiveInfo.readLine(); sb.append("Última versão"); sb.append(infoUltimo.substring(infoUltimo.indexOf(":"))); sb.append("\n"); archiveInfo.closeFileReader(); archiveInfo.deleteFile(); }else{ sb.append("Último upload: Nunca\n"); sb.append("Última versão: Nenhuma\n"); } archiveInfo.openAppendAndClose("Upload atual em: "+new Date()); archiveInfo.openAppendAndClose("Versão atual: "+currentVersion); archiveInfo.openAppendAndClose("-----------------------------------"); archiveInfo.openAppendAndClose(sb.toString()); } files.add(uploadedFile); uploadsAvailable--; } public int getUploadsAvailable(){ return uploadsAvailable; } public String clearUploadData() { files.clear(); return null; } public long getTimeStamp() { return System.currentTimeMillis(); } public ArrayList<UploadedFile> getFiles() { return files; } public void setFiles(ArrayList<UploadedFile> files) { this.files = files; } }