| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| TableModelFoto | 
 | 
 | 2.090909090909091;2,091 | 
| 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.gui.util; | |
| 17 | ||
| 18 |  import javax.swing.table.*; | |
| 19 |  import net.sf.webphotos.Album; | |
| 20 |  import net.sf.webphotos.PhotoDTO; | |
| 21 |  import net.sf.webphotos.gui.PainelWebFotos; | |
| 22 | ||
| 23 |  /** | |
| 24 |   * Gera o modelo da tabela de fotos. | |
| 25 |   */ | |
| 26 | public class TableModelFoto extends AbstractTableModel { | |
| 27 | ||
| 28 | private static final long serialVersionUID = -3797898104363613961L; | |
| 29 | 3 | private static final TableModelFoto instancia = new TableModelFoto(); | 
| 30 |      private Object[][] fotoTabela; | |
| 31 |      private String[] fotoColunas; | |
| 32 | ||
| 33 | 3 |      private TableModelFoto() { | 
| 34 | 3 | } | 
| 35 | ||
| 36 |      /** | |
| 37 |       * Retorna a instância da própria classe. | |
| 38 |       * @return Retorna um TableModelFoto. | |
| 39 |       */ | |
| 40 | public static TableModelFoto getModel() { | |
| 41 | 84 |          return instancia; | 
| 42 | } | |
| 43 | ||
| 44 |      /** | |
| 45 |       * Armazena os dados de fotos em duas variáveis da classe. | |
| 46 |       * Na variável fotoTabela, as fotos e seus dados específicos. | |
| 47 |       * E na variável fotoColunas somente os dados específicos. | |
| 48 |       */ | |
| 49 | public void update() { | |
| 50 | 33 | fotoTabela = Album.getAlbum().getFotosArray(); | 
| 51 | 33 | fotoColunas = Album.getAlbum().getFotosColunas(); | 
| 52 | 33 | } | 
| 53 | ||
| 54 |      /** | |
| 55 |       * Recebe um número referente a uma coluna e retorna o valor da coluna através do vetor fotoColunas. | |
| 56 |       * @param column Número referente a coluna. | |
| 57 |       * @return Retorna o valor contido na coluna. | |
| 58 |       */ | |
| 59 | @Override | |
| 60 | public String getColumnName(int column) { | |
| 61 | 54 |          return fotoColunas[column]; | 
| 62 | } | |
| 63 | ||
| 64 |      /** | |
| 65 |       * Retorna o total de colunas, contando o número de posições no vetor fotoColunas. | |
| 66 |       * @return Retorna o total de colunas. | |
| 67 |       */ | |
| 68 | @Override | |
| 69 | public int getColumnCount() { | |
| 70 | 72 |          if (fotoColunas == null) { | 
| 71 | 0 |              return 0; | 
| 72 | } | |
| 73 | 72 |          return fotoColunas.length; | 
| 74 | } | |
| 75 | ||
| 76 |      /** | |
| 77 |       * Retorna o total de linhas, contando o número de posições no vetor fotoTabela. | |
| 78 |       * @return Retorna o total de linhas. | |
| 79 |       */ | |
| 80 | @Override | |
| 81 | public int getRowCount() { | |
| 82 | 222 |          if (fotoTabela == null) { | 
| 83 | 0 |              return 0; | 
| 84 | } | |
| 85 | 222 |          return fotoTabela.length; | 
| 86 | } | |
| 87 | ||
| 88 |      /** | |
| 89 |       * Busca um valor contido na matriz fotoTabela e retorna um Object. | |
| 90 |       * Recebe como parâmetro um índice de linha e um de coluna para efetuar a procura. | |
| 91 |       * @param line Número da linha. | |
| 92 |       * @param column Número da coluna. | |
| 93 |       * @return Retorna o valor encontrado em um Object. | |
| 94 |       */ | |
| 95 | @Override | |
| 96 | public Object getValueAt(int line, int column) { | |
| 97 | 96 |          return fotoTabela[line][column]; | 
| 98 | } | |
| 99 | ||
| 100 |      /** | |
| 101 |       * Recebe um valor e os índices da matriz e seta esse valor na matriz fotoTabela. | |
| 102 |       * Checa se a foto possui ID ou nome, depois testa se o valor é de legenda ou crédito e implanta na matriz fotoTabela. | |
| 103 |       * @param value Valor a ser implantado. | |
| 104 |       * @param line Número da linha. | |
| 105 |       * @param column Número da coluna. | |
| 106 |       */ | |
| 107 | @Override | |
| 108 | public void setValueAt(Object value, int line, int column) { | |
| 109 |          // testar para verificar se fotoID é um número ou um nome de arquivo | |
| 110 | 6 |          int fotoID = 0; | 
| 111 | 6 |          String nomeFoto = ""; | 
| 112 |          try { | |
| 113 | 6 | fotoID = Integer.parseInt(fotoTabela[line][0].toString()); | 
| 114 | 6 |          } catch (Exception e) { | 
| 115 | 6 | nomeFoto = fotoTabela[line][0].toString(); | 
| 116 | 0 |          } | 
| 117 | ||
| 118 |          // Qual campo está editando ? | |
| 119 | 6 |          if (column == 1) { | 
| 120 |              // usuário está editando coluna legenda | |
| 121 |              // atualiza o modelo | |
| 122 | 6 | fotoTabela[line][column] = value; | 
| 123 |              // atualiza objeto foto | |
| 124 | 6 |              if (fotoID > 0) { | 
| 125 | 0 |                  Album.getAlbum().getFoto(fotoID).setLegenda((String) value); | 
| 126 |              } else { | |
| 127 | 6 | Album.getAlbum().getFoto(nomeFoto).setLegenda((String) value); | 
| 128 | } | |
| 129 |              // ajusta o texto da legenda | |
| 130 | 6 | PainelWebFotos.getTxtLegenda().setText((String) value); | 
| 131 | 0 |          } else if (column == 2) { | 
| 132 |              // usuário está editando coluna crédito (combobox) | |
| 133 | 0 |              fotoTabela[line][column] = value; | 
| 134 | 0 |              if (fotoID > 0) { | 
| 135 | 0 |                  Album.getAlbum().getFoto(fotoID).setCreditoNome((String) value); | 
| 136 |              } else { | |
| 137 | 0 |                  Album.getAlbum().getFoto(nomeFoto).setCreditoNome((String) value); | 
| 138 | } | |
| 139 | 0 |              int indice = PhotoDTO.getLstCreditosIndex((String) value); | 
| 140 |              // soma 1 ao indice, pois o primeiro value é espaço vazio | |
| 141 |              //PainelWebFotos.getLstCreditos().setSelectedIndex(indice + 1); | |
| 142 |              // FIXME : Retornar comportamento original com linha em branco | |
| 143 | 0 |              PainelWebFotos.getLstCreditos().setSelectedIndex(indice); | 
| 144 | } | |
| 145 | 6 | } | 
| 146 | ||
| 147 |      /** | |
| 148 |       * Checa se o número de colunas é maior que zero e retorna <I>true</I>, caso contrário retorna <I>false</I>. | |
| 149 |       * TODO: avaliar a funcionalidade desse método. | |
| 150 |       * @param line Número da linha. | |
| 151 |       * @param column Número da coluna. | |
| 152 |       * @return Retorna um valor lógico. | |
| 153 |       */ | |
| 154 | @Override | |
| 155 | public boolean isCellEditable(int line, int column) { | |
| 156 | 0 |          if (column > 0) { | 
| 157 | 0 |              return true; | 
| 158 | } | |
| 159 | 0 |          return false; | 
| 160 | } | |
| 161 | ||
| 162 |      /** | |
| 163 |       * Retorna a classe do objeto encontrado na matriz fotoTabela. | |
| 164 |       * Busca a partir do valor do número da coluna recebido como parâmetro. | |
| 165 |       * @param column Número da coluna. | |
| 166 |       * @return Retorna uma classe. | |
| 167 |       */ | |
| 168 | @Override | |
| 169 | public Class<? extends Object> getColumnClass(int column) { | |
| 170 | 36 |          return fotoTabela[0][column].getClass(); | 
| 171 | } | |
| 172 | ||
| 173 | @Override | |
| 174 | public Object clone() throws CloneNotSupportedException { | |
| 175 | 0 |          throw new CloneNotSupportedException("Singleton Object"); | 
| 176 | } | |
| 177 | } |