aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/thedevstack/conversationsplus/utils/MessageUtil.java
blob: c04ebdb8b9e665945e49a158fbab4193087ca8be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
package de.thedevstack.conversationsplus.utils;

import android.graphics.BitmapFactory;

import java.net.URL;

import de.thedevstack.conversationsplus.entities.DownloadableFile;
import de.thedevstack.conversationsplus.entities.Message;
import de.thedevstack.conversationsplus.persistance.FileBackend;

/**
 * Created by tzur on 15.12.2015.
 */
public final class MessageUtil {
    public static void updateMessageWithImageDetails(Message message, String filePath, long size, int imageWidth, int imageHeight) {
        message.setRelativeFilePath(filePath);
        MessageUtil.updateMessageBodyWithImageParams(message, size, imageWidth, imageHeight);
    }

    public static void updateFileParams(Message message) {
        updateFileParams(message, null);
    }

    public static void updateFileParams(Message message, URL url) {
        DownloadableFile file = FileBackend.getFile(message);
        int imageWidth = -1;
        int imageHeight = -1;
        if (message.getType() == Message.TYPE_IMAGE || file.getMimeType().startsWith("image/")) {
            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(file.getAbsolutePath(), options);
            imageHeight = options.outHeight;
            imageWidth = options.outWidth;
        }

        MessageUtil.updateMessageBodyWithFileParams(message, url, file.getSize(), imageWidth, imageHeight);
    }

    private static void updateMessageBodyWithFileParams(Message message, URL url, long fileSize, int imageWidth, int imageHeight) {
        message.setBody(MessageUtil.getMessageBodyWithImageParams(url, fileSize, imageWidth, imageHeight));
    }

    private static void updateMessageBodyWithImageParams(Message message, long size, int imageWidth, int imageHeight) {
        MessageUtil.updateMessageBodyWithImageParams(message, null, size, imageWidth, imageHeight);
    }

    private static void updateMessageBodyWithImageParams(Message message, URL url, long size, int imageWidth, int imageHeight) {
        message.setBody(MessageUtil.getMessageBodyWithImageParams(url, size, imageWidth, imageHeight));
    }

    private static String getMessageBodyWithImageParams(URL url, long size, int imageWidth, int imageHeight) {
        StringBuilder sb = new StringBuilder();
        if (null != url) {
            sb.append(url.toString());
            sb.append('|');
        }
        sb.append(size);
        if (-1 < imageWidth) {
            sb.append('|');
            sb.append(imageWidth);
        }
        if (-1 < imageHeight) {
            sb.append('|');
            sb.append(imageHeight);
        }
        return sb.toString();
    }

    private MessageUtil() {
        // Static helper class
    }
}