5
5
import org .w3c .dom .Node ;
6
6
import org .w3c .dom .NodeList ;
7
7
import org .xml .sax .SAXException ;
8
+
8
9
import processing .app .Base ;
9
10
import processing .app .Preferences ;
10
11
13
14
import javax .xml .parsers .DocumentBuilder ;
14
15
import javax .xml .parsers .DocumentBuilderFactory ;
15
16
import javax .xml .parsers .ParserConfigurationException ;
17
+
16
18
import java .awt .*;
17
19
import java .awt .event .ActionEvent ;
18
20
import java .awt .event .ActionListener ;
25
27
import java .util .zip .ZipEntry ;
26
28
import java .util .zip .ZipFile ;
27
29
30
+ @ SuppressWarnings ("serial" )
28
31
public class SDKDownloader extends JFrame implements PropertyChangeListener {
29
32
30
33
private static final String URL_REPOSITORY = "https://dl-ssl.google.com/android/repository/repository-10.xml" ;
@@ -41,16 +44,17 @@ public class SDKDownloader extends JFrame implements PropertyChangeListener {
41
44
JLabel downloadedTextArea ;
42
45
43
46
private int totalSize = 0 ;
47
+ private static ZipFile zip ;
44
48
45
49
class SDKUrlHolder {
46
50
public String platformToolsUrl , buildToolsUrl , platformUrl , toolsUrl ;
47
51
public String platformToolsFilename , buildToolsFilename , platformFilename , toolsFilename ;
48
52
public int totalSize = 0 ;
49
53
}
50
54
51
- class SDKDownloadTask extends SwingWorker {
55
+ class SDKDownloadTask extends SwingWorker < Object , Object > {
52
56
53
- private int downloadedSize = 0 , totalSize = 0 ;
57
+ private int downloadedSize = 0 ;
54
58
private int BUFFER_SIZE = 4096 ;
55
59
56
60
@ Override
@@ -60,15 +64,15 @@ protected Object doInBackground() throws Exception {
60
64
61
65
// creating sdk folders
62
66
File sdkFolder = new File (modeFolder , "sdk" );
63
- if (!sdkFolder .exists ()) sdkFolder .mkdir ();
67
+ if (!sdkFolder .exists ()) sdkFolder .mkdir ();
64
68
File platformsFolder = new File (sdkFolder , "platforms" );
65
- if (!platformsFolder .exists ()) platformsFolder .mkdir ();
69
+ if (!platformsFolder .exists ()) platformsFolder .mkdir ();
66
70
File buildToolsFolder = new File (sdkFolder , "build-tools" );
67
- if (!buildToolsFolder .exists ()) buildToolsFolder .mkdir ();
71
+ if (!buildToolsFolder .exists ()) buildToolsFolder .mkdir ();
68
72
69
73
// creating temp folder for downloaded zip packages
70
74
File tempFolder = new File (modeFolder , "temp" );
71
- if (!tempFolder .exists ()) tempFolder .mkdir ();
75
+ if (!tempFolder .exists ()) tempFolder .mkdir ();
72
76
73
77
try {
74
78
SDKUrlHolder downloadUrls = getDownloadUrls (URL_REPOSITORY , hostOs );
@@ -91,7 +95,7 @@ protected Object doInBackground() throws Exception {
91
95
File downloadedPlatform = new File (tempFolder , downloadUrls .platformFilename );
92
96
downloadAndUnpack (downloadUrls .platformUrl , downloadedPlatform , platformsFolder );
93
97
94
- if (Base .isLinux () || Base .isMacOS ()) {
98
+ if (Base .isLinux () || Base .isMacOS ()) {
95
99
Runtime .getRuntime ().exec ("chmod -R 755 " + sdkFolder .getAbsolutePath ());
96
100
}
97
101
@@ -141,9 +145,9 @@ private void downloadAndUnpack(String urlString, File saveTo, File unpackTo) thr
141
145
}
142
146
143
147
private String getOsString () {
144
- if (Base .isWindows ()) {
148
+ if (Base .isWindows ()) {
145
149
return "windows" ;
146
- } else if (Base .isLinux ()) {
150
+ } else if (Base .isLinux ()) {
147
151
return "linux" ;
148
152
} else {
149
153
return "macosx" ;
@@ -161,7 +165,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
161
165
NodeList platformList = doc .getElementsByTagName ("sdk:platform" );
162
166
for (int i = 0 ; i < platformList .getLength (); i ++) {
163
167
Node platform = platformList .item (i );
164
- if (((Element ) platform ).getElementsByTagName ("sdk:api-level" ).item (0 ).getTextContent ().equals (PLATFORM_API_LEVEL )) {
168
+ if (((Element ) platform ).getElementsByTagName ("sdk:api-level" ).item (0 ).getTextContent ().equals (PLATFORM_API_LEVEL )) {
165
169
Node archiveListItem = ((Element ) platform ).getElementsByTagName ("sdk:archives" ).item (0 );
166
170
Node archiveItem = ((Element ) archiveListItem ).getElementsByTagName ("sdk:archive" ).item (0 );
167
171
urlHolder .platformUrl = ((Element ) archiveItem ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ();
@@ -177,7 +181,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
177
181
for (int i = 0 ; i < archiveList .getLength (); i ++) {
178
182
Node archive = archiveList .item (i );
179
183
String hostOs = ((Element ) archive ).getElementsByTagName ("sdk:host-os" ).item (0 ).getTextContent ();
180
- if (hostOs .equals (requiredHostOs )) {
184
+ if (hostOs .equals (requiredHostOs )) {
181
185
urlHolder .platformToolsFilename = (((Element ) archive ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ());
182
186
urlHolder .platformToolsUrl = URL_REPOSITORY_FOLDER + urlHolder .platformToolsFilename ;
183
187
urlHolder .totalSize += Integer .parseInt (((Element ) archive ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
@@ -192,7 +196,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
192
196
for (int i = 0 ; i < archiveList .getLength (); i ++) {
193
197
Node archive = archiveList .item (i );
194
198
String hostOs = ((Element ) archive ).getElementsByTagName ("sdk:host-os" ).item (0 ).getTextContent ();
195
- if (hostOs .equals (requiredHostOs )) {
199
+ if (hostOs .equals (requiredHostOs )) {
196
200
urlHolder .buildToolsFilename = (((Element ) archive ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ());
197
201
urlHolder .buildToolsUrl = URL_REPOSITORY_FOLDER + urlHolder .buildToolsFilename ;
198
202
urlHolder .totalSize += Integer .parseInt (((Element ) archive ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
@@ -207,7 +211,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
207
211
for (int i = 0 ; i < archiveList .getLength (); i ++) {
208
212
Node archive = archiveList .item (i );
209
213
String hostOs = ((Element ) archive ).getElementsByTagName ("sdk:host-os" ).item (0 ).getTextContent ();
210
- if (hostOs .equals (requiredHostOs )) {
214
+ if (hostOs .equals (requiredHostOs )) {
211
215
urlHolder .toolsFilename = (((Element ) archive ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ());
212
216
urlHolder .toolsUrl = URL_REPOSITORY_FOLDER + urlHolder .toolsFilename ;
213
217
urlHolder .totalSize += Integer .parseInt (((Element ) archive ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
@@ -221,11 +225,11 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
221
225
222
226
@ Override
223
227
public void propertyChange (PropertyChangeEvent evt ) {
224
- if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_TOTAL )) {
228
+ if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_TOTAL )) {
225
229
progressBar .setIndeterminate (false );
226
230
totalSize = (Integer ) evt .getNewValue ();
227
231
progressBar .setMaximum (totalSize );
228
- } else if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_DOWNLOADED )) {
232
+ } else if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_DOWNLOADED )) {
229
233
downloadedTextArea .setText (humanReadableByteCount ((Integer ) evt .getNewValue (), true )
230
234
+ " / " + humanReadableByteCount (totalSize , true ));
231
235
progressBar .setValue ((Integer ) evt .getNewValue ());
@@ -337,12 +341,11 @@ public void actionPerformed(ActionEvent actionEvent) {
337
341
338
342
static public void extractFolder (File file , File newPath ) throws IOException {
339
343
int BUFFER = 2048 ;
340
- ZipFile zip = new ZipFile (file );
341
- Enumeration zipFileEntries = zip .entries ();
344
+ zip = new ZipFile (file );
345
+ Enumeration <? extends ZipEntry > zipFileEntries = zip .entries ();
342
346
343
347
// Process each entry
344
- while (zipFileEntries .hasMoreElements ())
345
- {
348
+ while (zipFileEntries .hasMoreElements ()) {
346
349
// grab a zip file entry
347
350
ZipEntry entry = (ZipEntry ) zipFileEntries .nextElement ();
348
351
String currentEntry = entry .getName ();
@@ -353,8 +356,7 @@ static public void extractFolder(File file, File newPath) throws IOException {
353
356
// create the parent directory structure if needed
354
357
destinationParent .mkdirs ();
355
358
356
- if (!entry .isDirectory ())
357
- {
359
+ if (!entry .isDirectory ()) {
358
360
BufferedInputStream is = new BufferedInputStream (zip
359
361
.getInputStream (entry ));
360
362
int currentByte ;
0 commit comments