1 /** 2 * Copyright 2008 WebPhotos 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 /* 17 * Sync.java 18 * 19 * Created on 23 de Maio de 2006, 11:40 20 * 21 * To change this template, choose Tools | Template Manager 22 * and open the template in the editor. 23 */ 24 25 package net.sf.webphotos.sync; 26 27 import java.io.IOException; 28 import java.io.InputStream; 29 import java.io.OutputStream; 30 import java.util.ArrayList; 31 import net.sf.webphotos.util.legacy.Arquivo; 32 import org.apache.commons.net.ftp.FTPFile; 33 import org.apache.commons.net.io.CopyStreamListener; 34 35 /** 36 * Interface que especifica como webfotos irá 37 * sincronizar arquivos. 38 * @author guilherme 39 */ 40 public interface Sync { 41 42 /** 43 * Retorna um InputStream para o arquivo específico. 44 * @param arquivo Nome do arquivo. 45 * @return Retorna um InputStream. 46 * @throws java.io.IOException Erro durante transmissão de I/O. 47 */ 48 InputStream retrieveFileStream(String arquivo) throws IOException; 49 /** 50 * Retorna um OutputStream para o arquivo específico. 51 * @param arquivo Nome do arquivo. 52 * @return Retorna um OutputStream. 53 * @throws java.io.IOException Erro durante transmissão de I/O. 54 */ 55 OutputStream storeFileStream(String arquivo) throws IOException; 56 /** 57 * Faz a transferência de um arquivo. 58 * @param streamOrigem Arquivo de origem. 59 * @param streamDestino Local de destino. 60 * @param streamSize Tamanho do arquivo. 61 * @throws java.io.IOException Problemas na leitura e escrita dos dados. 62 */ 63 void transferFile(InputStream streamOrigem, OutputStream streamDestino, long streamSize) throws IOException; 64 /** 65 * Deleta um arquivo especificado pelos parãmetros. 66 * @param string Nome do arquivo. 67 * @return Retorna uma confirmação de exclusão. 68 * @throws java.io.IOException Erro durante transmissão de I/O. 69 */ 70 boolean deleteFile(String string) throws IOException; 71 72 /** 73 * Muda o diretório. 74 * @param diretorioFilho Diretório que deve ser acessado. 75 * @throws java.io.IOException Erro de sincronização. 76 * @throws net.sf.webphotos.sync.SyncException Erro de comunicação entre os dados. 77 */ 78 void cd(String diretorioFilho) throws IOException, SyncException; 79 /** 80 * Cria um novo subdiretório no diretório utilizado. 81 * @param pathName O nome do diretório a ser criado. 82 * @throws java.io.IOException Se um erro de I/O ocorrer enquanto está sendo enviado 83 * um comando ao servidor ou recebendo uma resposta do servidor. 84 * @return Retorna <I>true</I> caso ocorra com sucesso. 85 */ 86 boolean makeDirectory(String pathName) throws IOException; 87 /** 88 * Muda o diretório de trabalho baseado no novo passado como parâmetro. 89 * @param pathName Novo diretório de trabalho. 90 * @return Retorna uma confirmação. 91 * @throws java.io.IOException Erro durante uma transmissão de I/O. 92 */ 93 boolean changeWorkingDirectory(String pathName) throws IOException; 94 /** 95 * Retorna o nome do diretório de trabalho. 96 * @return Retorna o diretório. 97 * @throws java.io.IOException Erro durante transmissão de I/O. 98 */ 99 String printWorkingDirectory() throws IOException; 100 /** 101 * Remove um diretório através de um ID de albúm recebido. 102 * @param albumID ID do albúm. 103 * @return Retorna uma confimação de exclusão do diretório. 104 * @throws java.io.IOException Exceção durante transmissão de I/O. 105 */ 106 boolean removeDirectory(String albumID) throws IOException; 107 108 109 /** 110 * Conecta ao FTP. 111 * @return Retorna uma confirmação para a conexão. 112 */ 113 boolean connect(); 114 /** 115 * Desconecta do FTP e apresenta uma mensagem explicando o motivo. 116 * @param msg Mensagem do motivo da desconexão. 117 */ 118 void disconnect(String msg); 119 120 /** 121 * Seta um objeto CopyStreamListener. 122 * TODO: esse método contem objetos específicos - retirá-lo. 123 * @param copyStreamListener Objeto da classe CopyStreamListener. 124 */ 125 void setCopyStreamListener(CopyStreamListener copyStreamListener); 126 /** 127 * Retorna um objeto CopyStreamListener. 128 * TODO: esse método contem objetos específicos - retirá-lo. 129 * @return Retorna CopyStreamListener. 130 */ 131 CopyStreamListener getCopyStreamListener(); 132 133 /** 134 * Seta o ouvinte syncListener. 135 * @param listener Um listener de sincronização. 136 */ 137 void setSyncListener(SyncListener listener); 138 /** 139 * Retorna o ouvinte syncListener. 140 * @return Retorna um listener de sincronização. 141 */ 142 SyncListener getSyncListener(); 143 144 /** 145 * Determina qual caminho usar. 146 * @param ftpRoot Parâmetro que recebe a informação. 147 */ 148 void setSyncFolder(String ftpRoot); 149 /** 150 * Retorna o caminho que deve usar. 151 * @return Mostra o caminho base. 152 */ 153 String getSyncFolder(); 154 155 /** 156 * Retorna o usuário. 157 * @return Retorna um usuário. 158 */ 159 String getUsuario(); 160 /** 161 * Seta um nome de usuário. 162 * @param usuario Usuário. 163 */ 164 void setUsuario(String usuario); 165 166 /** 167 * Retorna uma senha de usuário. 168 * @return Retorna uma senha. 169 */ 170 char[] getSenha(); 171 /** 172 * Seta uma senha de usuário. 173 * @param senha Senha. 174 */ 175 void setSenha(char[] senha); 176 177 /** 178 * Retorna uma lista de arquivos. 179 * @throws java.io.IOException Erro durante transmissão de I/O. 180 * @return Retorna um vetor com os arquivos. 181 */ 182 FTPFile[] listFiles() throws IOException; 183 184 /** 185 * Retorna o tamanho do Buffer. 186 * @return Retorna um tamanho inteiro. 187 */ 188 int getBufferSize(); 189 /** 190 * Carrega uma linha de comando FTP. 191 * @param linha Linha de comando FTP. 192 */ 193 void loadSyncCacheLine(String linha); 194 /** 195 * Retorna uma lista de arquivos. 196 * @return Retorna uma lista de arquivos. 197 */ 198 ArrayList<Arquivo> getListaArquivos(); 199 200 /** 201 * Procure sua utilização em 202 * {@link net.sf.webphotos.sync.FTP.SyncObject#loadSyncCache() loadSyncCache}(). 203 */ 204 void loadSyncCache(); 205 /** 206 * Retorna a variável boolean enviarAltaResolução para especificar se serão 207 * enviadas fotos originais ou não. 208 * @return Retorna um valor lógico. 209 */ 210 boolean isEnviarAltaResolucao(); 211 212 }