View Javadoc

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 }