@Override
	@Cacheable(value="queries", key="T(java.util.Arrays).toString(#names).concat(#department)")
	public List getContacts(String[] names, String department){
		logger.debug("Searching...");
		logger.debug("Name: " + names);
		logger.debug("Department: " + department);
		AndFilter displayName = new AndFilter();
		for(int i = 0; i < names.length; i++){
			if(!"".equals(names[i]))
			displayName.and(new LikeFilter("displayName","*" + names[i] + "*"));
		}
		String finalQuery = MessageFormat.format(userQuery, displayName.encode(), department);
		CollectingNameClassPairCallbackHandler handler = new AttributesMapperCallbackHandler(new AttributesMapper() {
			public ContactDTO mapFromAttributes(Attributes attrs) throws NamingException {
				ContactDTO contact = new ContactDTO(attrs);
				Attribute employeeID = attrs.get("employeeID");
				if(employeeID != null){
					String path = IMAGE_FOLDER + File.separator + employeeID.get() + ".jpg";
					File f = new File(path);
					if(f.exists()){
						contact.setHasImage(true);
					}
				}
				return contact;
	        }
		});
		return query(finalQuery, handler);
	}