|
|
@ -40,6 +40,7 @@ import java.io.IOException; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.io.InputStream; |
|
|
|
import java.io.InputStreamReader; |
|
|
|
import java.io.InputStreamReader; |
|
|
|
import java.net.URL; |
|
|
|
import java.net.URL; |
|
|
|
|
|
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
|
import java.util.logging.Level; |
|
|
|
import java.util.logging.Level; |
|
|
|
import java.util.logging.Logger; |
|
|
|
import java.util.logging.Logger; |
|
|
|
import java.util.zip.ZipEntry; |
|
|
|
import java.util.zip.ZipEntry; |
|
|
@ -62,6 +63,7 @@ import org.openide.util.Utilities; |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
public class ZipExtensionTool { |
|
|
|
public class ZipExtensionTool { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
static final ConcurrentHashMap<String, Boolean> installMap = new ConcurrentHashMap<String, Boolean>(); |
|
|
|
static final int BUFFER = 2048; |
|
|
|
static final int BUFFER = 2048; |
|
|
|
private final String settingsFolder = System.getProperty("netbeans.user"); |
|
|
|
private final String settingsFolder = System.getProperty("netbeans.user"); |
|
|
|
public String SUFFIX_WIN = "windows"; |
|
|
|
public String SUFFIX_WIN = "windows"; |
|
|
@ -76,7 +78,7 @@ public class ZipExtensionTool { |
|
|
|
this.extensionName = extensionName; |
|
|
|
this.extensionName = extensionName; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void install() { |
|
|
|
private void install() { |
|
|
|
if (new File(settingsFolder + File.separator + extensionName).exists()) { |
|
|
|
if (new File(settingsFolder + File.separator + extensionName).exists()) { |
|
|
|
return; |
|
|
|
return; |
|
|
|
} |
|
|
|
} |
|
|
@ -92,6 +94,21 @@ public class ZipExtensionTool { |
|
|
|
progressHandle.finish(); |
|
|
|
progressHandle.finish(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void install(boolean async) { |
|
|
|
|
|
|
|
if (async && installMap.putIfAbsent(extensionName, true) == null) { |
|
|
|
|
|
|
|
new Thread(new Runnable() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void run() { |
|
|
|
|
|
|
|
install(); |
|
|
|
|
|
|
|
installMap.remove(extensionName); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}).start(); |
|
|
|
|
|
|
|
} else if (!async && installMap.putIfAbsent(extensionName, true) == null) { |
|
|
|
|
|
|
|
install(); |
|
|
|
|
|
|
|
installMap.remove(extensionName); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private boolean extractToolsShell(String zipPath, String extractionPath) { |
|
|
|
private boolean extractToolsShell(String zipPath, String extractionPath) { |
|
|
|
File path = new File(extractionPath); |
|
|
|
File path = new File(extractionPath); |
|
|
|
if (!path.exists()) { |
|
|
|
if (!path.exists()) { |
|
|
@ -102,7 +119,6 @@ public class ZipExtensionTool { |
|
|
|
URL url = null; |
|
|
|
URL url = null; |
|
|
|
try { |
|
|
|
try { |
|
|
|
String tempFileName = extractionPath + "_tmp.zip"; |
|
|
|
String tempFileName = extractionPath + "_tmp.zip"; |
|
|
|
System.out.println("ZipPath: " + zipPath); |
|
|
|
|
|
|
|
url = new URL("nbres:" + zipPath); |
|
|
|
url = new URL("nbres:" + zipPath); |
|
|
|
in = new BufferedInputStream(url.openStream()); |
|
|
|
in = new BufferedInputStream(url.openStream()); |
|
|
|
out = new BufferedOutputStream(new FileOutputStream(tempFileName)); |
|
|
|
out = new BufferedOutputStream(new FileOutputStream(tempFileName)); |
|
|
|