KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > spoon > support > builder > support > CtFolderZip


1 package spoon.support.builder.support;
2
3 import java.io.BufferedInputStream JavaDoc;
4 import java.io.ByteArrayOutputStream JavaDoc;
5 import java.io.File JavaDoc;
6 import java.io.FileInputStream JavaDoc;
7 import java.io.FileNotFoundException JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.util.ArrayList JavaDoc;
10 import java.util.List JavaDoc;
11 import java.util.zip.ZipEntry JavaDoc;
12 import java.util.zip.ZipInputStream JavaDoc;
13
14 import spoon.support.builder.CtFile;
15 import spoon.support.builder.CtFolder;
16 import spoon.support.builder.FileFactory;
17
18 public class CtFolderZip implements CtFolder {
19
20     File JavaDoc f;
21
22     List JavaDoc<CtFile> files;
23
24     public CtFolderZip(File JavaDoc f) throws IOException JavaDoc {
25         super();
26         if (!f.isFile()) {
27             throw new IOException JavaDoc(f.getName() + " is not a valid zip file");
28         }
29         this.f = f;
30     }
31
32     public List JavaDoc<CtFile> getAllFile() {
33         return getFile();
34     }
35
36     public List JavaDoc<CtFile> getAllJavaFile() {
37         List JavaDoc<CtFile> files = new ArrayList JavaDoc<CtFile>();
38
39         for (CtFile f : getFile())
40             if (f.isJava())
41                 files.add(f);
42
43         // no subfolder, skipping
44
// for (CtFolder fol : getSubFolder())
45
// files.addAll(fol.getAllJavaFile());
46
return files;
47     }
48
49     public List JavaDoc<CtFile> getFile() {
50         // Indexing content
51
if (files == null) {
52             files = new ArrayList JavaDoc<CtFile>();
53             try {
54                 ZipInputStream JavaDoc zipInput = new ZipInputStream JavaDoc(
55                         new BufferedInputStream JavaDoc(new FileInputStream JavaDoc(f)));
56
57                 ZipEntry JavaDoc entry;
58                 while ((entry = zipInput.getNextEntry()) != null) {
59                     // deflate in buffer
60
final int BUFFER = 2048;
61                     ByteArrayOutputStream JavaDoc output = new ByteArrayOutputStream JavaDoc(
62                             BUFFER);
63                     int count;
64                     byte data[] = new byte[BUFFER];
65                     while ((count = zipInput.read(data, 0, BUFFER)) != -1) {
66                         output.write(data, 0, count);
67                     }
68                     output.flush();
69                     output.close();
70
71                     files.add(new CtFileZip(this, entry.getName(), output
72                             .toByteArray()));
73                 }
74
75             } catch (Exception JavaDoc e) {
76                 e.printStackTrace();
77             }
78         }
79         return files;
80     }
81
82     public String JavaDoc getName() {
83         return f.getName();
84     }
85
86     public CtFolder getParent() {
87         try {
88             return FileFactory.createFolder(f.getParentFile());
89         } catch (FileNotFoundException JavaDoc e) {
90             e.printStackTrace();
91         }
92         return null;
93     }
94
95     public List JavaDoc<CtFolder> getSubFolder() {
96         return new ArrayList JavaDoc<CtFolder>(0);
97     }
98
99     public boolean isFile() {
100         return false;
101     }
102
103     @Override JavaDoc
104     public String JavaDoc toString() {
105         return getName();
106     }
107
108 }
109
Popular Tags