Coverage Report - net.sf.webphotos.gui.util.TableModelFoto
 
Classes in this File Line Coverage Branch Coverage Complexity
TableModelFoto
62%
25/40
28%
4/14
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  
 }