123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- package com.vaadin.tests.resources;
-
- import java.io.IOException;
- import java.io.InputStream;
-
- import com.vaadin.annotations.Push;
- import com.vaadin.server.DownloadStream;
- import com.vaadin.server.Resource;
- import com.vaadin.server.StreamResource;
- import com.vaadin.server.StreamResource.StreamSource;
- import com.vaadin.server.VaadinRequest;
- import com.vaadin.tests.components.AbstractTestUIWithLog;
- import com.vaadin.ui.Button;
- import com.vaadin.ui.Button.ClickEvent;
-
- @Push
- public class DownloadWithPush extends AbstractTestUIWithLog {
-
- private static class GeneratedStream extends InputStream {
- int read = 0;
- int next = 'a';
- private final int size;
-
- public GeneratedStream(int size) {
- this.size = size;
- }
-
- @Override
- public int read() throws IOException {
- if (available() == 0) {
- return -1;
- }
-
- read++;
- next++;
- if (next > 'z') {
- next = 'a';
- }
- return next;
- }
-
- @Override
- public int available() throws IOException {
- return size - read;
- }
- }
-
- private final class DownloadResoure extends StreamResource {
- private DownloadResoure(StreamSource streamSource, String filename) {
- super(streamSource, filename);
- }
-
- @Override
- public DownloadStream getStream() {
- DownloadStream ds = super.getStream();
- ds.setParameter("Content-Disposition",
- "attachment; filename=" + getFilename() + ";");
- return ds;
- }
- }
-
- private Resource hugeFileResource = createResource();;
- private int fileSize = 300 * (1024 * 1024);
-
- @Override
- protected void setup(VaadinRequest request) {
- Button b = new Button("Download a "
- + String.format("%.1f", fileSize / 1024.0 / 1024.0) + "MB file",
- new Button.ClickListener() {
- @Override
- public void buttonClick(ClickEvent event) {
- getUI().getPage().open(hugeFileResource, "", false);
- }
- });
- addComponent(b);
- }
-
- private Resource createResource() {
- Resource hugeFileResource = new DownloadResoure(new StreamSource() {
- @Override
- public InputStream getStream() {
- return new GeneratedStream(fileSize);
- }
- }, "hugefile.txt");
- return hugeFileResource;
- }
-
- @Override
- protected Integer getTicketNumber() {
- return 19709;
- }
-
- }
|