package com.netifera.platform.net.internal.daemon.sniffing.ui; import java.text.DateFormat; import java.util.Date; import org.eclipse.swt.graphics.Image; import com.netifera.platform.api.model.IShadowEntity; import com.netifera.platform.net.daemon.sniffing.model.CaptureFileEntity; import com.netifera.platform.net.daemon.sniffing.model.NetworkInterfaceEntity; import com.netifera.platform.net.daemon.sniffing.model.SniffingSessionEntity; import com.netifera.platform.ui.api.model.IEntityLabelProvider; import com.netifera.platform.ui.images.ImageCache; public class EntityLabelProvider implements IEntityLabelProvider { private final static String PLUGIN_ID = "com.netifera.platform.net.daemon.sniffing.ui"; private ImageCache images = new ImageCache(PLUGIN_ID); private static final String CAPTUREFILE = "icons/capfile.png"; private static final String SNIFFING = "icons/sniffing.png"; private static final String INTERFACE = "icons/interface.png"; public void dispose() { images.dispose(); } public Image getImage(IShadowEntity e) { if(e instanceof CaptureFileEntity) { return images.get(CAPTUREFILE); } else if(e instanceof SniffingSessionEntity) { return images.get(SNIFFING); } else if(e instanceof NetworkInterfaceEntity) { return images.get(INTERFACE); } else { return null; } } public Image decorateImage(Image image, IShadowEntity e) { return null; } private String dateString(long timestamp) { Date d = new Date(timestamp); return DateFormat.getInstance().format(d); } public String getText(IShadowEntity e) { if(e instanceof CaptureFileEntity) { final CaptureFileEntity entity = (CaptureFileEntity) e; return "PCAP Capture File '" + entity.getPath() + "'"; } else if(e instanceof SniffingSessionEntity) { final SniffingSessionEntity entity = (SniffingSessionEntity) e; return "Live Sniffing Session (" + dateString(entity.getTimestamp()) + ")"; } else if(e instanceof NetworkInterfaceEntity) { return ((NetworkInterfaceEntity)e).getName(); } else { return null; } } public String getFullText(IShadowEntity e) { return getText(e); } public Integer getSortingCategory(IShadowEntity e) { return null; } public Integer compare(IShadowEntity e1, IShadowEntity e2) { if(e1 instanceof NetworkInterfaceEntity && e2 instanceof NetworkInterfaceEntity) { return ((NetworkInterfaceEntity)e1).getName().compareToIgnoreCase(((NetworkInterfaceEntity)e2).getName()); } if(e1 instanceof SniffingSessionEntity && e2 instanceof SniffingSessionEntity) { return compareSniffingSessionEntities((SniffingSessionEntity)e1, (SniffingSessionEntity)e2); } if(e1 instanceof CaptureFileEntity && e2 instanceof CaptureFileEntity) { return compareCaptureFileEntities((CaptureFileEntity)e1, (CaptureFileEntity)e2); } return null; } private int compareCaptureFileEntities(CaptureFileEntity e1, CaptureFileEntity e2) { int res = e1.getPath().compareTo(e2.getPath()); if (res < 0) { return -1; } else if (res > 0) { return 1; } res = (int) (e1.getTimestamp() - e2.getTimestamp()); if (res < 0) { return -1; } else if (res > 0) { return 1; } return 0; } private int compareSniffingSessionEntities(SniffingSessionEntity e1, SniffingSessionEntity e2) { long res = e1.getTimestamp() - e2.getTimestamp(); if (res < 0) { return -1; } else if (res > 0) { return 1; } return 0; } }