Home | History | Annotate | Download | only in model
      1 package com.bumptech.glide.load.model;
      2 
      3 import android.os.ParcelFileDescriptor;
      4 
      5 import com.bumptech.glide.load.Encoder;
      6 
      7 import java.io.InputStream;
      8 import java.io.OutputStream;
      9 
     10 /**
     11  * A source encoder that writes a {@link com.bumptech.glide.load.model.ImageVideoWrapper} to disk by preferentially
     12  * writing data from the wrapper's {@link java.io.InputStream} and falling back to the wrapper's
     13  * {@link android.os.ParcelFileDescriptor} if the {@link java.io.InputStream} isn't available.
     14  */
     15 public class ImageVideoWrapperEncoder implements Encoder<ImageVideoWrapper> {
     16     private final Encoder<InputStream> streamEncoder;
     17     private final Encoder<ParcelFileDescriptor> fileDescriptorEncoder;
     18     private String id;
     19 
     20     public ImageVideoWrapperEncoder(Encoder<InputStream> streamEncoder,
     21             Encoder<ParcelFileDescriptor> fileDescriptorEncoder) {
     22         this.streamEncoder = streamEncoder;
     23         this.fileDescriptorEncoder = fileDescriptorEncoder;
     24     }
     25 
     26     @Override
     27     public boolean encode(ImageVideoWrapper data, OutputStream os) {
     28         if (data.getStream() != null) {
     29             return streamEncoder.encode(data.getStream(), os);
     30         } else {
     31             return fileDescriptorEncoder.encode(data.getFileDescriptor(), os);
     32         }
     33     }
     34 
     35     @Override
     36     public String getId() {
     37         if (id == null) {
     38             id = streamEncoder.getId() + fileDescriptorEncoder.getId();
     39         }
     40         return id;
     41     }
     42 }
     43