project upload

This commit is contained in:
Antonio Cappiello 2020-11-20 15:38:08 +01:00
parent e1749a3123
commit 6eff64e7e1
105 changed files with 5907 additions and 0 deletions

View file

@ -0,0 +1,193 @@
package com.cappielloantonio.play.model;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import org.jellyfin.apiclient.model.dto.BaseItemDto;
import org.jellyfin.apiclient.model.entities.ImageType;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
@Entity(tableName = "album")
public class Album implements Parcelable {
@Ignore
public List<Song> songs;
@NonNull
@PrimaryKey
@ColumnInfo(name = "id")
public String id;
@ColumnInfo(name = "title")
public String title;
@ColumnInfo(name = "year")
public int year;
@ColumnInfo(name = "artistId")
public String artistId;
@ColumnInfo(name = "artistName")
public String artistName;
@ColumnInfo(name = "primary")
public String primary;
@ColumnInfo(name = "blurHash")
public String blurHash;
public Album(@NonNull String id, String title, int year, String artistId, String artistName, String primary, String blurHash) {
this.id = id;
this.title = title;
this.year = year;
this.artistId = artistId;
this.artistName = artistName;
this.primary = primary;
this.blurHash = blurHash;
}
@Ignore
public Album(BaseItemDto itemDto) {
this.id = itemDto.getId();
this.title = itemDto.getName();
this.year = itemDto.getProductionYear() != null ? itemDto.getProductionYear() : 0;
if (itemDto.getAlbumArtists().size() != 0) {
this.artistId = itemDto.getAlbumArtists().get(0).getId();
this.artistName = itemDto.getAlbumArtists().get(0).getName();
} else if (itemDto.getArtistItems().size() != 0) {
this.artistId = itemDto.getArtistItems().get(0).getId();
this.artistName = itemDto.getArtistItems().get(0).getName();
}
this.primary = itemDto.getImageTags().containsKey(ImageType.Primary) ? id : null;
if (itemDto.getImageBlurHashes() != null && itemDto.getImageBlurHashes().get(ImageType.Primary) != null) {
this.blurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
}
this.songs = new ArrayList<>();
}
@NonNull
public String getId() {
return id;
}
public void setId(@NonNull String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getArtistId() {
return artistId;
}
public void setArtistId(String artistId) {
this.artistId = artistId;
}
public String getArtistName() {
return artistName;
}
public void setArtistName(String artistName) {
this.artistName = artistName;
}
public String getPrimary() {
return primary;
}
public void setPrimary(String primary) {
this.primary = primary;
}
public String getBlurHash() {
return blurHash;
}
public void setBlurHash(String blurHash) {
this.blurHash = blurHash;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Album album = (Album) o;
return id.equals(album.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
@NonNull
@Override
public String toString() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(title);
dest.writeInt(year);
dest.writeString(artistId);
dest.writeString(artistName);
dest.writeString(primary);
dest.writeString(blurHash);
}
protected Album(Parcel in) {
this.songs = new ArrayList<>();
this.id = in.readString();
this.title = in.readString();
this.year = in.readInt();
this.artistId = in.readString();
this.artistName = in.readString();
this.primary = in.readString();
this.blurHash = in.readString();
}
public static final Creator<Album> CREATOR = new Creator<Album>() {
public Album createFromParcel(Parcel source) {
return new Album(source);
}
public Album[] newArray(int size) {
return new Album[size];
}
};
}

View file

@ -0,0 +1,157 @@
package com.cappielloantonio.play.model;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import org.jellyfin.apiclient.model.dto.BaseItemDto;
import org.jellyfin.apiclient.model.dto.GenreDto;
import org.jellyfin.apiclient.model.entities.ImageType;
import java.util.ArrayList;
import java.util.List;
@Entity(tableName = "artist")
public class Artist implements Parcelable {
@Ignore
public List<Genre> genres;
@Ignore
public List<Album> albums;
@Ignore
public List<Song> songs;
@NonNull
@PrimaryKey
@ColumnInfo(name = "id")
public String id;
@ColumnInfo(name = "name")
public String name;
@ColumnInfo(name = "primary")
public String primary;
@ColumnInfo(name = "blurHash")
public String blurHash;
public Artist(@NonNull String id, String name, String primary, String blurHash) {
this.id = id;
this.name = name;
this.primary = primary;
this.blurHash = blurHash;
}
@Ignore
public Artist(BaseItemDto itemDto) {
this.id = itemDto.getId();
this.name = itemDto.getName();
this.primary = itemDto.getImageTags().containsKey(ImageType.Primary) ? id : null;
if (itemDto.getImageBlurHashes() != null && itemDto.getImageBlurHashes().get(ImageType.Primary) != null) {
this.blurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
}
this.genres = new ArrayList<>();
this.albums = new ArrayList<>();
this.songs = new ArrayList<>();
if (itemDto.getGenreItems() != null) {
for (GenreDto genre : itemDto.getGenreItems()) {
genres.add(new Genre(genre));
}
}
}
@NonNull
public String getId() {
return id;
}
public void setId(@NonNull String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrimary() {
return primary;
}
public void setPrimary(String primary) {
this.primary = primary;
}
public String getBlurHash() {
return blurHash;
}
public void setBlurHash(String blurHash) {
this.blurHash = blurHash;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Artist artist = (Artist) o;
return id.equals(artist.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
@NonNull
@Override
public String toString() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(name);
dest.writeString(primary);
dest.writeString(blurHash);
}
protected Artist(Parcel in) {
this.genres = new ArrayList<>();
this.albums = new ArrayList<>();
this.songs = new ArrayList<>();
this.id = in.readString();
this.name = in.readString();
this.primary = in.readString();
this.blurHash = in.readString();
}
public static final Parcelable.Creator<Artist> CREATOR = new Parcelable.Creator<Artist>() {
@Override
public Artist createFromParcel(Parcel source) {
return new Artist(source);
}
@Override
public Artist[] newArray(int size) {
return new Artist[size];
}
};
}

View file

@ -0,0 +1,140 @@
package com.cappielloantonio.play.model;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import org.jellyfin.apiclient.model.dto.BaseItemDto;
import org.jellyfin.apiclient.model.dto.GenreDto;
import org.jellyfin.apiclient.model.entities.ImageType;
import java.util.UUID;
@Entity(tableName = "genre")
public class Genre implements Parcelable {
@NonNull
@PrimaryKey
@ColumnInfo(name = "id")
public String id;
@ColumnInfo(name = "name")
public String name;
@ColumnInfo(name = "songCount")
public int songCount;
@ColumnInfo(name = "primary")
public String primary;
@ColumnInfo(name = "blurHash")
public String blurHash;
public Genre(@NonNull String id, String name, int songCount, String primary, String blurHash) {
this.id = id;
this.name = name;
this.songCount = songCount;
this.primary = primary;
this.blurHash = blurHash;
}
@Ignore
public Genre(GenreDto genreDto) {
this.id = genreDto.getId();
this.name = genreDto.getName();
this.songCount = 0;
}
@Ignore
public Genre(BaseItemDto itemDto) {
this.id = itemDto.getId();
this.name = itemDto.getName();
this.songCount = itemDto.getSongCount() != null ? itemDto.getSongCount() : 0;
this.primary = itemDto.getImageTags().containsKey(ImageType.Primary) ? id : null;
if (itemDto.getImageBlurHashes() != null && itemDto.getImageBlurHashes().get(ImageType.Primary) != null) {
this.blurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
}
}
@NonNull
public String getId() {
return id;
}
public String getName() {
return name;
}
public int getSongCount() {
return songCount;
}
public String getPrimary() {
return primary;
}
public void setPrimary(String primary) {
this.primary = primary;
}
public String getBlurHash() {
return blurHash;
}
public void setBlurHash(String blurHash) {
this.blurHash = blurHash;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Genre genre = (Genre) o;
return id.equals(genre.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
@NonNull
@Override
public String toString() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.name);
dest.writeInt(this.songCount);
}
protected Genre(Parcel in) {
this.id = in.readString();
this.name = in.readString();
this.songCount = in.readInt();
}
public static final Creator<Genre> CREATOR = new Creator<Genre>() {
public Genre createFromParcel(Parcel source) {
return new Genre(source);
}
public Genre[] newArray(int size) {
return new Genre[size];
}
};
}

View file

@ -0,0 +1,119 @@
package com.cappielloantonio.play.model;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import org.jellyfin.apiclient.model.dto.BaseItemDto;
import org.jellyfin.apiclient.model.entities.ImageType;
@Entity(tableName = "playlist")
public class Playlist implements Parcelable {
@NonNull
@PrimaryKey
@ColumnInfo(name = "id")
public String id;
@ColumnInfo(name = "name")
public String name;
@ColumnInfo(name = "primary")
public String primary;
@ColumnInfo(name = "blurHash")
public String blurHash;
public Playlist(@NonNull String id, String name, String primary, String blurHash) {
this.id = id;
this.name = name;
this.primary = primary;
this.blurHash = blurHash;
}
@Ignore
public Playlist(BaseItemDto itemDto) {
this.id = itemDto.getId();
this.name = itemDto.getName();
this.primary = itemDto.getImageTags().containsKey(ImageType.Primary) ? id : null;
if (itemDto.getImageBlurHashes() != null && itemDto.getImageBlurHashes().get(ImageType.Primary) != null) {
this.blurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
}
}
@NonNull
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getPrimary() {
return primary;
}
public void setPrimary(String primary) {
this.primary = primary;
}
public String getBlurHash() {
return blurHash;
}
public void setBlurHash(String blurHash) {
this.blurHash = blurHash;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Playlist playlist = (Playlist) o;
return id.equals(playlist.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
@NonNull
@Override
public String toString() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.name);
}
protected Playlist(Parcel in) {
this.id = in.readString();
this.name = in.readString();
}
public static final Creator<Playlist> CREATOR = new Creator<Playlist>() {
public Playlist createFromParcel(Parcel source) {
return new Playlist(source);
}
public Playlist[] newArray(int size) {
return new Playlist[size];
}
};
}

View file

@ -0,0 +1,415 @@
package com.cappielloantonio.play.model;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.Ignore;
import androidx.room.PrimaryKey;
import org.jellyfin.apiclient.model.dto.BaseItemDto;
import org.jellyfin.apiclient.model.dto.MediaSourceInfo;
import org.jellyfin.apiclient.model.entities.ImageType;
import org.jellyfin.apiclient.model.entities.MediaStream;
import java.util.UUID;
@Entity(tableName = "song")
public class Song implements Parcelable {
@NonNull
@PrimaryKey
@ColumnInfo(name = "id")
private String id;
@ColumnInfo(name = "title")
private String title;
@ColumnInfo(name = "trackNumber")
private int trackNumber;
@ColumnInfo(name = "discNumber")
private int discNumber;
@ColumnInfo(name = "year")
private int year;
@ColumnInfo(name = "duration")
private long duration;
@ColumnInfo(name = "albumId")
private String albumId;
@ColumnInfo(name = "albumName")
private String albumName;
@ColumnInfo(name = "artistId")
private String artistId;
@ColumnInfo(name = "artistName")
private String artistName;
@ColumnInfo(name = "primary")
private String primary;
@ColumnInfo(name = "blurHash")
private String blurHash;
@ColumnInfo(name = "favorite")
private boolean favorite;
@ColumnInfo(name = "path")
private String path;
@ColumnInfo(name = "size")
private long size;
@ColumnInfo(name = "container")
private String container;
@ColumnInfo(name = "codec")
private String codec;
@ColumnInfo(name = "sampleRate")
private int sampleRate;
@ColumnInfo(name = "bitRate")
private int bitRate;
@ColumnInfo(name = "bitDepth")
private int bitDepth;
@ColumnInfo(name = "channels")
private int channels;
public Song(@NonNull String id, String title, int trackNumber, int discNumber, int year, long duration, String albumId, String albumName, String artistId, String artistName, String primary, String blurHash, boolean favorite, String path, long size, String container, String codec, int sampleRate, int bitRate, int bitDepth, int channels) {
this.id = id;
this.title = title;
this.trackNumber = trackNumber;
this.discNumber = discNumber;
this.year = year;
this.duration = duration;
this.albumId = albumId;
this.albumName = albumName;
this.artistId = artistId;
this.artistName = artistName;
this.primary = primary;
this.blurHash = blurHash;
this.favorite = favorite;
this.path = path;
this.size = size;
this.container = container;
this.codec = codec;
this.sampleRate = sampleRate;
this.bitRate = bitRate;
this.bitDepth = bitDepth;
this.channels = channels;
}
@Ignore
public Song(BaseItemDto itemDto) {
this.id = itemDto.getId();
this.title = itemDto.getName();
this.trackNumber = itemDto.getIndexNumber() != null ? itemDto.getIndexNumber() : 0;
this.discNumber = itemDto.getParentIndexNumber() != null ? itemDto.getParentIndexNumber() : 0;
this.year = itemDto.getProductionYear() != null ? itemDto.getProductionYear() : 0;
this.duration = itemDto.getRunTimeTicks() != null ? itemDto.getRunTimeTicks() / 10000 : 0;
this.albumId = itemDto.getAlbumId();
this.albumName = itemDto.getAlbum();
if (itemDto.getAlbumArtists().size() != 0) {
this.artistId = itemDto.getAlbumArtists().get(0).getId();
this.artistName = itemDto.getAlbumArtists().get(0).getName();
} else if (itemDto.getArtistItems().size() != 0) {
this.artistId = itemDto.getArtistItems().get(0).getId();
this.artistName = itemDto.getArtistItems().get(0).getName();
}
this.primary = itemDto.getAlbumPrimaryImageTag() != null ? albumId : null;
if (itemDto.getImageBlurHashes() != null && itemDto.getImageBlurHashes().get(ImageType.Primary) != null) {
this.blurHash = (String) itemDto.getImageBlurHashes().get(ImageType.Primary).values().toArray()[0];
}
this.favorite = itemDto.getUserData() != null && itemDto.getUserData().getIsFavorite();
if (itemDto.getMediaSources() != null && itemDto.getMediaSources().get(0) != null) {
MediaSourceInfo source = itemDto.getMediaSources().get(0);
this.path = source.getPath();
this.size = source.getSize() != null ? source.getSize() : 0;
this.container = source.getContainer();
this.bitRate = source.getBitrate() != null ? source.getBitrate() : 0;
if (source.getMediaStreams() != null && source.getMediaStreams().size() != 0) {
MediaStream stream = source.getMediaStreams().get(0);
this.codec = stream.getCodec();
this.sampleRate = stream.getSampleRate() != null ? stream.getSampleRate() : 0;
this.bitDepth = stream.getBitDepth() != null ? stream.getBitDepth() : 0;
this.channels = stream.getChannels() != null ? stream.getChannels() : 0;
}
}
}
@Ignore
public Song(String title, String albumName) {
this.id = UUID.randomUUID().toString();
this.title = title;
this.albumName = albumName;
}
@NonNull
public String getId() {
return id;
}
public String getTitle() {
return title;
}
public int getTrackNumber() {
return trackNumber;
}
public int getDiscNumber() {
return discNumber;
}
public int getYear() {
return year;
}
public long getDuration() {
return duration;
}
public String getAlbumId() {
return albumId;
}
public String getAlbumName() {
return albumName;
}
public String getArtistId() {
return artistId;
}
public String getArtistName() {
return artistName;
}
public String getPrimary() {
return primary;
}
public String getBlurHash() {
return blurHash;
}
public boolean isFavorite() {
return favorite;
}
public String getPath() {
return path;
}
public long getSize() {
return size;
}
public String getContainer() {
return container;
}
public String getCodec() {
return codec;
}
public int getSampleRate() {
return sampleRate;
}
public int getBitRate() {
return bitRate;
}
public int getBitDepth() {
return bitDepth;
}
public int getChannels() {
return channels;
}
public void setId(@NonNull String id) {
this.id = id;
}
public void setTitle(String title) {
this.title = title;
}
public void setTrackNumber(int trackNumber) {
this.trackNumber = trackNumber;
}
public void setDiscNumber(int discNumber) {
this.discNumber = discNumber;
}
public void setYear(int year) {
this.year = year;
}
public void setDuration(long duration) {
this.duration = duration;
}
public void setAlbumId(String albumId) {
this.albumId = albumId;
}
public void setAlbumName(String albumName) {
this.albumName = albumName;
}
public void setArtistId(String artistId) {
this.artistId = artistId;
}
public void setArtistName(String artistName) {
this.artistName = artistName;
}
public void setPrimary(String primary) {
this.primary = primary;
}
public void setBlurHash(String blurHash) {
this.blurHash = blurHash;
}
public void setFavorite(boolean favorite) {
this.favorite = favorite;
}
public void setPath(String path) {
this.path = path;
}
public void setSize(long size) {
this.size = size;
}
public void setContainer(String container) {
this.container = container;
}
public void setCodec(String codec) {
this.codec = codec;
}
public void setSampleRate(int sampleRate) {
this.sampleRate = sampleRate;
}
public void setBitRate(int bitRate) {
this.bitRate = bitRate;
}
public void setBitDepth(int bitDepth) {
this.bitDepth = bitDepth;
}
public void setChannels(int channels) {
this.channels = channels;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Song song = (Song) o;
return id.equals(song.id);
}
@Override
public int hashCode() {
return id.hashCode();
}
@Override
public String toString() {
return id;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(this.id);
dest.writeString(this.title);
dest.writeInt(this.trackNumber);
dest.writeInt(this.discNumber);
dest.writeInt(this.year);
dest.writeLong(this.duration);
dest.writeString(this.albumId);
dest.writeString(this.albumName);
dest.writeString(this.artistId);
dest.writeString(this.artistName);
dest.writeString(this.primary);
dest.writeString(Boolean.toString(favorite));
dest.writeString(this.blurHash);
dest.writeString(this.path);
dest.writeLong(this.size);
dest.writeString(this.container);
dest.writeString(this.codec);
dest.writeInt(this.sampleRate);
dest.writeInt(this.bitRate);
dest.writeInt(this.bitDepth);
dest.writeInt(this.channels);
}
protected Song(Parcel in) {
this.id = in.readString();
this.title = in.readString();
this.trackNumber = in.readInt();
this.discNumber = in.readInt();
this.year = in.readInt();
this.duration = in.readLong();
this.albumId = in.readString();
this.albumName = in.readString();
this.artistId = in.readString();
this.artistName = in.readString();
this.primary = in.readString();
this.favorite = Boolean.parseBoolean(in.readString());
this.blurHash = in.readString();
this.path = in.readString();
this.size = in.readLong();
this.container = in.readString();
this.codec = in.readString();
this.sampleRate = in.readInt();
this.bitRate = in.readInt();
this.bitDepth = in.readInt();
this.channels = in.readInt();
}
public static final Creator<Song> CREATOR = new Creator<Song>() {
public Song createFromParcel(Parcel source) {
return new Song(source);
}
public Song[] newArray(int size) {
return new Song[size];
}
};
}