/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package testapp.data; import java.awt.Image; import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.logging.*; import javax.imageio.ImageIO; /** * * @author sven */ public class ImageItem extends Item{ private static final Logger logger = Logger.getLogger(ImageItem.class.getName()); public ImageItem(String url, Item parent) { super(url, parent); itemType = ItemType.IMAGE; } // public ImageItem(String url) { // super(url); // itemType = ItemType.IMAGE; // } @Override public ItemClassification analyse() { // if (!url.startsWith("http://") && !url.startsWith("https://") && !url.startsWith("ftp://")) // url="http://"+url; doAnalyse(); try { // Bild auf Größe abfragen, wenn kleiner als 5x5 Pixel --> Critical // Wenn größer und von fremden Server --> Suspicous // Wenn lokal, dann ist auch die Größe egal --> Harmless logger.log(Level.INFO, this.url.toString()); URL imgUrl = new URL(this.url); logger.log(Level.INFO, imgUrl.toString()); Image image=null; try { image = ImageIO.read(imgUrl); } catch(Exception exception) { logger.log(Level.WARNING, "Couldn't verify image "+imgUrl); setClassification(ItemClassification.SUSPICIOUS); } //System.out.println("Höhe "+image.getHeight(null)+" Breite "+image.getWidth(null)); if (image != null) { if ( (image.getHeight(null) <= 5) && (image.getWidth(null) <= 5) && (itemPlace != ItemPlace.LOCAL) ) { setClassification(ItemClassification.CRITICAL); } else if (itemPlace == ItemPlace.REMOTE) { setClassification(ItemClassification.SUSPICIOUS); } else if (itemPlace == ItemPlace.LOCAL) { setClassification(ItemClassification.HARMLESS); } } else { setClassification(ItemClassification.UNKNOWN); } } catch (IOException ex) { logger.log(Level.SEVERE, ex.toString()); } logger.log(Level.INFO, "Place: " + this.itemPlace); return itemClassification; } @Override protected HashMap getAttributes() { if (attributes == null) { attributes = new HashMap(); } attributes.put("shape", "octagon"); attributes.put("style", "filled"); attributes.put("fontname", "Verdana"); attributes.put("fontsize", "10"); return attributes; } @Override protected String getGraphNodetext() { if (this.filename.compareTo("")!=0) return this.filename; else return this.getUrl(); } }