Ignore:
Timestamp:
2015-12-26T23:42:03+01:00 (8 years ago)
Author:
simon04
Message:

see #12231 - Use HttpClient for OSM API calls

This requires adaptors to the OAuth library: SignpostAdapters

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/io/ProgressInputStream.java

    r8840 r9172  
    1010import org.openstreetmap.josm.gui.progress.NullProgressMonitor;
    1111import org.openstreetmap.josm.gui.progress.ProgressMonitor;
     12import org.openstreetmap.josm.tools.HttpClient;
    1213
    1314/**
     
    1819
    1920    private final InputStream in;
     21    private final long size;
    2022    private int readSoFar;
    2123    private int lastDialogUpdate;
    22     private boolean sizeKnown;
    23     private final URLConnection connection;
    2424    private final ProgressMonitor progressMonitor;
    2525
     26    public ProgressInputStream(InputStream in, long size, ProgressMonitor progressMonitor) {
     27        if (progressMonitor == null) {
     28            progressMonitor = NullProgressMonitor.INSTANCE;
     29        }
     30        this.in = in;
     31        this.size = size;
     32        this.progressMonitor = progressMonitor;
     33        progressMonitor.beginTask(tr("Contacting OSM Server..."), 1);
     34        progressMonitor.indeterminateSubTask(null);
     35        initProgressMonitor();
     36    }
     37
     38    public ProgressInputStream(HttpClient.Response response, ProgressMonitor progressMonitor) throws IOException {
     39        this(response.getContent(), response.getContentLength(), progressMonitor);
     40    }
     41
    2642    public ProgressInputStream(URLConnection con, ProgressMonitor progressMonitor) throws OsmTransferException {
    27         this.connection = con;
    2843        if (progressMonitor == null) {
    2944            progressMonitor = NullProgressMonitor.INSTANCE;
     
    3550        try {
    3651            this.in = con.getInputStream();
     52            this.size = con.getContentLength();
    3753        } catch (IOException e) {
    3854            progressMonitor.finishTask();
     
    4157            throw new OsmTransferException(e);
    4258        }
     59        initProgressMonitor();
     60    }
    4361
    44         updateSize();
    45         if (!sizeKnown) {
     62    protected void initProgressMonitor() {
     63        if (size > 0) {
     64            progressMonitor.subTask(tr("Downloading OSM data..."));
     65            progressMonitor.setTicksCount((int) size);
     66        } else {
    4667            progressMonitor.indeterminateSubTask(tr("Downloading OSM data..."));
    4768        }
     
    82103    private void advanceTicker(int amount) {
    83104        readSoFar += amount;
    84         updateSize();
    85105
    86106        if (readSoFar / 1024 != lastDialogUpdate) {
    87107            lastDialogUpdate++;
    88             if (sizeKnown) {
     108            if (size > 0) {
    89109                progressMonitor.setTicks(readSoFar);
    90110            }
     
    92112        }
    93113    }
    94 
    95     private void updateSize() {
    96         if (!sizeKnown && connection.getContentLength() > 0) {
    97             sizeKnown = true;
    98             progressMonitor.subTask(tr("Downloading OSM data..."));
    99             progressMonitor.setTicksCount(connection.getContentLength());
    100         }
    101     }
    102114}
Note: See TracChangeset for help on using the changeset viewer.