aeds2/tps/gabarito/tp01/TP01-Html-JAVA/Html.java

188 lines
5.0 KiB
Java

/**
* @author: Thiago de Campos Ribeiro Nolasco
*/
// Libraries used:
import java.io.*;
import java.net.*;
class Html{
/**
* receives a HTTPS Address and return it's HTML content
* @param String
* @return
*/
public static String getHtml(String address){
// data declaration
URL url;
InputStream is = null;
BufferedReader br;
String resp = "", line;
try{
url = new URL(address);
is = url.openStream(); // throws an IOException
br = new BufferedReader(new InputStreamReader(is));
while((line = br.readLine()) != null){
resp += line + "\n";
}// ending while
} catch (MalformedURLException mue){
mue.printStackTrace();
} catch (IOException ioe){
ioe.printStackTrace();
} // ending try-catch
try{
is.close();
} catch (IOException ios){
// nothing to see here
}// ending try-catch 2
return resp;
}// ending method
/**
* receives a splitted string and checks if it's equals to <br>
* @param String
* @return
*/
public static boolean isBr(String splitted){
String toBeEqual = "<br>";
for(int i = 0; i < toBeEqual.length(); i++){
if(splitted.charAt(i) != toBeEqual.charAt(i)) return false;
}
return true;
}// ending method
/**
* receives a splitted String and checks if it's equals to <table>
* @param String
* @return
*/
public static boolean isTable(String splitted){
//MyIO.println(splitted);
String toBeEqual = "<table>";
for(int i = 0; i < splitted.length(); i++){
if(splitted.charAt(i) != toBeEqual.charAt(i)) return false;
}
return true;
}// ending method
/**
* receives a HTTPS Address and filters a HTML content
* @param String
* @param String
* @return
*/
public static String filtering(String address, String pageName){
// data declaration
String toBeFiltered = "";
int countAH = 0, countE = 0, countI = 0, countO = 0, countU = 0;
int countA1 = 0, countE1 = 0, countI1 = 0, countO1 = 0, countU1 = 0;
int countA2 = 0, countE2 = 0, countI2 = 0, countO2 = 0, countU2 = 0;
int countADiff = 0, countODiff = 0;
int countA4 = 0, countE4 = 0, countI4 = 0, countO4 = 0, countU4 = 0;
int countCons = 0, countBr = 0, countTable = 0;
char temp = ' ';
String splitter = "", resp = "";
toBeFiltered = getHtml(address);
for(int i = 0; i < toBeFiltered.length(); i++){
splitter = "";
temp = toBeFiltered.charAt(i);
// normal vowels
if(temp == 97){
countAH++;
}
if(temp == 101) countE++;
if(temp == 105) countI++;
if(temp == 111) countO++;
if(temp == 117) countU++;
// á letters
if(temp == 225) countA1++;
if(temp == 233) countE1++;
if(temp == 237) countI1++;
if(temp == 243) countO1++;
if(temp == 250) countU1++;
// à letters
if(temp == 224) countA2++;
if(temp == 232) countE2++;
if(temp == 236) countI2++;
if(temp == 242) countO2++;
if(temp == 249) countU2++;
// ã and õ letters
if(temp == 227) countADiff++;
if(temp == 245) countODiff++;
// â letters
if(temp == 226) countA4++;
if(temp == 234) countE4++;
if(temp == 238) countI4++;
if(temp == 244) countO4++;
if(temp == 251) countU4++;
// consoantes
if((temp > 97 && temp <= 122) && (temp != 65 && temp != 97) && (temp != 69 && temp != 101) && (temp != 73 && temp != 105) && (temp != 79 && temp != 111) && (temp != 85 && temp != 117)){
countCons++;
}
// <br>
// <table>
if(temp == 60){
for(int j = 0; j < 7; j++){
splitter += toBeFiltered.charAt(i + j);
}
if(isTable(splitter)){
countTable++;
i += 7;
}else if(isBr(splitter)){
countBr++;
i += 4;
}
}
}
// creating the String that contains the resp
resp = "a(" + countAH + ") e(" + countE + ") i(" + countI + ") o(" + countO + ") u(" + countU + ") á(" + countA1 + ") é(" + countE1 + ") í(" + countI1 + ") ó(" + countO1 + ") ú(" + countU1 + ") à(" + countA2 + ") è(" + countE2 + ") ì(" + countI2 +
") ò(" + countO2 + ") ù(" + countU2 + ") ã(" + countADiff + ") õ(" + countODiff + ") â(" + countA4 + ") ê(" + countE4 + ") î(" + countI4 + ") ô(" + countO4 + ") û(" + countU4 + ") consoante(" + countCons + ") <br>(" + countBr + ") <table>(" +
countTable + ") " + pageName;
return resp;
}// ending method
/**
* receives a string and checks if it's equals to "FIM"
* @param String
* @return
*/
public static boolean isFim(String s){
return (s.length() == 3 && s.charAt(0) == 'F' && s.charAt(1) == 'I' && s.charAt(2) == 'M');
}// ending method
/**
* (MAIN) receives an input from keyboard and stars the program
* @param String[]
* @return
*/
public static void main (String[] args){
// data declaration
String[] address = new String[1000], name = new String[1000];
int numEntries = 0;
do{
name[numEntries] = MyIO.readLine();
if(!(isFim(name[numEntries]))){
address[numEntries] = MyIO.readLine();
}
}while(!(isFim(name[numEntries++])));
numEntries--; // when reads "FIM"
for(int i = 0; i < numEntries; i++){
MyIO.println(filtering(address[i], name[i]));
}
}// ending main
}// ending class