55import org .w3c .dom .Node ;
66import org .w3c .dom .NodeList ;
77import org .xml .sax .SAXException ;
8+
89import processing .app .Base ;
910import processing .app .Preferences ;
1011
1314import javax .xml .parsers .DocumentBuilder ;
1415import javax .xml .parsers .DocumentBuilderFactory ;
1516import javax .xml .parsers .ParserConfigurationException ;
17+
1618import java .awt .*;
1719import java .awt .event .ActionEvent ;
1820import java .awt .event .ActionListener ;
2527import java .util .zip .ZipEntry ;
2628import java .util .zip .ZipFile ;
2729
30+ @ SuppressWarnings ("serial" )
2831public class SDKDownloader extends JFrame implements PropertyChangeListener {
2932
3033 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 {
4144 JLabel downloadedTextArea ;
4245
4346 private int totalSize = 0 ;
47+ private static ZipFile zip ;
4448
4549 class SDKUrlHolder {
4650 public String platformToolsUrl , buildToolsUrl , platformUrl , toolsUrl ;
4751 public String platformToolsFilename , buildToolsFilename , platformFilename , toolsFilename ;
4852 public int totalSize = 0 ;
4953 }
5054
51- class SDKDownloadTask extends SwingWorker {
55+ class SDKDownloadTask extends SwingWorker < Object , Object > {
5256
53- private int downloadedSize = 0 , totalSize = 0 ;
57+ private int downloadedSize = 0 ;
5458 private int BUFFER_SIZE = 4096 ;
5559
5660 @ Override
@@ -60,15 +64,15 @@ protected Object doInBackground() throws Exception {
6064
6165 // creating sdk folders
6266 File sdkFolder = new File (modeFolder , "sdk" );
63- if (!sdkFolder .exists ()) sdkFolder .mkdir ();
67+ if (!sdkFolder .exists ()) sdkFolder .mkdir ();
6468 File platformsFolder = new File (sdkFolder , "platforms" );
65- if (!platformsFolder .exists ()) platformsFolder .mkdir ();
69+ if (!platformsFolder .exists ()) platformsFolder .mkdir ();
6670 File buildToolsFolder = new File (sdkFolder , "build-tools" );
67- if (!buildToolsFolder .exists ()) buildToolsFolder .mkdir ();
71+ if (!buildToolsFolder .exists ()) buildToolsFolder .mkdir ();
6872
6973 // creating temp folder for downloaded zip packages
7074 File tempFolder = new File (modeFolder , "temp" );
71- if (!tempFolder .exists ()) tempFolder .mkdir ();
75+ if (!tempFolder .exists ()) tempFolder .mkdir ();
7276
7377 try {
7478 SDKUrlHolder downloadUrls = getDownloadUrls (URL_REPOSITORY , hostOs );
@@ -91,7 +95,7 @@ protected Object doInBackground() throws Exception {
9195 File downloadedPlatform = new File (tempFolder , downloadUrls .platformFilename );
9296 downloadAndUnpack (downloadUrls .platformUrl , downloadedPlatform , platformsFolder );
9397
94- if (Base .isLinux () || Base .isMacOS ()) {
98+ if (Base .isLinux () || Base .isMacOS ()) {
9599 Runtime .getRuntime ().exec ("chmod -R 755 " + sdkFolder .getAbsolutePath ());
96100 }
97101
@@ -141,9 +145,9 @@ private void downloadAndUnpack(String urlString, File saveTo, File unpackTo) thr
141145 }
142146
143147 private String getOsString () {
144- if (Base .isWindows ()) {
148+ if (Base .isWindows ()) {
145149 return "windows" ;
146- } else if (Base .isLinux ()) {
150+ } else if (Base .isLinux ()) {
147151 return "linux" ;
148152 } else {
149153 return "macosx" ;
@@ -161,7 +165,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
161165 NodeList platformList = doc .getElementsByTagName ("sdk:platform" );
162166 for (int i = 0 ; i < platformList .getLength (); i ++) {
163167 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 )) {
165169 Node archiveListItem = ((Element ) platform ).getElementsByTagName ("sdk:archives" ).item (0 );
166170 Node archiveItem = ((Element ) archiveListItem ).getElementsByTagName ("sdk:archive" ).item (0 );
167171 urlHolder .platformUrl = ((Element ) archiveItem ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ();
@@ -177,7 +181,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
177181 for (int i = 0 ; i < archiveList .getLength (); i ++) {
178182 Node archive = archiveList .item (i );
179183 String hostOs = ((Element ) archive ).getElementsByTagName ("sdk:host-os" ).item (0 ).getTextContent ();
180- if (hostOs .equals (requiredHostOs )) {
184+ if (hostOs .equals (requiredHostOs )) {
181185 urlHolder .platformToolsFilename = (((Element ) archive ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ());
182186 urlHolder .platformToolsUrl = URL_REPOSITORY_FOLDER + urlHolder .platformToolsFilename ;
183187 urlHolder .totalSize += Integer .parseInt (((Element ) archive ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
@@ -192,7 +196,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
192196 for (int i = 0 ; i < archiveList .getLength (); i ++) {
193197 Node archive = archiveList .item (i );
194198 String hostOs = ((Element ) archive ).getElementsByTagName ("sdk:host-os" ).item (0 ).getTextContent ();
195- if (hostOs .equals (requiredHostOs )) {
199+ if (hostOs .equals (requiredHostOs )) {
196200 urlHolder .buildToolsFilename = (((Element ) archive ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ());
197201 urlHolder .buildToolsUrl = URL_REPOSITORY_FOLDER + urlHolder .buildToolsFilename ;
198202 urlHolder .totalSize += Integer .parseInt (((Element ) archive ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
@@ -207,7 +211,7 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
207211 for (int i = 0 ; i < archiveList .getLength (); i ++) {
208212 Node archive = archiveList .item (i );
209213 String hostOs = ((Element ) archive ).getElementsByTagName ("sdk:host-os" ).item (0 ).getTextContent ();
210- if (hostOs .equals (requiredHostOs )) {
214+ if (hostOs .equals (requiredHostOs )) {
211215 urlHolder .toolsFilename = (((Element ) archive ).getElementsByTagName ("sdk:url" ).item (0 ).getTextContent ());
212216 urlHolder .toolsUrl = URL_REPOSITORY_FOLDER + urlHolder .toolsFilename ;
213217 urlHolder .totalSize += Integer .parseInt (((Element ) archive ).getElementsByTagName ("sdk:size" ).item (0 ).getTextContent ());
@@ -221,11 +225,11 @@ private SDKUrlHolder getDownloadUrls(String repositoryUrl, String requiredHostOs
221225
222226 @ Override
223227 public void propertyChange (PropertyChangeEvent evt ) {
224- if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_TOTAL )) {
228+ if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_TOTAL )) {
225229 progressBar .setIndeterminate (false );
226230 totalSize = (Integer ) evt .getNewValue ();
227231 progressBar .setMaximum (totalSize );
228- } else if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_DOWNLOADED )) {
232+ } else if (evt .getPropertyName ().equals (PROPERTY_CHANGE_EVENT_DOWNLOADED )) {
229233 downloadedTextArea .setText (humanReadableByteCount ((Integer ) evt .getNewValue (), true )
230234 + " / " + humanReadableByteCount (totalSize , true ));
231235 progressBar .setValue ((Integer ) evt .getNewValue ());
@@ -337,12 +341,11 @@ public void actionPerformed(ActionEvent actionEvent) {
337341
338342 static public void extractFolder (File file , File newPath ) throws IOException {
339343 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 ();
342346
343347 // Process each entry
344- while (zipFileEntries .hasMoreElements ())
345- {
348+ while (zipFileEntries .hasMoreElements ()) {
346349 // grab a zip file entry
347350 ZipEntry entry = (ZipEntry ) zipFileEntries .nextElement ();
348351 String currentEntry = entry .getName ();
@@ -353,8 +356,7 @@ static public void extractFolder(File file, File newPath) throws IOException {
353356 // create the parent directory structure if needed
354357 destinationParent .mkdirs ();
355358
356- if (!entry .isDirectory ())
357- {
359+ if (!entry .isDirectory ()) {
358360 BufferedInputStream is = new BufferedInputStream (zip
359361 .getInputStream (entry ));
360362 int currentByte ;
0 commit comments