package net.filebot.ui.list;
import static net.filebot.media.XattrMetaInfo.*;
import java.io.File;
import java.util.List;
import java.util.Map;
import net.filebot.format.Define;
import net.filebot.format.MediaBindingBean;
import net.filebot.util.EntryList;
import net.filebot.util.FunctionList;
public class IndexedBindingBean extends MediaBindingBean {
private int i;
private int from;
private int to;
public IndexedBindingBean(Object object, int i, int from, int to, List<?> context) {
super(getInfoObject(object), getMediaFile(object), getContext(context));
this.i = i;
this.from = from;
this.to = to;
}
@Override
@Define("i")
public Integer getModelIndex() {
return i;
}
@Define("from")
public Integer getFromIndex() {
return from;
}
@Define("to")
public Integer getToIndex() {
return to;
}
private static Object getInfoObject(Object object) {
if (object instanceof File) {
File file = (File) object;
Object metaInfo = xattr.getMetaInfo(file);
if (metaInfo != null) {
return metaInfo;
}
}
return object;
}
private static File getMediaFile(Object object) {
return object instanceof File ? (File) object : new File(object.toString());
}
private static Map<File, Object> getContext(List<?> context) {
List<Object> values = new FunctionList<Object, Object>((List<Object>) context, IndexedBindingBean::getInfoObject);
List<File> files = new FunctionList<Object, File>((List<Object>) context, IndexedBindingBean::getMediaFile);
return new EntryList<File, Object>(files, values);
}
}