package org.tiaa.indiatraining.controller;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ScanEngine {
private static final Logger LOGGER = Logger.getLogger(ScanEngine.class.getName());
List<String> tags = Arrays.asList("<title>,</title>", "<body>,</body>");
private static final String HTML_A_TAG_PATTERN = "(?i)<a([^>]+)>(.+?)</a>";
private static final String HTML_IMG_TAG_PATTERN ="(?i)<img\\s+(.*?)/?>";
public static URLConnection connect(String connectionString) {
URL url;
URLConnection conn = null;
try {
url = new URL(connectionString);
conn = url.openConnection();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return conn;
}
public static BufferedReader getStream(URLConnection con) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(
con.getInputStream()));
return in;
}
public static StringBuilder parse(BufferedReader in){
StringBuilder sb = new StringBuilder();
String inputLine;
try {
while ((inputLine = in.readLine()) != null)
sb.append(inputLine);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb;
}
public static void invokeScanEngine(String url) {
try {
URLConnection con = connect(url);
LOGGER.log(Level.INFO,"Hostname :-"+ getHost(con));
LOGGER.log(Level.INFO,"IpAddress :-"+ getIpAddress(con));
BufferedReader in = getStream(con);
if(in!=null){
StringBuilder sb = parse(in);
LOGGER.log(Level.INFO,"Submitted On :-"+getTime());
LOGGER.log(Level.INFO,"Title :-"+extractTag(sb,"<title>","</title>").trim());
LOGGER.log(Level.INFO,"Body :-"+extractTag(sb,"<body","</body>").trim());
LOGGER.log(Level.INFO,"Count of links :-"+countTag(sb,HTML_A_TAG_PATTERN));
LOGGER.log(Level.INFO,"Count of images :-"+countTag(sb,HTML_IMG_TAG_PATTERN));
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getIpAddress(URLConnection con) throws UnknownHostException {
InetAddress address = InetAddress.getByName(getHost(con));
String ip = address.getHostAddress();
return ip;
}
private static String getHost(URLConnection con) {
return con.getURL().getHost();
}
public static String extractTag(StringBuilder sb ,String startElement,String endElement){
int start = sb.indexOf(startElement);
int end = sb.indexOf(endElement);
String title = sb.substring(start+startElement.length(),end);
return title;
}
public static void main(String args[]){
invokeScanEngine("http://intranet.ops.tiaa-cref.org/");
//System.out.println("krishna".substring(0,"krishna".length()-1));
}
public static String getTime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH.mm.ss");
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
String date = sdf.format(timestamp);
return date;
}
public static int countTag(StringBuilder sb ,String expression){
Pattern patternTag = Pattern.compile(expression);
Matcher matcherTag = patternTag.matcher(sb);
int count = 0;
while (matcherTag.find()) {
count = count +1;
}
return count;
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.InetAddress;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.UnknownHostException;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ScanEngine {
private static final Logger LOGGER = Logger.getLogger(ScanEngine.class.getName());
List<String> tags = Arrays.asList("<title>,</title>", "<body>,</body>");
private static final String HTML_A_TAG_PATTERN = "(?i)<a([^>]+)>(.+?)</a>";
private static final String HTML_IMG_TAG_PATTERN ="(?i)<img\\s+(.*?)/?>";
public static URLConnection connect(String connectionString) {
URL url;
URLConnection conn = null;
try {
url = new URL(connectionString);
conn = url.openConnection();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return conn;
}
public static BufferedReader getStream(URLConnection con) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(
con.getInputStream()));
return in;
}
public static StringBuilder parse(BufferedReader in){
StringBuilder sb = new StringBuilder();
String inputLine;
try {
while ((inputLine = in.readLine()) != null)
sb.append(inputLine);
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb;
}
public static void invokeScanEngine(String url) {
try {
URLConnection con = connect(url);
LOGGER.log(Level.INFO,"Hostname :-"+ getHost(con));
LOGGER.log(Level.INFO,"IpAddress :-"+ getIpAddress(con));
BufferedReader in = getStream(con);
if(in!=null){
StringBuilder sb = parse(in);
LOGGER.log(Level.INFO,"Submitted On :-"+getTime());
LOGGER.log(Level.INFO,"Title :-"+extractTag(sb,"<title>","</title>").trim());
LOGGER.log(Level.INFO,"Body :-"+extractTag(sb,"<body","</body>").trim());
LOGGER.log(Level.INFO,"Count of links :-"+countTag(sb,HTML_A_TAG_PATTERN));
LOGGER.log(Level.INFO,"Count of images :-"+countTag(sb,HTML_IMG_TAG_PATTERN));
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static String getIpAddress(URLConnection con) throws UnknownHostException {
InetAddress address = InetAddress.getByName(getHost(con));
String ip = address.getHostAddress();
return ip;
}
private static String getHost(URLConnection con) {
return con.getURL().getHost();
}
public static String extractTag(StringBuilder sb ,String startElement,String endElement){
int start = sb.indexOf(startElement);
int end = sb.indexOf(endElement);
String title = sb.substring(start+startElement.length(),end);
return title;
}
public static void main(String args[]){
invokeScanEngine("http://intranet.ops.tiaa-cref.org/");
//System.out.println("krishna".substring(0,"krishna".length()-1));
}
public static String getTime(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH.mm.ss");
Timestamp timestamp = new Timestamp(System.currentTimeMillis());
String date = sdf.format(timestamp);
return date;
}
public static int countTag(StringBuilder sb ,String expression){
Pattern patternTag = Pattern.compile(expression);
Matcher matcherTag = patternTag.matcher(sb);
int count = 0;
while (matcherTag.find()) {
count = count +1;
}
return count;
}
}