OSDN Git Service

プラットフォームごとのStigmataのホームディレクトリの場所を返す一連のクラスをリファクタリングした.
[stigmata/stigmata.git] / src / main / java / jp / sourceforge / stigmata / result / history / XmlFileExtractedBirthmarkHistory.java
1 package jp.sourceforge.stigmata.result.history;
2
3 /*
4  * $Id$
5  */
6
7 import java.io.File;
8 import java.util.Iterator;
9 import java.util.LinkedHashMap;
10 import java.util.Map;
11
12 import jp.sourceforge.stigmata.BirthmarkEnvironment;
13 import jp.sourceforge.stigmata.ExtractionResultSet;
14 import jp.sourceforge.stigmata.result.XmlFileExtractionResultSet;
15 import jp.sourceforge.stigmata.utils.Utility;
16
17 /**
18  * 
19  * @author Haruaki Tamada
20  * @version $Revision$ 
21  */
22 public class XmlFileExtractedBirthmarkHistory implements ExtractedBirthmarkHistory{
23     private File parent;
24     private Map<String, File> files = new LinkedHashMap<String, File>();
25
26     public XmlFileExtractedBirthmarkHistory(){
27         this(new File(BirthmarkEnvironment.getStigmataHome(), "extracted_birthmarks"));
28     }
29
30     public XmlFileExtractedBirthmarkHistory(String path){
31         this(new File(path));
32     }
33
34     public XmlFileExtractedBirthmarkHistory(File parent){
35         this.parent = parent;
36
37         refresh();
38     }
39
40     @Override
41     public void refresh(){
42         files.clear();
43
44         if(parent.exists()){
45             for(File file: parent.listFiles()){
46                 if(isTarget(file)){
47                     files.put(file.getName(), file);
48                 }
49             }
50         }
51     }
52
53     @Override
54     public void deleteAllResultSets(){
55         for(File file: parent.listFiles()){
56             if(isTarget(file)){
57                 Utility.deleteDirectory(file);
58             }
59         }
60     }
61
62     @Override
63     public void deleteResultSet(String id){
64         File file = files.get(id);
65         if(file != null){
66             if(file.isDirectory()){
67                 Utility.deleteDirectory(file);
68             }
69             else{
70                 file.delete();
71             }
72         }
73     }
74
75     @Override
76     public ExtractionResultSet getResultSet(String id){
77         File file = files.get(id);
78         if(file != null){
79             return new XmlFileExtractionResultSet(file);
80         }
81         return null;
82     }
83
84     @Override
85     public synchronized String[] getResultSetIds(){
86         return files.keySet().toArray(new String[files.size()]);
87     }
88
89     @Override
90     public Iterator<String> iterator(){
91         return files.keySet().iterator();
92     }
93
94     private boolean isTarget(File file){
95         return file.isDirectory()
96             && file.getName().matches("\\d\\d\\d\\d\\d\\d\\d\\d-\\d\\d\\d\\d\\d\\d.\\d\\d\\d"); 
97     }
98 }