package eu.jucy.gui.uploadqueue;
import java.util.Comparator;
import logger.LoggerFactory;
import helpers.SizeEnum;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Image;
import eu.jucy.gui.GuiHelpers;
import eu.jucy.gui.Lang;
import uc.files.UploadQueue.TransferRecord;
import uihelpers.TableViewerAdministrator.ColumnDescriptor;
public abstract class FinishedTransfersColumn extends ColumnDescriptor<TransferRecord> {
private static Logger logger = LoggerFactory.make();
static {
logger.setLevel(Level.DEBUG);
}
public FinishedTransfersColumn(int defaultColumnSize, String columnName) {
super(defaultColumnSize, columnName, SWT.LEAD);
}
public FinishedTransfersColumn(int defaultColumnSize, String columnName,int style) {
super(defaultColumnSize, columnName, style);
}
@Override
public Image getImage(TransferRecord x) {
return null;
}
public static class NameTransfCol extends FinishedTransfersColumn {
public NameTransfCol() {
super(300, Lang.FileCol);
}
@Override
public String getText(TransferRecord x) {
return x.getName();
}
}
public static class SizeCol extends FinishedTransfersColumn {
public SizeCol() {
super(80, Lang.Size,SWT.TRAIL);
}
@Override
public String getText(TransferRecord x) {
return SizeEnum.getReadableSize(x.getSize());
}
@Override
public Comparator<TransferRecord> getComparator() {
return new Comparator<TransferRecord>() {
public int compare(TransferRecord arg0, TransferRecord arg1) {
return Long.valueOf(arg0.getSize()).compareTo(arg1.getSize());
}
};
}
}
public static class DurationCol extends FinishedTransfersColumn {
public DurationCol() {
super(60, Lang.Duration);
}
@Override
public String getText(TransferRecord x) {
return SizeEnum.toDurationString(x.getTimeNeeded()/1000);
}
@Override
public Comparator<TransferRecord> getComparator() {
return new Comparator<TransferRecord>() {
public int compare(TransferRecord arg0, TransferRecord arg1) {
return Long.valueOf(arg0.getTimeNeeded()).compareTo(arg1.getTimeNeeded());
}
};
}
}
public static class SpeedCol extends FinishedTransfersColumn {
public SpeedCol() {
super(80, Lang.Speed);
}
@Override
public String getText(TransferRecord x) {
return SizeEnum.toSpeedString(x.getTimeNeeded(), x.getSize());
}
@Override
public Comparator<TransferRecord> getComparator() {
return new Comparator<TransferRecord>() {
public int compare(TransferRecord arg0, TransferRecord arg1) {
float speed = (float)arg0.getSize() / (float)arg0.getTimeNeeded();
float speed2= (float)arg1.getSize() / (float)arg1.getTimeNeeded();
return Float.valueOf(speed).compareTo(speed2);
}
};
}
}
public static class IPCol extends FinishedTransfersColumn {
public IPCol() {
super(90, Lang.IP);
}
@Override
public String getText(TransferRecord x) {
return x.getTargetIP().getHostAddress();
}
}
public static class StartedCol extends FinishedTransfersColumn {
public StartedCol() {
super(110, Lang.Started);
}
@Override
public String getText(TransferRecord x) {
return GuiHelpers.dateToString(x.getStarttime());
}
@Override
public Comparator<TransferRecord> getComparator() {
return new Comparator<TransferRecord>() {
public int compare(TransferRecord arg0, TransferRecord arg1) {
return arg0.getStarttime().compareTo(arg1.getStarttime());
}
};
}
}
public static class FinishedCol extends FinishedTransfersColumn {
public FinishedCol() {
super(110, Lang.Finished);
}
@Override
public String getText(TransferRecord x) {
return GuiHelpers.dateToString(x.getEndTime());
}
@Override
public Comparator<TransferRecord> getComparator() {
return new Comparator<TransferRecord>() {
public int compare(TransferRecord arg0, TransferRecord arg1) {
return arg0.getEndTime().compareTo(arg1.getEndTime());
}
};
}
}
public static class PathTransfCol extends FinishedTransfersColumn {
public PathTransfCol() {
super(300, Lang.Path);
}
@Override
public String getText(TransferRecord x) {
if (x.getFile() != null) {
return x.getFile().getParent();
}
return "";
}
}
}