package com.netifera.platform.net.internal.routes; import java.util.Collections; import java.util.HashSet; import java.util.Set; import com.netifera.platform.api.model.IEntity; import com.netifera.platform.api.model.layers.IGroupLayerProvider; import com.netifera.platform.net.model.HostEntity; import com.netifera.platform.net.model.InternetAddressEntity; import com.netifera.platform.net.model.NetworkAddressEntity; import com.netifera.platform.net.routes.AS; import com.netifera.platform.net.routes.IIP2ASService; import com.netifera.platform.util.addresses.inet.InternetAddress; public class ASLayerProvider implements IGroupLayerProvider { private IIP2ASService ip2asService; public Set<String> getGroups(IEntity entity) { if (ip2asService == null) return Collections.emptySet(); /* InternetAddress address = (InternetAddress) entity.getAdapter(InternetAddress.class); if (address != null) { String as = ip2asService.getAS(address); if (as != null) { Set<String> answer = new HashSet<String>(); answer.add(as); return answer; } } */ if (entity instanceof HostEntity) { Set<String> answer = new HashSet<String>(); for (NetworkAddressEntity addressEntity: ((HostEntity)entity).getAddresses()) { if (addressEntity instanceof InternetAddressEntity) { InternetAddress address = ((InternetAddressEntity)addressEntity).getAddress(); if (address != null) { AS as = ip2asService.getAS(address); if (as != null) { answer.add(as.getDescription()); } } } } return answer; } return Collections.emptySet(); // or return "Unknown AS" } public String getLayerName() { return "Hosts By AS"; } public boolean isDefaultEnabled() { return false; } protected void setIP2ASService(IIP2ASService service) { this.ip2asService = service; } protected void unsetIP2ASService(IIP2ASService service) { this.ip2asService = null; } }