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

COVERAGE SUMMARY FOR SOURCE FILE [ExtractRarTask.java]

nameclass, %method, %block, %line, %
ExtractRarTask.java100% (1/1)100% (3/3)54%  (76/140)77%  (18.4/24)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class ExtractRarTask100% (1/1)100% (3/3)54%  (76/140)77%  (18.4/24)
start (): void 100% (1/1)43%  (47/110)65%  (10.5/16)
ExtractRarTask (): void 100% (1/1)93%  (13/14)98%  (2.9/3)
ExtractRarTask (File, File): void 100% (1/1)100% (16/16)100% (5/5)

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.tools;
17 
18import java.io.File;
19 
20import org.apache.commons.logging.Log;
21import org.apache.commons.logging.LogFactory;
22 
23/**
24 *  Task to extract contents of a RAR file to a target folder.
25 *
26 * @author    Thomas Aglassinger
27 */
28public class ExtractRarTask extends AbstractTask
29{
30    private static final double WEIGHT_LIST = 0.15;
31    private Log logger;
32    private FileArchive rarArchive;
33 
34    private File rarFile;
35    private File targetFolder;
36 
37    public ExtractRarTask(File newRarFile, File newTargetFolder) {
38        this();
39        rarFile = newRarFile;
40        targetFolder = newTargetFolder;
41        setMaxProgress(rarFile.length() + 1);
42    }
43 
44    private ExtractRarTask() {
45        super();
46        logger = LogFactory.getLog(ExtractRarTask.class);
47    }
48 
49    public void start()
50        throws Exception {
51        setProgress(0);
52        rarArchive = new FileArchive(rarFile);
53 
54        long progressAfterListRar = Math.round(WEIGHT_LIST * getMaxProgress());
55        String[] fileNamesToExtract = rarArchive.list();
56        boolean allFilesExtracted = false;
57 
58        setProgress(progressAfterListRar);
59        try {
60            rarArchive.extract(targetFolder, fileNamesToExtract, null, 0);
61            setProgress(getMaxProgress());
62            allFilesExtracted = !isInterrupted();
63        } finally {
64            if (!allFilesExtracted) {
65                if (logger.isInfoEnabled()) {
66                    logger.info("removing files extracted so far");
67                }
68                for (int fileNameToDeleteIndex = 0; fileNameToDeleteIndex < fileNamesToExtract.length; fileNameToDeleteIndex += 1) {
69                    File fileToDelete = new File(targetFolder, fileNamesToExtract[fileNameToDeleteIndex]);
70 
71                    fileToDelete.delete();
72                }
73            }
74        }
75    }
76}

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