Package com.scraper

Source Code of com.scraper.ImageJob

package com.scraper;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.CountDownLatch;

import javax.imageio.ImageIO;
import javax.imageio.ImageReader;
import javax.imageio.event.IIOReadProgressListener;
import javax.imageio.stream.ImageInputStream;
import javax.swing.JProgressBar;
import javax.swing.SwingWorker;

import com.scraper.model.Image;


public class ImageJob extends SwingWorker<Void, String> {
  private CountDownLatch current, next;
  private Image image;
  private String saveLocation;
  private JProgressBar progress;
  private String fileName;
  private String text;

  public ImageJob(Image image, String saveLocation, JProgressBar progress) {
    this.image = image;
    this.progress = progress;
    this.fileName = progress.getString();
    this.saveLocation = saveLocation + '/' + fileName;
    this.text = fileName + " - ##%";
  }

  @Override
  protected Void doInBackground() throws Exception
  {
    InputStream is = null;
    ImageReader reader = null;
    URL url = null;
    try
    {
      if(current != null)
      {
        current.await();
      }

      url = new URL(image.getUrl());
      is = url.openStream();
      ImageInputStream iis = ImageIO.createImageInputStream(is);
      Iterator<ImageReader> it = ImageIO.getImageReadersBySuffix(image
          .getExtension().toUpperCase());
      reader = it.next();
      reader.addIIOReadProgressListener(new ImageProgressListener());
      reader.setInput(iis);
      ImageIO.write(reader.read(0), image.getExtension(), new File(saveLocation));
    }
    catch (MalformedURLException e)
    {
      e.printStackTrace();
    }
    catch (IOException e)
    {
      progress.setString(fileName + " - " + e.getMessage());
      e.printStackTrace();
    }
    finally
    {
      reader.removeAllIIOReadProgressListeners();
    }
    return null;
  }

  public class ImageProgressListener implements IIOReadProgressListener {

    @Override
    public void imageStarted(ImageReader source, int imageIndex)
    {
      progress.setValue(progress.getMinimum());
    }

    @Override
    public void imageProgress(ImageReader source, float percentageDone)
    {
      int percent = (int) percentageDone;
      progress.setString(text.replace("##", String.valueOf(percent)));
      progress.setValue(percent);

    }

    @Override
    public void readAborted(ImageReader source)
    {
      progress.setString(fileName + " - Aborted");

    }

    @Override
    public void imageComplete(ImageReader source)
    {
      progress.setString(fileName + " - Complete");
      progress.setValue(progress.getMaximum());
      next.countDown();
    }

    @Override
    public void sequenceStarted(ImageReader source, int minIndex)
    {
      // TODO Auto-generated method stub

    }

    @Override
    public void sequenceComplete(ImageReader source)
    {
      // TODO Auto-generated method stub

    }

    @Override
    public void thumbnailStarted(ImageReader source, int imageIndex,
        int thumbnailIndex)
    {
      // TODO Auto-generated method stub

    }

    @Override
    public void thumbnailProgress(ImageReader source, float percentageDone)
    {
      // TODO Auto-generated method stub

    }

    @Override
    public void thumbnailComplete(ImageReader source)
    {
      // TODO Auto-generated method stub

    }

  }

  public CountDownLatch nextLatch(CountDownLatch current)
  {
    this.current = current;
    this.next = new CountDownLatch(1);

    return next;
  }
}
TOP

Related Classes of com.scraper.ImageJob

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.