Skip to content

Instantly share code, notes, and snippets.

@viniciusfeitosa
Created February 5, 2013 11:26
Show Gist options
  • Save viniciusfeitosa/4713852 to your computer and use it in GitHub Desktop.
Save viniciusfeitosa/4713852 to your computer and use it in GitHub Desktop.
Desafio 2 WDEV
package com.viniciusfeitosa.desafio2;
import java.util.Scanner;
public class TesteDesafio {
public static void main(String[] args) {
try {
System.out.print("Digite uma URL no modelo HTTP ou SSH: ");
Scanner entradaURL = new Scanner(System.in);
Protocolo http = new Http();
Protocolo ssh = new Ssh();
MostraParametros mostraParametro = new MostraParametros();
if(entradaURL.hasNext()){
mostraParametro.recebendo(entradaURL.nextLine().toLowerCase(), ssh);
}
} catch (Exception e) {
System.out.println("Ocorreu um erro: " + e);
}
}
}
package com.viniciusfeitosa.desafio2;
public class MostraParametros {
public void recebendo(String url, Protocolo protocolo) {
System.out.println(protocolo.recebe(url));
}
}
package com.viniciusfeitosa.desafio2;
public interface Protocolo {
String recebe(String url);
void validaUrl();
}
package com.viniciusfeitosa.desafio2;
public class Http implements Protocolo {
private String url;
String[] retornoSeparador;
Utils ferramenta = new Utils();
@Override
public String recebe(String url) {
this.url = url;
validaUrl();
String[] urlSeparada = ferramenta.separador(retornoSeparador[3], "[.]");
StringBuffer sb = new StringBuffer();
sb.append(" Saida:");
sb.append("\n Protocolo:");
sb.append(ferramenta.verificaNulo(retornoSeparador[0]));
sb.append("\n host:");
sb.append(ferramenta.verificaNulo(urlSeparada[0]));
sb.append("\n Dominio:");
sb.append(ferramenta.verificaNulo(urlSeparada[1]));
sb.append(".");
sb.append(ferramenta.verificaNulo(urlSeparada[2]));
sb.append("\n Path:");
sb.append(ferramenta.verificaNulo(retornoSeparador[4]));
sb.append("\n Parametros:");
sb.append(ferramenta.verificaNulo(retornoSeparador[5]));
return sb.toString();
}
@Override
public void validaUrl() {
retornoSeparador = ferramenta.separador(url, "[/:]");
if(!retornoSeparador[0].equals("http")) throw new RuntimeException("Protocolo não é HTTP");
if(url.contains("@") || url.contains(" ")) throw new RuntimeException("Digitos inválidos para protocolo http");
}
}
package com.viniciusfeitosa.desafio2;
public class Ssh implements Protocolo {
private String url;
private String[] retornoSeparador;
Utils ferramenta = new Utils();
@Override
public String recebe(String url) {
this.url = url;
validaUrl();
String[] usuarioSenha = ferramenta.separador(retornoSeparador[3], "[%@]");
String[] dominio = ferramenta.separador(url, "[@%]");
StringBuffer sb = new StringBuffer();
sb.append(" Saida:");
sb.append("\n Protocolo:");
sb.append(ferramenta.verificaNulo(retornoSeparador[0]));
sb.append("\n Usuario:");
sb.append(ferramenta.verificaNulo(usuarioSenha[0]));
sb.append("\n Senha:");
sb.append(ferramenta.verificaNulo(usuarioSenha[1]));
sb.append("\n Dominio:");
sb.append(ferramenta.verificaNulo(dominio[2]));
return sb.toString();
}
@Override
public void validaUrl() {
Utils util = new Utils();
retornoSeparador = util.separador(url, "[/:]");
if(!retornoSeparador[0].equals("ssh")) throw new RuntimeException("Protocolo não é SSH");
if(url.contains(" ")) throw new RuntimeException("Digitos inválidos para protocolo http");
}
}
package com.viniciusfeitosa.desafio2;
public class Utils {
public String[] separador(String entrada, String parametro) {
String[] retorno = entrada.split(parametro);
return retorno;
}
public String verificaNulo(String entrada){
return entrada == null ? "sem valor" : entrada;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment