View Javadoc
1   package fr.ifremer.quadrige3.core.service.http;
2   
3   /*-
4    * #%L
5    * Quadrige3 Core :: Client API
6    * %%
7    * Copyright (C) 2017 - 2019 Ifremer
8    * %%
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU Affero General Public License as published by
11   * the Free Software Foundation, either version 3 of the License, or
12   * (at your option) any later version.
13   * 
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Public License for more details.
18   * 
19   * You should have received a copy of the GNU Affero General Public License
20   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
21   * #L%
22   */
23  
24  import fr.ifremer.quadrige3.core.ProgressionCoreModel;
25  import fr.ifremer.quadrige3.core.dao.technical.Files;
26  import org.apache.http.entity.mime.content.FileBody;
27  import org.apache.http.util.Args;
28  
29  import java.io.*;
30  
31  /**
32   * @author peck7 on 03/04/2019.
33   */
34  public class ProgressFileBody extends FileBody {
35  
36      private final ProgressionCoreModel progressionModel;
37  
38      public ProgressFileBody(File file, ProgressionCoreModel progressionModel) {
39          super(file);
40          this.progressionModel = progressionModel;
41      }
42  
43      @Override
44      public long getContentLength() {
45          long size = super.getContentLength();
46          progressionModel.setTotal(size);
47          return size;
48      }
49  
50      @Override
51      public void writeTo(OutputStream out) throws IOException {
52          Args.notNull(out, "Output stream");
53          try (InputStream in = new BufferedInputStream(new FileInputStream(getFile()))) {
54              Files.copyStream(in, out, progressionModel);
55              out.flush();
56          }
57      }
58  }