2017-08-07 15:02:30 +02:00
|
|
|
package org.schabi.newpipe.database.subscription;
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
import androidx.annotation.NonNull;
|
2019-10-04 14:59:08 +02:00
|
|
|
import androidx.room.ColumnInfo;
|
|
|
|
import androidx.room.Entity;
|
|
|
|
import androidx.room.Ignore;
|
|
|
|
import androidx.room.Index;
|
|
|
|
import androidx.room.PrimaryKey;
|
2017-08-07 15:02:30 +02:00
|
|
|
|
2018-03-08 14:39:24 +01:00
|
|
|
import org.schabi.newpipe.extractor.channel.ChannelInfo;
|
2017-09-03 08:04:18 +02:00
|
|
|
import org.schabi.newpipe.extractor.channel.ChannelInfoItem;
|
2017-10-08 21:04:37 +02:00
|
|
|
import org.schabi.newpipe.util.Constants;
|
2017-09-03 08:04:18 +02:00
|
|
|
|
2017-08-07 15:02:30 +02:00
|
|
|
import static org.schabi.newpipe.database.subscription.SubscriptionEntity.SUBSCRIPTION_SERVICE_ID;
|
|
|
|
import static org.schabi.newpipe.database.subscription.SubscriptionEntity.SUBSCRIPTION_TABLE;
|
|
|
|
import static org.schabi.newpipe.database.subscription.SubscriptionEntity.SUBSCRIPTION_URL;
|
|
|
|
|
|
|
|
@Entity(tableName = SUBSCRIPTION_TABLE,
|
|
|
|
indices = {@Index(value = {SUBSCRIPTION_SERVICE_ID, SUBSCRIPTION_URL}, unique = true)})
|
|
|
|
public class SubscriptionEntity {
|
2020-03-31 19:20:15 +02:00
|
|
|
public static final String SUBSCRIPTION_UID = "uid";
|
|
|
|
public static final String SUBSCRIPTION_TABLE = "subscriptions";
|
|
|
|
public static final String SUBSCRIPTION_SERVICE_ID = "service_id";
|
|
|
|
public static final String SUBSCRIPTION_URL = "url";
|
|
|
|
public static final String SUBSCRIPTION_NAME = "name";
|
|
|
|
public static final String SUBSCRIPTION_AVATAR_URL = "avatar_url";
|
|
|
|
public static final String SUBSCRIPTION_SUBSCRIBER_COUNT = "subscriber_count";
|
|
|
|
public static final String SUBSCRIPTION_DESCRIPTION = "description";
|
2017-08-07 15:02:30 +02:00
|
|
|
|
|
|
|
@PrimaryKey(autoGenerate = true)
|
|
|
|
private long uid = 0;
|
|
|
|
|
|
|
|
@ColumnInfo(name = SUBSCRIPTION_SERVICE_ID)
|
2017-10-08 21:04:37 +02:00
|
|
|
private int serviceId = Constants.NO_SERVICE_ID;
|
2017-08-07 15:02:30 +02:00
|
|
|
|
|
|
|
@ColumnInfo(name = SUBSCRIPTION_URL)
|
|
|
|
private String url;
|
|
|
|
|
2017-09-03 08:04:18 +02:00
|
|
|
@ColumnInfo(name = SUBSCRIPTION_NAME)
|
|
|
|
private String name;
|
2017-08-07 15:02:30 +02:00
|
|
|
|
2017-09-03 08:04:18 +02:00
|
|
|
@ColumnInfo(name = SUBSCRIPTION_AVATAR_URL)
|
|
|
|
private String avatarUrl;
|
2017-08-07 15:02:30 +02:00
|
|
|
|
|
|
|
@ColumnInfo(name = SUBSCRIPTION_SUBSCRIBER_COUNT)
|
|
|
|
private Long subscriberCount;
|
|
|
|
|
|
|
|
@ColumnInfo(name = SUBSCRIPTION_DESCRIPTION)
|
|
|
|
private String description;
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
@Ignore
|
|
|
|
public static SubscriptionEntity from(@NonNull final ChannelInfo info) {
|
|
|
|
SubscriptionEntity result = new SubscriptionEntity();
|
|
|
|
result.setServiceId(info.getServiceId());
|
|
|
|
result.setUrl(info.getUrl());
|
|
|
|
result.setData(info.getName(), info.getAvatarUrl(), info.getDescription(),
|
|
|
|
info.getSubscriberCount());
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
2017-08-07 15:02:30 +02:00
|
|
|
public long getUid() {
|
|
|
|
return uid;
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setUid(final long uid) {
|
2017-08-07 15:02:30 +02:00
|
|
|
this.uid = uid;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getServiceId() {
|
|
|
|
return serviceId;
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setServiceId(final int serviceId) {
|
2017-08-07 15:02:30 +02:00
|
|
|
this.serviceId = serviceId;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getUrl() {
|
|
|
|
return url;
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setUrl(final String url) {
|
2017-08-07 15:02:30 +02:00
|
|
|
this.url = url;
|
|
|
|
}
|
|
|
|
|
2017-09-03 08:04:18 +02:00
|
|
|
public String getName() {
|
|
|
|
return name;
|
2017-08-07 15:02:30 +02:00
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setName(final String name) {
|
2017-09-03 08:04:18 +02:00
|
|
|
this.name = name;
|
2017-08-07 15:02:30 +02:00
|
|
|
}
|
|
|
|
|
2017-09-03 08:04:18 +02:00
|
|
|
public String getAvatarUrl() {
|
|
|
|
return avatarUrl;
|
2017-08-07 15:02:30 +02:00
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setAvatarUrl(final String avatarUrl) {
|
2017-09-03 08:04:18 +02:00
|
|
|
this.avatarUrl = avatarUrl;
|
2017-08-07 15:02:30 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
public Long getSubscriberCount() {
|
|
|
|
return subscriberCount;
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setSubscriberCount(final Long subscriberCount) {
|
2017-08-07 15:02:30 +02:00
|
|
|
this.subscriberCount = subscriberCount;
|
|
|
|
}
|
|
|
|
|
|
|
|
public String getDescription() {
|
|
|
|
return description;
|
|
|
|
}
|
|
|
|
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setDescription(final String description) {
|
2017-08-07 15:02:30 +02:00
|
|
|
this.description = description;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Ignore
|
2020-03-31 19:20:15 +02:00
|
|
|
public void setData(final String n, final String au, final String d, final Long sc) {
|
|
|
|
this.setName(n);
|
|
|
|
this.setAvatarUrl(au);
|
|
|
|
this.setDescription(d);
|
|
|
|
this.setSubscriberCount(sc);
|
2017-08-07 15:02:30 +02:00
|
|
|
}
|
2017-09-03 08:04:18 +02:00
|
|
|
|
|
|
|
@Ignore
|
|
|
|
public ChannelInfoItem toChannelInfoItem() {
|
2017-12-06 14:29:26 +01:00
|
|
|
ChannelInfoItem item = new ChannelInfoItem(getServiceId(), getUrl(), getName());
|
2018-03-08 14:39:24 +01:00
|
|
|
item.setThumbnailUrl(getAvatarUrl());
|
|
|
|
item.setSubscriberCount(getSubscriberCount());
|
|
|
|
item.setDescription(getDescription());
|
2017-09-03 08:04:18 +02:00
|
|
|
return item;
|
|
|
|
}
|
2020-04-05 21:27:53 +02:00
|
|
|
|
|
|
|
|
|
|
|
// TODO: Remove these generated methods by migrating this class to a data class from Kotlin.
|
|
|
|
@Override
|
|
|
|
@SuppressWarnings("EqualsReplaceableByObjectsCall")
|
|
|
|
public boolean equals(final Object o) {
|
|
|
|
if (this == o) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
if (o == null || getClass() != o.getClass()) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
final SubscriptionEntity that = (SubscriptionEntity) o;
|
|
|
|
|
|
|
|
if (uid != that.uid) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (serviceId != that.serviceId) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (!url.equals(that.url)) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (name != null ? !name.equals(that.name) : that.name != null) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (avatarUrl != null ? !avatarUrl.equals(that.avatarUrl) : that.avatarUrl != null) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
if (subscriberCount != null
|
|
|
|
? !subscriberCount.equals(that.subscriberCount)
|
|
|
|
: that.subscriberCount != null) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
return description != null
|
|
|
|
? description.equals(that.description)
|
|
|
|
: that.description == null;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public int hashCode() {
|
|
|
|
int result = (int) (uid ^ (uid >>> 32));
|
|
|
|
result = 31 * result + serviceId;
|
|
|
|
result = 31 * result + url.hashCode();
|
|
|
|
result = 31 * result + (name != null ? name.hashCode() : 0);
|
|
|
|
result = 31 * result + (avatarUrl != null ? avatarUrl.hashCode() : 0);
|
|
|
|
result = 31 * result + (subscriberCount != null ? subscriberCount.hashCode() : 0);
|
|
|
|
result = 31 * result + (description != null ? description.hashCode() : 0);
|
|
|
|
return result;
|
|
|
|
}
|
2017-08-07 15:02:30 +02:00
|
|
|
}
|