summaryrefslogtreecommitdiff
path: root/app/src/main/java/de/danoeh/antennapod/feed/FeedFile.java
blob: a05533ebc495ca51b98c595112a9a72de3729152 (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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package de.danoeh.antennapod.feed;

import java.io.File;

/**
 * Represents a component of a Feed that has to be downloaded
 */
public abstract class FeedFile extends FeedComponent {

    protected String file_url;
    protected String download_url;
    protected boolean downloaded;

    /**
     * Creates a new FeedFile object.
     *
     * @param file_url     The location of the FeedFile. If this is null, the downloaded-attribute
     *                     will automatically be set to false.
     * @param download_url The location where the FeedFile can be downloaded.
     * @param downloaded   true if the FeedFile has been downloaded, false otherwise. This parameter
     *                     will automatically be interpreted as false if the file_url is null.
     */
    public FeedFile(String file_url, String download_url, boolean downloaded) {
        super();
        this.file_url = file_url;
        this.download_url = download_url;
        this.downloaded = (file_url != null) && downloaded;
    }

    public FeedFile() {
        this(null, null, false);
    }

    public abstract int getTypeAsInt();

    /**
     * Update this FeedFile's attributes with the attributes from another
     * FeedFile. This method should only update attributes which where read from
     * the feed.
     */
    public void updateFromOther(FeedFile other) {
        super.updateFromOther(other);
        this.download_url = other.download_url;
    }

    /**
     * Compare's this FeedFile's attribute values with another FeedFile's
     * attribute values. This method will only compare attributes which were
     * read from the feed.
     *
     * @return true if attribute values are different, false otherwise
     */
    public boolean compareWithOther(FeedFile other) {
        if (super.compareWithOther(other)) {
            return true;
        }
        if (!download_url.equals(other.download_url)) {
            return true;
        }
        return false;
    }

    /**
     * Returns true if the file exists at file_url.
     */
    public boolean fileExists() {
        if (file_url == null) {
            return false;
        } else {
            File f = new File(file_url);
            return f.exists();
        }
    }

    public String getFile_url() {
        return file_url;
    }

    /**
     * Changes the file_url of this FeedFile. Setting this value to
     * null will also set the downloaded-attribute to false.
     */
    public void setFile_url(String file_url) {
        this.file_url = file_url;
        if (file_url == null) {
            downloaded = false;
        }
    }

    public String getDownload_url() {
        return download_url;
    }

    public void setDownload_url(String download_url) {
        this.download_url = download_url;
    }

    public boolean isDownloaded() {
        return downloaded;
    }

    public void setDownloaded(boolean downloaded) {
        this.downloaded = downloaded;
    }
}