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 }