From 88c9d4a901601adef5b29fdc6d543ac7d833f840 Mon Sep 17 00:00:00 2001 From: "Luiz F. Picolo" Date: Sun, 18 Sep 2022 14:09:37 -0400 Subject: [PATCH] Commit inicial --- .DS_Store | Bin 0 -> 6148 bytes .gitignore | 4 ++ bin/implementacoes/CandidatoImpl.class | Bin 0 -> 998 bytes bin/implementacoes/IsEvenImpl.class | Bin 0 -> 932 bytes bin/implementacoes/VotacaoImpl.class | Bin 0 -> 4358 bytes bin/implementacoes/VotoImpl.class | Bin 0 -> 843 bytes bin/interfaces/CandidatoInterface.class | Bin 0 -> 370 bytes bin/interfaces/IsEvenInterface.class | Bin 0 -> 223 bytes bin/interfaces/VotacaoInterface.class | Bin 0 -> 454 bytes src/Cliente.java | 30 ++++++++++++ src/Servidor.java | 46 ++++++++++++++++++ src/implementacoes/CandidatoImpl.java | 35 ++++++++++++++ src/implementacoes/IsEvenImpl.java | 24 ++++++++++ src/implementacoes/VotacaoImpl.java | 61 ++++++++++++++++++++++++ src/implementacoes/VotoImpl.java | 26 ++++++++++ src/interfaces/CandidatoInterface.java | 11 +++++ src/interfaces/IsEvenInterface.java | 7 +++ src/interfaces/VotacaoInterface.java | 14 ++++++ 18 files changed, 258 insertions(+) create mode 100644 .DS_Store create mode 100644 .gitignore create mode 100644 bin/implementacoes/CandidatoImpl.class create mode 100644 bin/implementacoes/IsEvenImpl.class create mode 100644 bin/implementacoes/VotacaoImpl.class create mode 100644 bin/implementacoes/VotoImpl.class create mode 100644 bin/interfaces/CandidatoInterface.class create mode 100644 bin/interfaces/IsEvenInterface.class create mode 100644 bin/interfaces/VotacaoInterface.class create mode 100644 src/Cliente.java create mode 100644 src/Servidor.java create mode 100644 src/implementacoes/CandidatoImpl.java create mode 100644 src/implementacoes/IsEvenImpl.java create mode 100644 src/implementacoes/VotacaoImpl.java create mode 100644 src/implementacoes/VotoImpl.java create mode 100644 src/interfaces/CandidatoInterface.java create mode 100644 src/interfaces/IsEvenInterface.java create mode 100644 src/interfaces/VotacaoInterface.java diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..a3585876b6842aef6ec2eca2c673c194487ea3b6 GIT binary patch literal 6148 zcmeH~O=`nH427SXECStl+2w30pQvfVyQljO&;ssLc!1UOG})p;=82 zR;?Ceh}WZ?+UmMqI#RP8R>OzYoz15hnq@nzF`-!xQ4j$USPcArhpU_6^TG376?s}p-dIqmF*zJZ}1x| zK%zoo!3Xded#EQ*M264@Knzc=HQILqHWYsyQg9;$NHTd zj1}i4Htef7(NXxUb6-F_5;(ULg-I&Iv@gdKReW)Kwbpz2{)a#zi~_c~-4h z!mjTB6z5IOo=SJ^$%|fV_6`;#M+G%+HgE1Mn-NoG$eY@fP0ti5cpWQ7FPg+d^-!CS z;-32Mw~Q`W=Z$&fP=rIff-)*Z&hpQbLzO?uV10@}TV&3~1>%d03XE#FNbfn3JnfwS z1xx`ohe@rU^6 zn+Y%a0Es5P@aB&)o@pzXpqreXGiT0s&NttjpTEBS0B{d?Yzz=)RM-k+C?hTWSf*Yz zUG2!I%0U|zVPQ*jgqMWMOJ&lLiMJjpU!?lE3}Y>yZEQ(j+ZZIwsz}S^jqnd^{0R`o z7_3ClkV&fIXubN7K#vI{D{+)+5$T2q+A_3D!#7lsRND?!dtaVYH?q`LrEw$mE6C2qYn2i+$!Im=W*$K})|?DWOpN zuN)PEtLhk$)KMIB_dmNixHxAn zdY-$KdTn|vy2UExhRG;7C}WXT6|I(xnuIxKeG5>oCvB0CH?(o|)I<9I<#eiWBTDvq!vU7x$3=(oLS=zX6!Pg=3gx&*>#$ z3e&vf!NSauQi`(;%KeJj?{Ht{&+OrBVHX#6ad8)3!TRtKS!*Y=!#Nq4E_p_PX-u&< hhjAW-$!@o)UY&k7u88Zn!Ch~5ku=ZlEp`WR`!`T2(#HS* literal 0 HcmV?d00001 diff --git a/bin/implementacoes/VotacaoImpl.class b/bin/implementacoes/VotacaoImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..914d019dafcaf536cb6be8870e51dd4dc8363572 GIT binary patch literal 4358 zcmai1`Fj)B6+KUqJ+>IIa0sgdj$^=*0fjw5kd!zih?=Dln3{AOOJjSmG^5On6il0@ zOPZuxn(l4drb*M5F0@V3U=TDZEnU+z-P3*hFZx5j((`7tjAR4;K1nn8y}O-z?tRZM z|L^=u0CwTu3PJ+QjY2W67j)CrvX<^7M=U;QR+>@;5rLbIYh^8I7mTE%+hyHO9x;uq z=D7Fh1>jqVWQRtM@VzRGxRVB}-_u&o07Z%2;%3$9 zVog1kXRMlCFFs9m55!yX71%UOcumY$5=YCIHCxhy@C~HnX$9K^mb5UhMxPGcLQpqu z+B^?Cuu}o!UeG{Hf~vA3Nr3Q#?h0H_g8{1eU6xYtI-=3yp`M=Pb`)E2hb-Yxg9#r0 zGOlfy6RB1to0L=W5gFYc6?froMxy0%GLqSG#E%ImMa$tFVDcg@(4iGewj3MX?A~D& z`*DDz*0Ped0;z#kzrhLyD>7a(vy$dXITlI^)j`QlK};^4Uu9 zkq#UdSb4BFTkHJZ)wy1V?34`oRF>U84cpGy76otSWb!n9h^HM_FQ|Ac-bV1Ok}RW-ona*p5q_6N(6vIU17iY%KcXmd7+1i4@Y}9gQN;w9yHb?4@@7kIsuh+sJPwZTsiw3TwTc3$)M0Q+bFA9z zoTkLmRXHIq!d7q}+ogd^ZB>N>W)?B^6Z~0Jv*006r)jx14}!B#!HFik{N1t$Cnfja zF0f`UuFa-j6c6A*1@COK=BKaXU3fQ3N1_xo#&>JbVilo#XIl*RT6LEM;k_yz!uyE$ zq~;v(^5s}0Gr9v7s@v%^JE@g*&Y0l2Aj!hR##>@h1A4UsL7?B4dWReL&vk0ZBVvAr z=kgTkSsjjDVpSuWAniu-kU(#kne{2aef@UlQ(V<;PD*_zUm z!yZw&QRDrTvu|3(EBK|ryh1}H@JbM>s-|yzFOQMD?(`2^)>Nq&yv32R-oZM{rLTCH z*OB1%CaYIn^j%(EH(0f*-G zEoFaH@qJvR@@rRb>SHndnOshrrfv`AHOJ9;HT}E5>MH=zjG%&l@_4@bR`S7z8#gkp zFh6aGU^x_Y@VS#0jS!;z@J7k^1>SoX-+3dgzc1uF@1FJdMbsuJSWJ6Ms1f1Y(yH!q zte~XKl@Nb>6KBzrxPVooXK~{h^zpHuk893gZDQ~Y;?HqU7=!#?%(y_C5iCR(y)CC? z6|JxH);wESj}3gI)oQd!KCATYOS<^P|6;Ilj;JF$aCFJF}Ojx z^3AnXUGe&dE!@>eQYLo{?Ot+yG}CthTSvRMOM@#axHW`}xcw}4S8!(tM^~J#`;ZWW zf%mcujgA*4Ga8X<>noTJA#)DzpqAYF9)Tw=zbY#c z@!;qqGk`U$!XWFg4m}LApUCe(lBsXtqD}OKVj^W@NBGQ{Rhas_!Xjh5ifaOm-38cRI#X>Hq|(` z(URnvDjg*}XFq80(C7ME&#upP6+iNKMG^>%WiLMzZ@Q_ESP(oCD=X!JrrycVbrO_Eue*g($a zs?4445dzgvCXtS$H3EC%js3$_&xv@#DLSGy{egQUlM1xPxu%&+rv9N#buuMr>#0t( zeJ=30_iy|E8~TAj?d7LXomz^|DrgDptj}H?x^4@Uh9*)q6miYNHm(a4d;Opaay-;< z*+sh^Jk$jmW1Xls^LV1t_i{2*PP+-|lcZbBm&KC(s561?rp(oc;CbFu*|jeM`@Q}q zc->vP)+A%}w{dN|PUEQUM9Ksz7kEda}bg16me#cBML+}$Ma LTu461SKRvzlSs8c literal 0 HcmV?d00001 diff --git a/bin/interfaces/CandidatoInterface.class b/bin/interfaces/CandidatoInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..eabe2db8e61600ef5a43a234ec7f772d6a695a26 GIT binary patch literal 370 zcmZXQ&rSj{5Ql%o)ynz@P>f!@?_S&oFrEk`n-EMS@m`j3Q^K~UTa3@O*BqWyG-c`>YX;_qd+|TEa=^9YifxzfxCv{_n2Mv-gT24 zs?t}1c6e=7k+T9vNt!bWH9Ha|dAJl$?aCE2(o62@_He$3&;bv_3SP(jFA)zcamrac aWW2{r&T-Kom*_M|7rp<4<103_aJ>P-%2XHt literal 0 HcmV?d00001 diff --git a/bin/interfaces/IsEvenInterface.class b/bin/interfaces/IsEvenInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..54046b099ba450a0812d5ca0caa816f17127bf7b GIT binary patch literal 223 zcmZ8bIS#@=3>=5RLO2Tw#0#JyFQ5!kDkSJ=(6TaUqZ}w3BHl*919%j|AVEPfvS;kE z=kdJV0W2|4@CZ|zS6m*oVHd_OsyUCpf`U&NCA!vOs`FF0J|t`^g%)A>QOnGR8_tS~ z3Cg-Xi<{uj;`xpcL|4P-$`-j(=n^J>mfu)bx5cG2yt1hr8vmtOynXVL&=52wI!P>r Qwy=&cUuq!eN$;Wm0wwP^fB*mh literal 0 HcmV?d00001 diff --git a/bin/interfaces/VotacaoInterface.class b/bin/interfaces/VotacaoInterface.class new file mode 100644 index 0000000000000000000000000000000000000000..f17d39d70643b9c7b04b79e1e45a754f0fb4cd06 GIT binary patch literal 454 zcmZWl%}T>S7@V!qwDqT2jR?L#dNJU&>O~X+0l`4;U(>a0Np{0#Q+zfLK7bD;eu)@L zJS^0=UPekAc9o(oWhp%48KSjH8T9{D=7P1Wq@!r6?!8j$W1T^ z0+SZCg^FHfVVq=Lt|~|Nk@QNf$eBuD8qShdS38wQ3G;J-@zZ-IOQ(#kd>jf~^_)6d zV3ex0CRbawzy0TRm#Cu5Wg#`EHXOej9Wy?EXl7NEZ^`mrM!*Z>S candidatos = votacao.listarCandidatos(); + + candidatos.forEach(x -> { + System.out.println(x.getNome() + " " + x.getNumero()); + }); + + Scanner entrada = new Scanner(System.in); + System.out.println("Digite seu voto"); + String numero_candidato = entrada.nextLine(); + + int posicao = votacao.buscarCandidato(numero_candidato); + System.out.println("Seu voto foi: " + candidatos.get(posicao).getNome()); + votacao.apuracao(); + } +} \ No newline at end of file diff --git a/src/Servidor.java b/src/Servidor.java new file mode 100644 index 0000000..3a31120 --- /dev/null +++ b/src/Servidor.java @@ -0,0 +1,46 @@ +import java.rmi.Naming; +import java.rmi.Remote; +import java.rmi.registry.LocateRegistry; +import java.util.ArrayList; +import java.util.List; + +import implementacoes.CandidatoImpl; +import implementacoes.IsEvenImpl; +import implementacoes.VotacaoImpl; +import interfaces.VotacaoInterface; + +public class Servidor { + + static List candidatos; + static VotacaoInterface votacaoImpl; + static int porta = 1099; + + public static void main(String[] args) { + try { + //IsEvenImpl x = new IsEvenImpl(); + String objName = "rmi://localhost:" + porta + "/server"; + + System.out.println("Registrando o objeto no RMIRegistry..."); + LocateRegistry.createRegistry(porta); + + // Lista de Candidatos + candidatos = new ArrayList<>(); + candidatos.add(new CandidatoImpl(1, "1 Luiz Picolo")); + candidatos.add(new CandidatoImpl(2, "2 Luiz Picolo")); + candidatos.add(new CandidatoImpl(3, "3 Luiz Picolo")); + candidatos.add(new CandidatoImpl(4, "4 Luiz Picolo")); + candidatos.add(new CandidatoImpl(5, "5 Luiz Picolo")); + candidatos.add(new CandidatoImpl(6, "6 Luiz Picolo")); + candidatos.add(new CandidatoImpl(7, "7 Luiz Picolo")); + + votacaoImpl = new VotacaoImpl(candidatos); + + Naming.rebind(objName, votacaoImpl); + //Naming.rebind(objName, x); + + System.out.println("Aguardando Clientes na porta " + porta + "!"); + } catch (Exception e) { + e.printStackTrace(); + } + } +} \ No newline at end of file diff --git a/src/implementacoes/CandidatoImpl.java b/src/implementacoes/CandidatoImpl.java new file mode 100644 index 0000000..98ac03b --- /dev/null +++ b/src/implementacoes/CandidatoImpl.java @@ -0,0 +1,35 @@ +package implementacoes; + +import java.io.Serializable; +import java.rmi.RemoteException; + +import interfaces.CandidatoInterface; + +public class CandidatoImpl implements CandidatoInterface, Serializable { + + private static final long serialVersionUID = 6717433396141724642L; + private String nome; + private int numero; + + public CandidatoImpl(int numero, String nome) throws RemoteException { + super(); + this.nome = nome; + this.numero = numero; + } + + public String getNome() { + return nome; + } + + public void setNome(String nome) { + this.nome = nome; + } + + public int getNumero() { + return numero; + } + + public void setNumero(int numero) { + this.numero = numero; + } +} \ No newline at end of file diff --git a/src/implementacoes/IsEvenImpl.java b/src/implementacoes/IsEvenImpl.java new file mode 100644 index 0000000..ce4f19e --- /dev/null +++ b/src/implementacoes/IsEvenImpl.java @@ -0,0 +1,24 @@ +package implementacoes; + +import java.rmi.server.UnicastRemoteObject; +import interfaces.IsEvenInterface; +import java.rmi.RemoteException; + +public class IsEvenImpl extends UnicastRemoteObject implements IsEvenInterface { + + public IsEvenImpl() throws RemoteException { + super(); + } + + private static final long serialVersionUID = 1L; + + @Override + public boolean is_even(int x) throws RemoteException { + System.out.println("Conectado. Parâmetro enviado é " + x); + if((x & 1) == 0) { + return true; + } else { + return false; + } + } +} \ No newline at end of file diff --git a/src/implementacoes/VotacaoImpl.java b/src/implementacoes/VotacaoImpl.java new file mode 100644 index 0000000..b9f513c --- /dev/null +++ b/src/implementacoes/VotacaoImpl.java @@ -0,0 +1,61 @@ +package implementacoes; + +import java.rmi.RemoteException; +import java.rmi.server.UnicastRemoteObject; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +import interfaces.VotacaoInterface; + +public class VotacaoImpl extends UnicastRemoteObject implements VotacaoInterface { + + private static final long serialVersionUID = 1L; + private List candidatos; + private List votos = new ArrayList<>(); + private Map quantidade = new HashMap<>(); + + public VotacaoImpl(List candidatos) throws RemoteException { + super(); + this.candidatos = candidatos; + } + + @Override + public List listarCandidatos() throws RemoteException { + return this.candidatos; + } + + @Override + public int salvarVoto(int posicao) throws RemoteException { + this.votos.add(new VotoImpl("123", this.candidatos.get(posicao))); + return posicao; + } + + @Override + public void apuracao() { + this.votos.forEach(voto -> { + int count = (int) votos.stream().filter(p -> p.getCandidato().equals(voto.getCandidato())).count(); + quantidade.put(voto.getCandidato().getNumero(), count); + }); + + final String format = "O candidato %d possui %d votos"; + final Set chaves = quantidade.keySet(); + System.out.println("Apuração dos votos"); + for (final Integer chave : chaves) { + System.out.println(String.format(format, chave, quantidade.get(chave))); + } + } + + @Override + public int buscarCandidato(String numero) throws RemoteException { + for(int i = 0; i < this.candidatos.size(); i++) { + if(this.candidatos.get(i).getNumero() == Integer.parseInt(numero)) { + return this.salvarVoto(i); + } + } + + return -1; + } +} diff --git a/src/implementacoes/VotoImpl.java b/src/implementacoes/VotoImpl.java new file mode 100644 index 0000000..d50024c --- /dev/null +++ b/src/implementacoes/VotoImpl.java @@ -0,0 +1,26 @@ +package implementacoes; + +import java.rmi.RemoteException; +import java.rmi.server.UnicastRemoteObject; + +public class VotoImpl extends UnicastRemoteObject { + + private static final long serialVersionUID = 1L; + + private CandidatoImpl candidato; + private String identificador; + + public VotoImpl(String identificador, CandidatoImpl candidato) throws RemoteException { + super(); + this.candidato = candidato; + this.identificador = identificador; + } + + public CandidatoImpl getCandidato() { + return candidato; + } + + public String getIdentificador() { + return identificador; + } +} diff --git a/src/interfaces/CandidatoInterface.java b/src/interfaces/CandidatoInterface.java new file mode 100644 index 0000000..5af2274 --- /dev/null +++ b/src/interfaces/CandidatoInterface.java @@ -0,0 +1,11 @@ +package interfaces; + +import java.rmi.Remote; +import java.rmi.RemoteException; + +public interface CandidatoInterface extends Remote { + public String getNome() throws RemoteException; + public void setNome(String nome) throws RemoteException; + public int getNumero() throws RemoteException; + public void setNumero(int numero) throws RemoteException; +} diff --git a/src/interfaces/IsEvenInterface.java b/src/interfaces/IsEvenInterface.java new file mode 100644 index 0000000..3dca6d5 --- /dev/null +++ b/src/interfaces/IsEvenInterface.java @@ -0,0 +1,7 @@ +package interfaces; +import java.rmi.Remote; +import java.rmi.RemoteException; + +public interface IsEvenInterface extends Remote { + public boolean is_even(int x) throws RemoteException; +} \ No newline at end of file diff --git a/src/interfaces/VotacaoInterface.java b/src/interfaces/VotacaoInterface.java new file mode 100644 index 0000000..56495f6 --- /dev/null +++ b/src/interfaces/VotacaoInterface.java @@ -0,0 +1,14 @@ +package interfaces; + +import java.rmi.Remote; +import java.rmi.RemoteException; +import java.util.List; + +import implementacoes.CandidatoImpl; + +public interface VotacaoInterface extends Remote { + public List listarCandidatos() throws RemoteException; + public int salvarVoto(int posicao) throws RemoteException; + public int buscarCandidato(String numero) throws RemoteException; + public void apuracao() throws RemoteException; +}