SDK:
- allow asychronous installation with ZipExtensionTool git-svn-id: https://jmonkeyengine.googlecode.com/svn/trunk@9902 75d07b2b-3a1a-0410-a2c5-0572b91ccdca
This commit is contained in:
parent
3da079251a
commit
e50cbc5f44
@ -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));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user