1 36 package org.ungoverned.oscar.installer.artifact; 37 38 import java.io.*; 39 import java.net.URL ; 40 import java.net.URLConnection ; 41 42 import org.ungoverned.oscar.installer.Status; 43 import org.ungoverned.oscar.installer.StringProperty; 44 45 public class URLJarArtifact extends AbstractJarArtifact 46 { 47 public URLJarArtifact(StringProperty sourceName) 48 { 49 this(sourceName, null); 50 } 51 52 public URLJarArtifact(StringProperty sourceName, StringProperty destDir) 53 { 54 this(sourceName, destDir, false); 55 } 56 57 public URLJarArtifact( 58 StringProperty sourceName, StringProperty destDir, boolean localize) 59 { 60 super(sourceName, destDir, localize); 61 } 62 63 public InputStream getInputStream(Status status) 64 throws IOException 65 { 66 String fileName = getSourceName().getStringValue(); 67 fileName = (fileName.lastIndexOf('/') > 0) 68 ? fileName.substring(fileName.lastIndexOf('/') + 1) 69 : fileName; 70 71 status.setText("Connecting..."); 72 73 File file = File.createTempFile("oscar-install.tmp", null); 74 file.deleteOnExit(); 75 76 OutputStream os = new FileOutputStream(file); 77 URLConnection conn = new URL (getSourceName().getStringValue()).openConnection(); 78 int total = conn.getContentLength(); 79 InputStream is = conn.getInputStream(); 80 81 int count = 0; 82 for (int len = is.read(s_buffer); len > 0; len = is.read(s_buffer)) 83 { 84 count += len; 85 os.write(s_buffer, 0, len); 86 if (total > 0) 87 { 88 status.setText("Downloading " + fileName 89 + " ( " + count + " bytes of " + total + " )."); 90 } 91 else 92 { 93 status.setText("Downloading " + fileName + " ( " + count + " bytes )."); 94 } 95 } 96 97 os.close(); 98 is.close(); 99 100 return new FileInputStream(file); 101 } 102 103 public String toString() 104 { 105 return "URL JAR: " + getSourceName().getStringValue(); 106 } 107 } | Popular Tags |