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 }