Created
February 5, 2013 11:26
-
-
Save viniciusfeitosa/4713852 to your computer and use it in GitHub Desktop.
Desafio 2 WDEV
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
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