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