01: /**
02: * LibreSource
03: * Copyright (C) 2004-2008 Artenum SARL / INRIA
04: * http://www.libresource.org - contact@artenum.com
05: *
06: * This file is part of the LibreSource software,
07: * which can be used and distributed under license conditions.
08: * The license conditions are provided in the LICENSE.TXT file
09: * at the root path of the packaging that enclose this file.
10: * More information can be found at
11: * - http://dev.libresource.org/home/license
12: *
13: * Initial authors :
14: *
15: * Guillaume Bort / INRIA
16: * Francois Charoy / Universite Nancy 2
17: * Julien Forest / Artenum
18: * Claude Godart / Universite Henry Poincare
19: * Florent Jouille / INRIA
20: * Sebastien Jourdain / INRIA / Artenum
21: * Yves Lerumeur / Artenum
22: * Pascal Molli / Universite Henry Poincare
23: * Gerald Oster / INRIA
24: * Mariarosa Penzi / Artenum
25: * Gerard Sookahet / Artenum
26: * Raphael Tani / INRIA
27: *
28: * Contributors :
29: *
30: * Stephane Bagnier / Artenum
31: * Amadou Dia / Artenum-IUP Blois
32: * ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
33: */package org.libresource.web.controllers.so6;
34:
35: import org.libresource.Libresource;
36:
37: import org.libresource.core.FileData;
38:
39: import org.libresource.so6.server.ls.LibresourceSynchronizerConstants;
40: import org.libresource.so6.server.ls.interfaces.LibresourceSynchronizerService;
41:
42: import org.libresource.web.Controller;
43:
44: import java.io.InputStream;
45: import java.io.OutputStream;
46:
47: import java.net.URI;
48:
49: import javax.servlet.http.HttpServletRequest;
50: import javax.servlet.http.HttpServletResponse;
51:
52: public class GetPatchController implements Controller {
53: public Object process(URI uri, HttpServletRequest request,
54: HttpServletResponse response) throws Exception {
55: LibresourceSynchronizerService libresourceSycnhronizerService = (LibresourceSynchronizerService) Libresource
56: .getService(LibresourceSynchronizerConstants.SERVICE);
57: long fromTicket = Long.parseLong(request.getParameter("from"));
58: long toTicket = Long.parseLong(request.getParameter("to"));
59:
60: //
61: FileData patchFile = libresourceSycnhronizerService.getPatch(
62: uri, fromTicket, toTicket);
63:
64: // set header
65: response.setContentLength((int) patchFile.getSize());
66: response.setContentType("application/octetstream");
67: response.addHeader("Content-Disposition",
68: "attachment; filename=patch.xml");
69:
70: // set body
71: OutputStream out = response.getOutputStream();
72: InputStream in = patchFile.getInputStream();
73: byte[] buffer = new byte[1024 * 1024];
74: int length = -1;
75:
76: while ((length = in.read(buffer)) != -1) {
77: out.write(buffer, 0, length);
78: }
79:
80: in.close();
81: out.close();
82:
83: return null;
84: }
85: }
|