EMMA Coverage Report (generated Sat Oct 08 11:41:37 CEST 2011)
[all classes][net.sf.jomic.comic]

COVERAGE SUMMARY FOR SOURCE FILE [ComicInfoTableModel.java]

nameclass, %method, %block, %line, %
ComicInfoTableModel.java100% (1/1)91%  (10/11)74%  (252/341)89%  (56.7/64)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ComicInfoTableModel100% (1/1)91%  (10/11)74%  (252/341)89%  (56.7/64)
isCellEditable (int, int): boolean 0%   (0/1)0%   (0/5)0%   (0/2)
assertColumnIsValid (int): void 100% (1/1)29%  (7/24)63%  (1.3/2)
assertRowIsValid (int): void 100% (1/1)29%  (7/24)63%  (1.3/2)
<static initializer> 100% (1/1)78%  (57/73)82%  (1.6/2)
getColumnName (int): String 100% (1/1)78%  (51/65)94%  (16/17)
getValueAt (int, int): Object 100% (1/1)83%  (95/115)91%  (23.6/26)
ComicInfoTableModel (): void 100% (1/1)100% (4/4)100% (2/2)
ComicInfoTableModel (ComicModel): void 100% (1/1)100% (9/9)100% (4/4)
getColumnClass (int): Class 100% (1/1)100% (7/7)100% (2/2)
getColumnCount (): int 100% (1/1)100% (3/3)100% (1/1)
getRowCount (): int 100% (1/1)100% (12/12)100% (4/4)

1// Jomic - a viewer for comic book archives.
2// Copyright (C) 2004-2011 Thomas Aglassinger
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program.  If not, see <http://www.gnu.org/licenses/>.
16package net.sf.jomic.comic;
17 
18import java.io.File;
19 
20import javax.swing.table.AbstractTableModel;
21 
22import net.sf.jomic.tools.LocaleTools;
23import net.sf.jomic.tools.StringTools;
24 
25/**
26 *  Table model to hold details about all comic images. The model has the follwing rows:
27 *  <ol>
28 *    <li> image file name
29 *    <li> relative path in comic archive
30 *    <li> width (if available)
31 *    <li> height (if available)
32 *    <li> error (if available)
33 *  </ol>
34 *
35 *
36 * @author    Thomas Aglassinger
37 */
38public class ComicInfoTableModel extends AbstractTableModel
39{
40    /**
41     *  Column that contains the error information.
42     */
43    public static final int COLUMN_ERROR = 4;
44 
45    private static final Class[] CLASSES =
46            new Class[]{String.class, String.class, Integer.class, Integer.class, Throwable.class};
47    private static final int COLUMN_HEIGHT = 3;
48    private static final int COLUMN_IMAGE = 0;
49    private static final int COLUMN_PATH = 1;
50    private static final int COLUMN_WIDTH = 2;
51 
52    private ComicModel comicModel;
53    private StringTools stringTools;
54 
55    /**
56     *  Create a new empty ComicInfoModel.
57     */
58    public ComicInfoTableModel() {
59        this(null);
60    }
61 
62    /**
63     *  Create a new ComicInfoModel from an existing ComicModel.
64     *
65     * @param  newComicModel  Description of the parameter
66     */
67    public ComicInfoTableModel(ComicModel newComicModel) {
68        stringTools = StringTools.instance();
69        comicModel = newComicModel;
70    }
71 
72    public Class getColumnClass(int column) {
73        assertColumnIsValid(column);
74        return CLASSES[column];
75    }
76 
77    public int getColumnCount() {
78        return CLASSES.length;
79    }
80 
81    public String getColumnName(int column) {
82        assertColumnIsValid(column);
83 
84        String result = null;
85        String columnTitleKey = null;
86 
87        if (column == COLUMN_IMAGE) {
88            columnTitleKey = "image";
89        } else if (column == COLUMN_PATH) {
90            columnTitleKey = "path";
91        } else if (column == COLUMN_WIDTH) {
92            columnTitleKey = "width";
93        } else if (column == COLUMN_HEIGHT) {
94            columnTitleKey = "height";
95        } else if (column == COLUMN_ERROR) {
96            columnTitleKey = "error";
97        } else {
98            assert false : "column=" + column;
99        }
100        if (columnTitleKey != null) {
101            result = LocaleTools.instance().getMessage("tables.comicInfo." + columnTitleKey);
102        }
103        return result;
104    }
105 
106    public int getRowCount() {
107        int result;
108 
109        if (comicModel == null) {
110            result = 0;
111        } else {
112            result = comicModel.getImageCount();
113        }
114        return result;
115    }
116 
117    public Object getValueAt(int row, int column) {
118        assert comicModel != null;
119        assertRowIsValid(row);
120        assertColumnIsValid(column);
121 
122        Object result = null;
123        ComicImage comicImage = comicModel.getComicImage(row);
124 
125        if (column == COLUMN_IMAGE) {
126            result = comicImage.getFile().getName();
127        } else if (column == COLUMN_PATH) {
128            String cachDirPath = comicModel.getCacheDir().getAbsolutePath();
129            String imagePath = comicImage.getFile().getParent();
130            String relativePath;
131 
132            if (imagePath.startsWith(cachDirPath)) {
133                relativePath = stringTools.trimPrefix(imagePath, cachDirPath);
134                relativePath = stringTools.trimPrefix(relativePath, File.separator);
135            } else {
136                relativePath = imagePath;
137            }
138            result = relativePath;
139        } else if (column == COLUMN_WIDTH) {
140            if (!comicImage.hasError()) {
141                result = new Integer(comicImage.getWidth());
142            }
143        } else if (column == COLUMN_HEIGHT) {
144            if (!comicImage.hasError()) {
145                result = new Integer(comicImage.getHeight());
146            }
147        } else if (column == COLUMN_ERROR) {
148            if (comicImage.hasError()) {
149                result = comicImage.getError();
150            }
151        } else {
152            assert false : "column=" + column;
153        }
154        return result;
155    }
156 
157    /**
158     *  Return <code>false</code> to prevent all cells to be editable.
159     */
160    public boolean isCellEditable(int row, int column) {
161        assertColumnIsValid(column);
162        return false;
163    }
164 
165    private void assertColumnIsValid(int column) {
166        assert column < getColumnCount() : "column " + column + " must be less than " + getColumnCount();
167    }
168 
169    private void assertRowIsValid(int row) {
170        assert row < getRowCount() : "row " + row + " must be less than " + getRowCount();
171    }
172}

[all classes][net.sf.jomic.comic]
EMMA 2.0.4217 (C) Vladimir Roubtsov