1package com.bumptech.glide.load.model;
2
3import android.os.ParcelFileDescriptor;
4import com.bumptech.glide.load.Encoder;
5
6import java.io.InputStream;
7import java.io.OutputStream;
8
9public class ImageVideoWrapperEncoder implements Encoder<ImageVideoWrapper> {
10    private final Encoder<InputStream> streamEncoder;
11    private final Encoder<ParcelFileDescriptor> fileDescriptorEncoder;
12    private String id;
13
14    public ImageVideoWrapperEncoder(Encoder<InputStream> streamEncoder,
15            Encoder<ParcelFileDescriptor> fileDescriptorEncoder) {
16        this.streamEncoder = streamEncoder;
17        this.fileDescriptorEncoder = fileDescriptorEncoder;
18    }
19
20    @Override
21    public boolean encode(ImageVideoWrapper data, OutputStream os) {
22        if (data.getStream() != null) {
23            return streamEncoder.encode(data.getStream(), os);
24        } else {
25            return fileDescriptorEncoder.encode(data.getFileDescriptor(), os);
26        }
27    }
28
29    @Override
30    public String getId() {
31        if (id == null) {
32            id = streamEncoder.getId() + fileDescriptorEncoder.getId();
33        }
34        return id;
35    }
36}
37