Skip to content
This repository was archived by the owner on Apr 8, 2019. It is now read-only.

Commit 8706374

Browse files
author
aki
committed
create blob class
1 parent bd5b98c commit 8706374

File tree

6 files changed

+93
-22
lines changed

6 files changed

+93
-22
lines changed

src/com/akjava/gwt/html5/client/download/DownloadBlobBuilder.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22

33
import com.google.gwt.core.client.JavaScriptObject;
44

5+
/**
6+
* @deprecated
7+
* @author aki
8+
*
9+
*/
510
public class DownloadBlobBuilder extends JavaScriptObject{
611

712
/**
@@ -12,6 +17,7 @@ public class DownloadBlobBuilder extends JavaScriptObject{
1217
*/
1318
protected DownloadBlobBuilder(){}
1419

20+
1521
public native final void append(String text)/*-{
1622
this.append(text);
1723
}-*/;
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,18 @@
11
package com.akjava.gwt.html5.client.download;
22

3+
import com.akjava.gwt.html5.client.file.Blob;
34
import com.google.gwt.user.client.ui.Anchor;
45

56
public interface FileDownload {
67
public DownloadURL URL();
78

8-
public DownloadBlobBuilder BlobBuilder();
9+
//public DownloadBlobBuilder BlobBuilder();
910

1011
public Anchor generateTextDownloadLink(String text,String fileName,String anchorText);
1112
public Anchor generateTextDownloadLink(String text,String fileName,String anchorText,boolean autoRemove);
1213

1314
public Anchor generateBase64DownloadLink(String urlData,String mimeType,String fileName,String anchorText,boolean autoRemove);
1415

1516

16-
public Anchor generateDownloadLink(DownloadBlobBuilder blob,String mimeType,String fileName,String anchorText);
17+
public Anchor generateDownloadLink(Blob blob,String mimeType,String fileName,String anchorText);
1718
}

src/com/akjava/gwt/html5/client/download/HTML5Download.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.akjava.gwt.html5.client.download;
22

3+
import com.akjava.gwt.html5.client.file.Blob;
34
import com.google.gwt.event.dom.client.ClickEvent;
45
import com.google.gwt.event.dom.client.ClickHandler;
56
import com.google.gwt.user.client.ui.Anchor;
@@ -21,12 +22,15 @@ public Anchor generateTextDownloadLink(String text,String fileName,String ancho
2122
return generateTextDownloadLink(text,fileName,anchorText,false);
2223
}
2324
public Anchor generateTextDownloadLink(String text,String fileName,String anchorText,boolean autoRemove){
25+
String mimeType="text/plain;charset=UTF-8";
26+
/*
2427
DownloadBlobBuilder bb=BlobBuilder();
25-
String mimeType="text/plain";
28+
2629
bb.append(text);
30+
*/
2731

2832
final Anchor link=new Anchor(anchorText);
29-
String url=URL().createObjectURL(bb.getBlob(mimeType));
33+
String url=URL().createObjectURL(Blob.createBlob(text));
3034
link.setHref(url);
3135
link.getElement().setAttribute("download", fileName);
3236
link.getElement().setAttribute("dataset.downloadurl", mimeType+":"+fileName+":"+url);
@@ -42,12 +46,13 @@ public void onClick(ClickEvent event) {
4246
return link;
4347
}
4448

49+
//TODO support it
4550
public Anchor generateBase64DownloadLink(String urlData,String mimeType,String fileName,String anchorText,boolean autoRemove){
46-
DownloadBlobBuilder bb=BlobBuilder();
47-
bb.appendBase64(urlData);
51+
4852

4953
final Anchor link=new Anchor(anchorText);
50-
String url=URL().createObjectURL(bb.getBlob(mimeType));
54+
String url=URL().createObjectURL(Blob.createBase64Blob(urlData,mimeType));
55+
//String url=URL().createObjectURL(bb.getBlob(mimeType));
5156
link.setHref(url);
5257
link.getElement().setAttribute("download", fileName);
5358
link.getElement().setAttribute("dataset.downloadurl", mimeType+":"+fileName+":"+url);
@@ -64,9 +69,10 @@ public void onClick(ClickEvent event) {
6469
}
6570

6671

67-
public Anchor generateDownloadLink(DownloadBlobBuilder blob,String mimeType,String fileName,String anchorText){
72+
//blob have mimetype?
73+
public Anchor generateDownloadLink(Blob blob,String mimeType,String fileName,String anchorText){
6874
final Anchor link=new Anchor(anchorText);
69-
String url=URL().createObjectURL(blob.getBlob(mimeType));
75+
String url=URL().createObjectURL(blob);
7076
link.setHref(url);
7177
link.getElement().setAttribute("download", fileName);
7278
link.getElement().setAttribute("dataset.downloadurl", mimeType+":"+fileName+":"+url);

src/com/akjava/gwt/html5/client/download/NullFileDownload.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.akjava.gwt.html5.client.download;
22

3+
import com.akjava.gwt.html5.client.file.Blob;
34
import com.google.gwt.user.client.ui.Anchor;
45

56
public class NullFileDownload implements FileDownload{
@@ -9,10 +10,7 @@ public DownloadURL URL() {
910
return null;
1011
}
1112

12-
@Override
13-
public DownloadBlobBuilder BlobBuilder() {
14-
return null;
15-
}
13+
1614

1715
@Override
1816
public Anchor generateTextDownloadLink(String text, String fileName,
@@ -33,9 +31,12 @@ public Anchor generateBase64DownloadLink(String urlData, String mimeType,
3331
}
3432

3533
@Override
36-
public Anchor generateDownloadLink(DownloadBlobBuilder blob,
37-
String mimeType, String fileName, String anchorText) {
34+
public Anchor generateDownloadLink(Blob blob, String mimeType,
35+
String fileName, String anchorText) {
36+
// TODO Auto-generated method stub
3837
return null;
3938
}
4039

40+
41+
4142
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package com.akjava.gwt.html5.client.file;
2+
3+
import com.google.gwt.core.client.JavaScriptObject;
4+
import com.google.gwt.core.client.JsArray;
5+
6+
public class Blob extends JavaScriptObject{
7+
8+
protected Blob(){}
9+
10+
11+
public final Blob createBlob(JavaScriptObject object,String type){
12+
@SuppressWarnings("unchecked")
13+
JsArray<JavaScriptObject> arrays=(JsArray<JavaScriptObject>) JsArray.createArray();
14+
arrays.push(object);
15+
return createBlob(arrays,type);
16+
}
17+
18+
19+
20+
public static final native Blob createBlob(String text,String type)/*-{
21+
return new $wnd.Blob([text],{type:type});
22+
}-*/;
23+
24+
public static final native Blob createBlob(String text)/*-{
25+
return new $wnd.Blob([text],{type:"text/plain;charset=UTF-8"});
26+
}-*/;
27+
28+
public static final native Blob createBlob(JsArray<JavaScriptObject> arrays,String type)/*-{
29+
return new $wnd.Blob(arrays,{type:type});
30+
}-*/;
31+
32+
public static final native Blob createBase64Blob(String dataURI,String type)/*-{
33+
var BASE64_MARKER = ';base64,';
34+
var base64Index = dataURI.indexOf(BASE64_MARKER) + BASE64_MARKER.length;
35+
var base64 = dataURI.substring(base64Index);
36+
var raw = $wnd.atob(base64);
37+
var rawLength = raw.length;
38+
var uInt8Array = new $wnd.Uint8Array(rawLength);
39+
40+
for (var i = 0; i < rawLength; ++i) {
41+
uInt8Array[i] = raw.charCodeAt(i);
42+
}
43+
return new $wnd.Blob([uInt8Array],{type:type});
44+
}-*/;
45+
46+
47+
48+
49+
}

src/com/akjava/gwt/html5test/client/FileSystemTest.java

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
import java.util.HashMap;
66
import java.util.List;
77
import java.util.Map;
8-
import java.util.Set;
98

109
import com.akjava.gwt.html5.client.download.DownloadBlobBuilder;
1110
import com.akjava.gwt.html5.client.download.HTML5Download;
11+
import com.akjava.gwt.html5.client.file.Blob;
1212
import com.akjava.gwt.html5.client.file.DirectoryReader;
1313
import com.akjava.gwt.html5.client.file.File;
1414
import com.akjava.gwt.html5.client.file.FileError;
@@ -22,9 +22,9 @@
2222
import com.akjava.gwt.html5.client.file.ProgressEvent;
2323
import com.akjava.gwt.html5.client.file.RequestFileSystem;
2424
import com.akjava.gwt.html5.client.file.RequestFileSystem.FileSystemCallback;
25-
import com.akjava.gwt.html5.client.file.callback.FileWriterCallback;
2625
import com.akjava.gwt.html5.client.file.callback.FileEntryCallback;
2726
import com.akjava.gwt.html5.client.file.callback.FileErrorCallback;
27+
import com.akjava.gwt.html5.client.file.callback.FileWriterCallback;
2828
import com.akjava.gwt.html5.client.file.callback.ProgressEventCallback;
2929
import com.akjava.gwt.html5.client.file.callback.VoidCallback;
3030
import com.akjava.gwt.html5.client.file.webkit.DirectoryCallback;
@@ -35,6 +35,7 @@
3535
import com.akjava.gwt.html5.client.file.webkit.WebkitStorageInfo.StorageInfoUsageCallback;
3636
import com.google.gwt.core.client.JavaScriptObject;
3737
import com.google.gwt.core.client.JsArray;
38+
import com.google.gwt.core.client.JsArrayString;
3839
import com.google.gwt.event.dom.client.ClickEvent;
3940
import com.google.gwt.event.dom.client.ClickHandler;
4041
import com.google.gwt.user.cellview.client.CellList;
@@ -343,9 +344,8 @@ public void progressEventCallback(ProgressEvent progressEvent) {
343344
});
344345

345346

346-
DownloadBlobBuilder blobBuilder=new HTML5Download().BlobBuilder();
347-
blobBuilder.append("hello world");
348-
fileWriter.write(blobBuilder.getBlob("text/plain"));
347+
348+
fileWriter.write(Blob.createBlob("hello world"));
349349

350350
}
351351
}, errorCallback);
@@ -539,10 +539,18 @@ public void onClick(ClickEvent event) {
539539
}
540540

541541
//create blob
542+
543+
544+
545+
/*
542546
DownloadBlobBuilder blobBuilder=new HTML5Download().BlobBuilder();
543547
blobBuilder.append("hello world");
544548
final JavaScriptObject blob=blobBuilder.getBlob("text/plain");
549+
*/
550+
JsArrayString array=(JsArrayString) JsArrayString.createArray();
551+
array.push("hello world");
545552

553+
final JavaScriptObject blob=Blob.createBlob("hello js", "text/plain");
546554

547555
final FileEntryCallback onwriteend=new FileEntryCallback() {
548556
@Override
@@ -579,8 +587,8 @@ public void callback() {
579587
@Override
580588
public void fileSystemCallback(FileSystem fileSystem) {
581589

582-
583-
writeFile(fileSystem.getRoot(),"hello.txt",true,false,blob,onwriteend,onerror,errorCallback);
590+
//how to overwrite?
591+
writeFile(fileSystem.getRoot(),"hello.txt",true,true,blob,onwriteend,onerror,errorCallback);
584592

585593

586594
}

0 commit comments

Comments
 (0)