forked from icei-pucminas/aeds2
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
237 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,237 @@ | ||
/** | ||
* Classe Série | ||
* TP - Algoritmos e Estruturas de Dados II | ||
* @author - João Augusto dos Santos Silva | ||
* 2021 - 2o. Semestre | ||
*/ | ||
|
||
import java.io.*; | ||
import java.io.FileReader; | ||
|
||
class Serie{ | ||
//declaração dos atributos | ||
private String name; | ||
private String format; | ||
private String duration; | ||
private String country; | ||
private String language; | ||
private String broadcaster; | ||
private String streaming; | ||
private int seasons; | ||
private int episodes; | ||
//construtor primário | ||
public Serie(){ | ||
name = ""; | ||
format = ""; | ||
duration = ""; | ||
country = ""; | ||
language = ""; | ||
broadcaster = ""; | ||
streaming = ""; | ||
seasons = 0; | ||
episodes = 0; | ||
} | ||
//construtor secundário | ||
public Serie(String name, String format, String duration, String country, String language, String broadcaster, String streaming, int seasons, | ||
int episodes){ | ||
this.name = name; | ||
this.format = format; | ||
this.duration = duration; | ||
this.country = country; | ||
this.language = language; | ||
this.broadcaster = broadcaster; | ||
this.streaming = streaming; | ||
this.seasons = seasons; | ||
this.episodes = episodes; | ||
} | ||
//método para setar o atributo name | ||
public void setName(String name){ | ||
this.name = name; | ||
} | ||
//método para setar o atributo formato | ||
public void setFormat(String format){ | ||
this.format = format; | ||
} | ||
//método para setar o atributo duration | ||
public void setDuration(String duration){ | ||
this.duration = duration; | ||
} | ||
//método para setar o atributo country | ||
public void setCountry(String country){ | ||
this.country = country; | ||
} | ||
//método para setar o atributo language | ||
public void setLanguage(String language){ | ||
this.language = language; | ||
} | ||
//método para setar o atributo broadcaster | ||
public void setBroadcaster(String broadcaster){ | ||
this.broadcaster = broadcaster; | ||
} | ||
//método para setar o atributo streaming | ||
public void setStreaming(String streaming){ | ||
this.streaming = streaming; | ||
} | ||
//método para setar o atributo seasons | ||
public void setSeasons(int seasons){ | ||
this.seasons = seasons; | ||
} | ||
//método para setar o atributo episodes | ||
public void setEpisodes(int episodes){ | ||
this.episodes = episodes; | ||
} | ||
//método para retornar o atributo name | ||
public String getName(){ | ||
return this.name; | ||
} | ||
//método para retornar o atributo format | ||
public String getFormat(){ | ||
return this.format; | ||
} | ||
//método para retornar o atributo duration | ||
public String getDuration(){ | ||
return this.duration; | ||
} | ||
//método para retornar o atributo country | ||
public String getCountry(){ | ||
return this.country; | ||
} | ||
//método para retornar o atributo language | ||
public String getLanguage(){ | ||
return this.language; | ||
} | ||
//método para retornar o atributo broadcaster | ||
public String getBroadcaster(){ | ||
return this.broadcaster; | ||
} | ||
//método para retornar o atributo streaming | ||
public String getStreaming(){ | ||
return this.streaming; | ||
} | ||
//método para retornar o atributo seasons | ||
public int getSeasons(){ | ||
return this.seasons; | ||
} | ||
//método para retornar o atributo episodes | ||
public int getEpisodes(){ | ||
return this.episodes; | ||
} | ||
//método para clonar a classe | ||
public Serie clone(){ | ||
Serie resp = new Serie(); | ||
resp.name = this.name; | ||
resp.format = this.format; | ||
resp.duration = this.duration; | ||
resp.country = this.country; | ||
resp.language = this.language; | ||
resp.broadcaster = this.broadcaster; | ||
resp.streaming = this.streaming; | ||
resp.seasons = this.seasons; | ||
resp.episodes = this.episodes; | ||
return resp; | ||
} | ||
//método para printar a classe | ||
public void printClass(){ | ||
System.out.println(this.name + " " + this.format + " " + this.duration + " " + this.country + " " + this.language + " " + this.broadcaster + " " + | ||
this.streaming + " " + this.seasons + " " + this.episodes); | ||
} | ||
//método para tratar a linha, deixar apenas números e converter o retorno de String para Integer | ||
public int justInt(String line){ | ||
String resp = ""; | ||
for(int i = 0; i < line.length(); i++){ | ||
if(line.charAt(i) >= '0' && line.charAt(i) <= '9'){ //caso o caracter seja um número ele é concatenado a variável resp | ||
resp += line.charAt(i); | ||
} else { //caso seja outro caracter, o i recebe o valor da condição de parada e o método de repetição é encerrado | ||
i = line.length(); | ||
} | ||
} | ||
return Integer.parseInt(resp); //conversão da string resp para número inteiro a ser retornado | ||
} | ||
//método para a remoção das tags da linha lida do arquivo para retornar apenas o que é desejado | ||
public String removeTags(String line){ | ||
String resp = ""; | ||
int i = 0; | ||
while(i < line.length()){ //enquanto i for menor que o tamanho da String linha | ||
if(line.charAt(i) == '<'){ // é testado para verificar se o contador i ainda está dentro das tags | ||
i++; | ||
while(line.charAt(i) != '>') i++; //ao encontrar o sinal de fechamento das tags o laço de repetição é encerrado | ||
} else if(line.charAt(i) == '&'){ //mesmo tratamento de cima mas para outras exceções presentes em alguns outros arquivos | ||
i++; | ||
while(line.charAt(i) != ';') i++; | ||
} else { //o que estiver fora das tags é concatenado a String resp a ser retornada | ||
resp += line.charAt(i); | ||
} | ||
i++; | ||
} | ||
//System.out.println(resp); | ||
return resp; | ||
} | ||
//método para tratar o nome do arquivo e retornar o nome da série | ||
public String searchName(String fileName){ | ||
String resp = ""; | ||
for(int i = 0; i < fileName.length(); i++){ | ||
if(fileName.charAt(i) == '_'){ //caso o caracter na posição i seja igual ao '_' a variável resp recebe um espaço em branco | ||
resp += ' '; | ||
} else { //caso não tenha espaço em branco o caracter é concatenado à string resp | ||
resp += fileName.charAt(i); | ||
} | ||
} | ||
return resp.substring(0, resp.length()-5); //retorno da substring resp retirando os 5 últimos caracteres relacionados à extensão do arquivo | ||
} | ||
//método para leitura do arquivo .html e tratamento das linhas | ||
public void readClass(String fileName){ | ||
String line; | ||
String resp = ""; | ||
String file = "/tmp/series/" + fileName; | ||
try { | ||
FileReader fileReader = new FileReader(file); //declaração da variável fileReader que será recebida pelo bufferedReader | ||
|
||
BufferedReader br = new BufferedReader(fileReader); //declaração do bufferedReader para leitura do arquivo | ||
|
||
//set nome da série | ||
this.name = searchName(fileName); | ||
|
||
//set Formato da série | ||
while(!br.readLine().contains("Formato")); | ||
this.format = removeTags(br.readLine()); | ||
|
||
//set duração da série | ||
while(!br.readLine().contains("Duração")); | ||
this.duration = removeTags(br.readLine()); | ||
|
||
//set país da série | ||
while(!br.readLine().contains("País de origem")); | ||
this.country = removeTags(br.readLine()); | ||
|
||
//set idioma da série | ||
while(!br.readLine().contains("Idioma original")); | ||
this.language = removeTags(br.readLine()); | ||
|
||
//set emissora da série | ||
while(!br.readLine().contains("Emissora de televisão")); | ||
this.broadcaster = removeTags(br.readLine()); | ||
|
||
//set transmissão original da série | ||
while(!br.readLine().contains("Transmissão original")); | ||
this.streaming = removeTags(br.readLine()); | ||
|
||
//set temporadas da série | ||
while(!br.readLine().contains("N.º de temporadas")); | ||
this.seasons = justInt(removeTags(br.readLine())); | ||
|
||
//set episódios da série | ||
while(!br.readLine().contains("N.º de episódios")); | ||
this.episodes = justInt(removeTags(br.readLine())); | ||
|
||
//método para mostrar a classe | ||
this.printClass(); | ||
//fechamento do bufferedReader | ||
br.close(); | ||
//Tratamento de exceções | ||
} catch(FileNotFoundException e) { | ||
System.out.println("Unable to open file '" + fileName + "'"); | ||
} catch(IOException e) { | ||
System.out.println("Error reading file '" + fileName + "'"); | ||
} | ||
} | ||
} |