@Override
	public void execute(JobExecutionContext context)
			throws JobExecutionException {
		HashMap<String, String> newIpAddresses = new HashMap<String, String>();
		try {
			Enumeration<NetworkInterface> interfaces = NetworkInterface.getNetworkInterfaces();

			while (interfaces.hasMoreElements()){
				NetworkInterface current = interfaces.nextElement();

				if (!Filter.accepts(current)) continue; 

				Enumeration<InetAddress> addresses = current.getInetAddresses();
				while (addresses.hasMoreElements()){
					InetAddress current_addr = addresses.nextElement();
					if (current_addr.isLoopbackAddress() || current_addr instanceof Inet6Address) continue;
					if (current_addr instanceof Inet4Address){
						newIpAddresses.put(current.getDisplayName(), current_addr.getHostAddress());
					}
				}
			}
		} catch (SocketException e) {
			LOGGER.error("Error in refresh()", e);
		}
		int ipsFound = newIpAddresses.size();
		LOGGER.info("Found: "+ipsFound+" ip`s");
		JobDataMap jobResult = context.getJobDetail().getJobDataMap();
		jobResult.put(IPS_FOUND, ipsFound);
		jobResult.put(ADDRESSES_MAP, newIpAddresses);
	}