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 package net.sf.webphotos.util.legacy;
17
18 /**
19 * Cria um comando de FTP.
20 * Comando esse armazenado posteriormente no {@link net.sf.webphotos.util.CacheFTP CacheFTP}.
21 *
22 * UPLOAD=1 DOWNLOAD=2 DELETE=3;
23 */
24 public class ComandoFTP implements Comparable<ComandoFTP> {
25
26 private int operacao = -1;
27 private int albumID = -1;
28 private int fotoID = -1;
29
30 /**
31 * Construtor da classe.
32 * Recebe os parâmetros necessários para construção de um comando FTP (ação, albúm, foto).
33 * Seta as variáveis de dentro da classe com os valores recebidos.
34 * @param acao Opção do tipo de ação.
35 * @param album Albúm.
36 * @param foto Foto.
37 */
38 public ComandoFTP(int acao, int album, int foto) {
39 operacao = acao;
40 albumID = album;
41 fotoID = foto;
42 }
43
44 /**
45 * Recebe um Object e compara com os valores armazenados na classe.
46 * Caso positivo retorna <I>true</I>, caso contrário <I>false</I>.
47 * @param o comandoFTP a ser comparado.
48 * @return Retorna uma variável lógica.
49 */
50 @Override
51 public boolean equals(Object o) {
52 ComandoFTP obj;
53 try {
54 obj = (ComandoFTP) o;
55 } catch (ClassCastException ccE) {
56 return false;
57 }
58 if (obj.getOperacao() == operacao
59 && obj.getAlbumID() == albumID
60 && obj.getFotoID() == fotoID) {
61 return true;
62 }
63 return false;
64 }
65
66 /**
67 * Faz um teste lógico para retornar uma variável lógica.
68 * É utilizado na classe {@link net.sf.webphotos.util.CacheFTP CacheFTP} no método
69 * {@link net.sf.webphotos.util.CacheFTP#add(Object) add(Object a)}
70 * TODO: Avaliar se esse método é realmente necessário para o código.
71 * @param outra Object com dados do comando para comparação
72 * @return Retorna um valor lógico.
73 */
74 public boolean recebe(ComandoFTP outra) {
75 // o objeto "outra" pode entrar na colecao ?
76 // não pode de fotoID=0...
77 // um objeto "apagar 100 0" é maior que um "apagar 100 20"
78 // já que o primeiro engloba o segundo
79 if (outra.getOperacao() == operacao
80 && outra.getAlbumID() == albumID
81 && fotoID == 0) {
82 return false;
83 }
84 return true;
85 }
86
87 /**
88 * Interface de ordenação (sort) para agrupar as operações (uploads,
89 * downloads, e deletes). Confere primeiro pela operação, se forem
90 * idênticas, confere pelo albúm, se forem idênticos também checa pela foto.
91 * @param outro Comando para comparação.
92 * @return Retorna um valor numérico para comparação.
93 */
94 @Override
95 public int compareTo(ComandoFTP c) {
96 // operações diferentes
97 if (this.getOperacao() != c.getOperacao()) {
98 return this.getOperacao() - c.getOperacao();
99 } // operação igual. Verifica se album é diferente
100 else if (this.getAlbumID() != c.getAlbumID()) {
101 return this.getAlbumID() - c.getAlbumID();
102 } // operação igual, álbum igual. Ordena pela foto
103 else {
104 return this.getFotoID() - c.getFotoID();
105 }
106 }
107
108 /**
109 * Retorna o valor numérico da operação.
110 * @return Retorna a operação.
111 */
112 public int getOperacao() {
113 return operacao;
114 }
115
116 /**
117 * Retorna o valor numérico do albúm (ID).
118 * @return Retorna o albúm.
119 */
120 public int getAlbumID() {
121 return albumID;
122 }
123
124 /**
125 * Retorna o valor numérico da foto (ID).
126 * @return Retorna a foto.
127 */
128 public int getFotoID() {
129 return fotoID;
130 }
131
132 /**
133 * Retorna uma String contendo os dados da classe agrupados.
134 * Reuni os números da operação, do albúm e da foto.
135 * @return Retorna dados do comandoFTP agrupados.
136 */
137 @Override
138 public String toString() {
139 return operacao + " " + albumID + " " + fotoID;
140 }
141 }