mirror of
https://github.com/mitb-archive/filebot
synced 2025-03-10 06:20:27 -04:00
Improved mapping behaviour
This commit is contained in:
parent
b0734f74c4
commit
8328d0d94b
@ -154,7 +154,7 @@ public class Episode implements Serializable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Episode derive(String seriesName, Integer season, Integer episode, Integer absolute, Integer special) {
|
public Episode derive(String seriesName, Integer season, Integer episode, Integer absolute, Integer special) {
|
||||||
return new Episode(seriesName, season, episode, getTitle(), absolute, special, getAirdate(), getId(), new SeriesInfo(getSeriesInfo()));
|
return new Episode(seriesName, season, episode, null, absolute, special, null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -55,7 +55,10 @@ public class EpisodeFormat extends Format {
|
|||||||
sb.append(" - ").append("Special " + episode.getSpecial());
|
sb.append(" - ").append("Special " + episode.getSpecial());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sb.append(" - ").append(episode.getTitle());
|
|
||||||
|
if (episode.getTitle() != null) {
|
||||||
|
sb.append(" - ").append(episode.getTitle());
|
||||||
|
}
|
||||||
return sb;
|
return sb;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,11 +1,17 @@
|
|||||||
package net.filebot.web;
|
package net.filebot.web;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
import java.util.function.Function;
|
||||||
|
|
||||||
public class MappedEpisode extends Episode {
|
public class MappedEpisode extends Episode {
|
||||||
|
|
||||||
protected Episode mapping;
|
protected Episode mapping;
|
||||||
|
|
||||||
|
public MappedEpisode() {
|
||||||
|
// used by deserializer
|
||||||
|
}
|
||||||
|
|
||||||
public MappedEpisode(Episode original, Episode mapping) {
|
public MappedEpisode(Episode original, Episode mapping) {
|
||||||
super(original);
|
super(original);
|
||||||
this.mapping = mapping;
|
this.mapping = mapping;
|
||||||
@ -19,59 +25,60 @@ public class MappedEpisode extends Episode {
|
|||||||
return mapping;
|
return mapping;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private <T> T getFirst(Function<Episode, T> getter) {
|
||||||
|
return Optional.ofNullable(getter.apply(mapping)).orElseGet(() -> {
|
||||||
|
return Optional.ofNullable(getter.apply(getOriginal())).orElse(null);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getSeriesName() {
|
public String getSeriesName() {
|
||||||
return mapping.getSeriesName();
|
return getFirst(Episode::getSeriesName);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getEpisode() {
|
public Integer getEpisode() {
|
||||||
return mapping.getEpisode();
|
return mapping.getEpisode(); // always use mapped episode number
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getSeason() {
|
public Integer getSeason() {
|
||||||
return mapping.getSeason();
|
return mapping.getSeason(); // always use mapped season number
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
return mapping.getTitle();
|
return getFirst(Episode::getTitle);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getAbsolute() {
|
public Integer getAbsolute() {
|
||||||
return mapping.getAbsolute();
|
return mapping.getAbsolute(); // always use mapped absolute number
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getSpecial() {
|
public Integer getSpecial() {
|
||||||
return mapping.getSpecial();
|
return mapping.getSpecial(); // always use mapped special number
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public SimpleDate getAirdate() {
|
public SimpleDate getAirdate() {
|
||||||
return mapping.getAirdate();
|
return getFirst(Episode::getAirdate);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Integer getId() {
|
public Integer getId() {
|
||||||
return mapping.getId();
|
return getFirst(Episode::getId);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public SeriesInfo getSeriesInfo() {
|
|
||||||
return mapping.getSeriesInfo();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<String> getSeriesNames() {
|
public Set<String> getSeriesNames() {
|
||||||
return mapping.getSeriesNames();
|
return getFirst(Episode::getSeriesNames);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isAnime() {
|
public boolean isAnime() {
|
||||||
return mapping.isAnime();
|
return super.isAnime(); // series info is only stored in the original episode object
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -84,14 +91,19 @@ public class MappedEpisode extends Episode {
|
|||||||
return mapping.isSpecial();
|
return mapping.isSpecial();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public SeriesInfo getSeriesInfo() {
|
||||||
|
return super.getSeriesInfo(); // series info is only stored in the original episode object
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return mapping.equals(obj);
|
return super.equals(obj); // use original episode object for episode comparison
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return mapping.hashCode();
|
return super.hashCode(); // use original episode object for episode comparison
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -116,7 +128,7 @@ public class MappedEpisode extends Episode {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
return mapping.toString();
|
return String.format("%s [%s]", getMapping(), getOriginal());
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user