From 82dbd9c10daefff5d5661aec9bcc8be68cc1ea72 Mon Sep 17 00:00:00 2001 From: Lukas Martin Date: Mon, 28 Nov 2022 20:56:37 +0100 Subject: [PATCH] [LM] added project to git --- .idea/.gitignore | 8 +++ .idea/compiler.xml | 13 ++++ .idea/inspectionProfiles/Project_Default.xml | 36 +++++++++++ .idea/jarRepositories.xml | 20 ++++++ .idea/misc.xml | 14 +++++ .idea/vcs.xml | 6 ++ pom.xml | 24 +++++++ src/main/java/Main.java | 41 ++++++++++++ src/main/java/RandomMatch.java | 59 ++++++++++++++++++ src/main/java/SendMail.java | 59 ++++++++++++++++++ src/main/resources/data.conf | 1 + target/classes/Main.class | Bin 0 -> 1350 bytes target/classes/RandomMatch.class | Bin 0 -> 1697 bytes target/classes/SendMail$1.class | Bin 0 -> 770 bytes target/classes/SendMail.class | Bin 0 -> 3100 bytes target/classes/data.conf | 1 + target/maven-archiver/pom.properties | 5 ++ .../compile/default-compile/createdFiles.lst | 0 .../compile/default-compile/inputFiles.lst | 3 + .../default-testCompile/inputFiles.lst | 0 .../weihnatchswichtelMaven-1.0-SNAPSHOT.jar | Bin 0 -> 6092 bytes 21 files changed, 290 insertions(+) create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/jarRepositories.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/vcs.xml create mode 100644 pom.xml create mode 100644 src/main/java/Main.java create mode 100644 src/main/java/RandomMatch.java create mode 100644 src/main/java/SendMail.java create mode 100644 src/main/resources/data.conf create mode 100644 target/classes/Main.class create mode 100644 target/classes/RandomMatch.class create mode 100644 target/classes/SendMail$1.class create mode 100644 target/classes/SendMail.class create mode 100644 target/classes/data.conf create mode 100644 target/maven-archiver/pom.properties create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 target/weihnatchswichtelMaven-1.0-SNAPSHOT.jar diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..73f69e0 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,8 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..6e411fc --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..de9d2db --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..712ab9d --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..35f4d9b --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,14 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..e59dfef --- /dev/null +++ b/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + org.example + weihnatchswichtelMaven + 1.0-SNAPSHOT + + + 11 + 11 + + + + + com.sun.mail + javax.mail + 1.6.2 + + + + \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java new file mode 100644 index 0000000..3c7e740 --- /dev/null +++ b/src/main/java/Main.java @@ -0,0 +1,41 @@ + +public class Main { + + public static void main(String[] args) { + String[] people = new String[10]; + String[] mails = new String[10]; + people[0] = "Lukas 0"; + people[1] = "Jan 0"; + people[2] = "Ulrike 0"; + people[3] = "Petra 1"; + people[4] = "Dietmar 1"; + people[5] = "Lisa 1"; + people[6] = "Andreas 1"; + people[7] = "Annette 2"; + people[8] = "Julia 2"; + people[9] = "Mark 2"; + +// mails[0] = "contact@lukasmartin.eu"; +// mails[1] = "janmartin2@hotmail.de"; +// mails[2] = "monsterfamilie@gmx.de"; +// mails[3] = "petra.scheib@t-online.de"; +// mails[4] = "d-scheib@gmx.de"; +// mails[5] = "lisa.scheib92@gmx.de"; +// mails[6] = "andreas_goll@t-online.de"; +// mails[7] = "Annette-simon@t-online.de"; +// mails[8] = "Julia-Marie-simon@gmx.de"; +// mails[9] = "Marcschwarz77@gmail.com"; + + + RandomMatch rm = new RandomMatch(); + SendMail sm = new SendMail(); + String[][] test = rm.match(people); +// for (String[] strings : test) { +// System.out.println(strings[0].substring(0, strings[0].length() - 1) + ": " + strings[1].substring(0, strings[1].length() - 1)); +// } + sm.sendMail(test, mails); + + + + } +} diff --git a/src/main/java/RandomMatch.java b/src/main/java/RandomMatch.java new file mode 100644 index 0000000..edd6c47 --- /dev/null +++ b/src/main/java/RandomMatch.java @@ -0,0 +1,59 @@ +import java.util.Random; + +public class RandomMatch { + + /** + * @author Lukas Martin + * @param people {@code String} + * @info Assigns every person in {@param people} a correct counter part. + */ + public String[][] match(String[] people) { + Random random = new Random(); + int j = 0; + String[][] matches = new String[people.length][people.length]; + for(int i = 0; i < matches.length; i++) { + matches[i][0] = ""; matches[i][1] = ""; + } + for(int i = 0; i < people.length; i++) { + int rand = random.nextInt(10); + if(j > 10000) { + for(int k = 0; k < matches.length; k++) { + matches[k][0] = ""; matches[k][1] = ""; + i = 0; j = 0; + } + } + if(checkRelation(people[i], people[rand]) || isAlreadyDrawn(matches, people[rand])) { + i = i - 1; j = j +1; + } else { + matches[i][0] = people[i]; matches[i][1] = people[rand]; + } + } + return matches; + } + + + /** + * @author Lukas Martin + * @param person0 {@code String} + * @param person1 {@code String} + * @return {@code true} if the two given people are related. + */ + private Boolean checkRelation(String person0, String person1) { + return person0.substring(person0.length() - 1).equals(person1.substring(person1.length() - 1)); + } + + /** + * @author Lukas Martin + * @param matches {@code String[][]} + * @param person {@code String} + * @return {@code true} if person is already drawn. + */ + private Boolean isAlreadyDrawn(String[][] matches, String person) { + for (String[] match : matches) { + if (match[1].equals(person)) { + return true; + } + } + return false; + } +} diff --git a/src/main/java/SendMail.java b/src/main/java/SendMail.java new file mode 100644 index 0000000..72f3b54 --- /dev/null +++ b/src/main/java/SendMail.java @@ -0,0 +1,59 @@ +import javax.mail.*; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.util.Properties; + +public class SendMail { + + + /** + * @author Lukas Martin + * @param matches {@code String[][]} + * @param mails {@code String[]} + * @info Uses the params to send mails to the chosen people. + */ + public void sendMail(String[][] matches, String[] mails) { + //authentication info + final String username = "weihnachtswichteln0@gmail.com"; + final String password = "fmrvjhogruskvjkj\n"; + String fromEmail = "weihnachtswichteln0@gmail.com"; + String toEmail = "lukas.martin155@outlook.de"; + + Properties properties = new Properties(); + properties.put("mail.smtp.auth", "true"); + properties.put("mail.smtp.starttls.enable", "true"); + properties.put("mail.smtp.host", "smtp.gmail.com"); + properties.put("mail.smtp.port", "587"); + properties.put("mail.smtp.ssl.trust", "smtp.gmail.com"); + + Session session = Session.getInstance(properties, new javax.mail.Authenticator() { + protected PasswordAuthentication getPasswordAuthentication() { + return new PasswordAuthentication(username, password); + } + }); + //Start our mail message + for(int i = 0; i < matches.length; i++) { + MimeMessage msg = new MimeMessage(session); + try { + msg.setFrom(new InternetAddress(fromEmail)); + msg.addRecipient(Message.RecipientType.TO, new InternetAddress(mails[i])); + msg.setSubject("Weihnachtswichteln 2023"); + msg.setText("Hallo liebe/r " + matches[i][0].substring(0, matches[i][0].length() - 2)+ "," + "\n" + + "\n" + + "Dein Match für das diesjährige Wichteln ist " + matches[i][1].substring(0, matches[i][1].length() - 2) + "." + "\n" + + "\n" + + "Mit freundlichen Grüßen \n" + + "Dein Wichtelsystem" + "\n" + + "\n" + "\n" + + + "--Bitte beachtet, dass ungefähr für 25€ gewichtelt wird--"); + Transport.send(msg); + } catch (MessagingException e) { + e.printStackTrace(); + } + } + + + + } +} diff --git a/src/main/resources/data.conf b/src/main/resources/data.conf new file mode 100644 index 0000000..8c0727d --- /dev/null +++ b/src/main/resources/data.conf @@ -0,0 +1 @@ +amount: 10 diff --git a/target/classes/Main.class b/target/classes/Main.class new file mode 100644 index 0000000000000000000000000000000000000000..864de5249a112054e19c28b4029ce8e9281d6daf GIT binary patch literal 1350 zcmZuxTW=dh6#mwi-Lc~|?&Ru*OUgBl*GU^nLz57kULma0%a%weLNKwX&L->KXuXDt zCtmx2gv1N{3|?A^3Vr}T3h|BOsHCzV&YU@O&Ue0Z@&5DgpML{b!{Z{}!ZimU3tSgi z6Zk~nhQPYOhQOx4rvh67p9wSswgqkq+!DAga7W;-z&(M_1-@{wQ^c%+`Lc)#u9=Hx zw5Eey2lp-5n?V$$TNbj5)jbQjTX9=knDBx~@AkU~I(e)PLRzF3w^X>NlEB=D#$0+B z^oZd#RS<13y35nT%;LUxq`p@xp^7>yewqYPXJde_k`DbRM?4edM8_v4Rh}pz-7-nn z!npTHMeVrTRB7vwDKb48i=MBeHj{=XX{vjvg{l3Ks6{{SCoO$9FvtbNbJ(0t}R6_V-D_r~fg47S+t z{yAc6C5bAz(#EGf{#_p?N^G`5)h2bKJ|w#G!Jj8@Fqjs0()?Cseg zOL%~XB|L)9iJCE;8_xZMBi-VVxf)yp3)PVuHhKd@Z@4QKmKI03jM$s%9xmfe{sGM| z1Iug+j7Ab`sqb$gh?`Gw=@8;wM-_6Sj z-?e4gcO7}rcZHO`%cx08M@~@+IZauRGyY4=e*FS-yDw4Ud1*aYuRX{7dcKmY_F{~sm9T_yT)_og#{@P}#!X1v!z4UR;UT86$B2D? za=ybHp75&^;t~=fJY{EpVo#qD=@+)?H!Kbsw{_Ya-m1)P<5y;=vUMf=j2g8JqbhJw ZXB(d}-!i9>BSL{Ju9B;TRmNrT(SP7!Cq4iG literal 0 HcmV?d00001 diff --git a/target/classes/RandomMatch.class b/target/classes/RandomMatch.class new file mode 100644 index 0000000000000000000000000000000000000000..a3ce48d90deca51adf21fe5a71018f63d9089d15 GIT binary patch literal 1697 zcmZuxO>Y}j6g|%~_H!na?>McKrb%f_ZBNqFA$3Vo0%=Pj#c5HEBDG<`*dCHeoN;i* zrLZmwenKm;sgSY-7H-9dHwYH|2!zC+KoPW@H)E%UM%KK!@4b7^J@?!@{_WZKO#qj$ zYM>7nB(eq~>U}znS!KRvpciunE+VI_O9o!Yyjm92vZyXDOS~bmBoMpodah4HOQqKY z^sCjfBhZ(3J?Cb9r|8r^u!|L*4CbpPyRv52T(xf<>i(v?C(x6>ZF}YF&Z_N~HWvk= zJIWA9r`GdZ_C0&1VtX4i1;6Hc8;j}nBMt?G%V&kpHc8Y7M{2uHbywvcIx-@rysA5j zT9BmfyOo)c2swx?0U7Xc$Z+`Rq&)@SE^V*cyFon?Cs|8r(BuH9NQxYx$D&Ss@{b|ik&(fUS|b*-M!^X&9Td$U8~ujGV5aMD8d~{+G2Jb zy~s=9R9*q2P_5TW&UII**x%8l^GY!j{TSf+|J4(Ki8t|V%fwMTs2`~O5&P{ zw{hLXJ9yW`3T~Kq4|##^4(v8!Q0%SZmQ(UstLNPJS3FvJY9-A+54;$R7I6Wy7)rNh zSL!6piM;zCu&`(jM#b?qd=3~r2-US$FYX1yC6FL`hbAqV7~*_Vw=0~4L}x!kc8e;F zyr+`h`dDBjb+;3uEh|p(Q|jY)2k0Oz3~(LfZia74hG^yq#J4me7~&cW4mAwZHbVy_ zFv6X{F&yX0VDXe-ai0D910r{xKwH(8tftlc1$tyb*K*NBG^sZqV=SpBqO;myv=A6N zjR#S&|NPIu#iGX-Q~gE*v0Q9?;9URLu(X^^$RKu-A+jASXH_htw511<0KaD}0$YjL zYy+}^_#+Hul6tuB;{GA}6H&dKi;n9bE$t&2@=!4?CdxJB@_ADKhLvbR^)~`(x>=hE z13grs7Za2(tNxED-7@c2==nZx)~U-5m8sFbk0c&p6#F=VpXm29qm+UlqKm3c@^%za z6mS+}v?MWndX7@<1$^1MrJ60Jl{Jo&)H;qPktW$213$8rqvSb^@9+vvvjbj5VI=H?$97vcbCPMHTt9FRjqeH~#JafcWhF~%&b0Yfi0&^qDM*7IT)FstjRF!knR{#NE4J$$k2-L$M3F{<}21Hk*kA(gh6VvR+ zLM$26XPMP}h`6pY1{3m!)=D1sWrWOuIjVh;D&$zh9O35!G8tAe!ofa9#bPSWA+2nn dlcJTybU;ff)(hU^Dmw2Q>g#| literal 0 HcmV?d00001 diff --git a/target/classes/SendMail$1.class b/target/classes/SendMail$1.class new file mode 100644 index 0000000000000000000000000000000000000000..bc65b5a5dd93184c56eeec549bd7d6c3be434378 GIT binary patch literal 770 zcmah{T~8B16g|_{?y@XWs$x+qAVsz{q41&)7@{E>O$sroX<~R9w!`j}?M$*eZT(sL zU`RCa2l%6mch*HnAaRqubMM)6&;8i>_51rz051^C!NEfhE*?2(x_Inj)k7I;4%Qt! zVW^r|X006tuh$o9c*te4N9aqbq}gX!2rl9FfT41rhk{|TCzUvwj88=Rk)I@l)O$MQ z$$+QQ#syfh;tc+Kr9^s=@GKKH{3qGkrCKYIFdyjCOsB)w6B7$%WXO%wieWQo_eOlm zKX=E}SodZcX?T4-Nkj2g+Ex}W2HCc$)a)A-COVTUIus_>LkAl^TG(W8k3?qP>CE_; zgXd!&PZ`$#TackS6Eapjj7>I^WJRKOUPZRY?NE;ymQKg%bQJ3-on&Xz(b*^$-?EJs zOK$BlG_F*-GPzEvvkM-%S&_of3678ReRLD9qHf=$G}PV=ko{HVz}l_gdct+2J-`}W z6qoJ{tJUl>$Scu14+Zk4F3nppX!zRt#eerP+Y>L+G?(5s}rwKtKeSFTE=}kD`;Q^4|1e|B|1G~ IJ9N_X2Uh2=q5uE@ literal 0 HcmV?d00001 diff --git a/target/classes/SendMail.class b/target/classes/SendMail.class new file mode 100644 index 0000000000000000000000000000000000000000..e51f25da6eb14046d033c2217929fd603afe09a3 GIT binary patch literal 3100 zcmaJ@+jARN8UG#Yva7YyI7*yUDQT6&1t+oP#MEgjmy*Pd8y71nwTUq)(6w|dttIV> z-6J~*g_gElS}x^U%4LQbhMB(b5+0mR(&W)I^NitYV1AV z`ObH~>+kz^-~Zpu_W(SK-&+{M(4ATfO8l0b6Gt4e{LvyLk-bXrT&pSPEq zaGP2<#efoV!wyZRL0_wI^CZP2gZ$&T*CWU8%;(PD_TDBqfEz z{}}o3;2Y5S zpYu9?MNT`qP&+niQPkcF^k0yHDob6;Ad64qGXe+Jq*Hh8N?iqO4xh5=9zR{vju$Il zOJLV>%U@lodo{lkG*(v{E0)0iW~X5X#g@%T+!GTMr@fA9dS0Wb;j*Wjm@QEW+}BkZ zv{bujcT}C|QhrBfq0kY?ZypAUT2(VBN;d>s>|)&u6g72~#9WL?v^}2^iHTE>vW79G zL9s=(o1Vlxrw&Qz;DYotZ5W${hCVBp(X zyoB#$@iJZ!*tf7P)rIln-H=nB zOMEOis!mFyOK~pV1KTLj7)Ce1u$>j6V_se%_Pet!!qvQQyFoZ_lKM5b6+2PMh#kH{ z+f2CXPHkS(V2?LgBx&GRy20NP7~1Sn$6fUrGJ0Kxflb>Lg8!<4-|~$;%dy*O3%nIa zc62Em9_MZ5UIs&Hrw*}P8 zH-QH~S&pABhxrAie|-@8{l(`ncVk=y*VNG)5ZAlMNBB&4nQ0s)oec$W3?tkLjH1XV zFZY!wmnH9`T;GLUqLj?_l~TE6DSZp6#T!VMjJ%OEa^^ZR3#6>ORDUiT@pk0yi>RF& zyjvJpq%*tTL9S#bPG$x($KLxRUc80fi+S?~_LQu=bqj-w`P2>UUB|w>^%vZ)86$(4 z@h&T$w{rW}@j%`>Mpj}x5iaZaRI0j;1A3PXnaS}D=1n{ZtmC1)^$rSe!z%UX``2;k z)r@%i&P&%BuZzFqpG;!{IzP+E^SO(=91MOW_G1rrVlVE;J{;n6gy$!*AE)sEp2h(z zGW``6z-8)RVDjH!{@$dfo6PE8xxSBa>Yt#6&*B3-f)6SGAC$WJzs4MYz)##U9H$)@ z4V<8~h3D`Jr5`~?S0Jj6rY2}vm-HikH=km;6ZkhCqpk!!{ScF+lGO7rJWeV_um6G1 zkxJ9+zu^gdo>Gf^nV!ZOm^e#4^GM#IG0VVV15*Z`G;l8VmohL-b9c}||0jv)GzkL- zKSugv+D+mq>h8mN%y3Q8;{iNOYCruP;HrPm<6C%<@x6)P;MdG(jXaZ*b^bg52U@pC AH~;_u literal 0 HcmV?d00001 diff --git a/target/classes/data.conf b/target/classes/data.conf new file mode 100644 index 0000000..8c0727d --- /dev/null +++ b/target/classes/data.conf @@ -0,0 +1 @@ +amount: 10 diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties new file mode 100644 index 0000000..17df8b4 --- /dev/null +++ b/target/maven-archiver/pom.properties @@ -0,0 +1,5 @@ +#Generated by Maven +#Wed Nov 10 19:44:59 CET 2021 +groupId=org.example +artifactId=weihnatchswichtelMaven +version=1.0-SNAPSHOT diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..db04741 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,3 @@ +F:\1_java\weihnatchswichtelMaven\src\main\java\SendMail.java +F:\1_java\weihnatchswichtelMaven\src\main\java\Main.java +F:\1_java\weihnatchswichtelMaven\src\main\java\RandomMatch.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/weihnatchswichtelMaven-1.0-SNAPSHOT.jar b/target/weihnatchswichtelMaven-1.0-SNAPSHOT.jar new file mode 100644 index 0000000000000000000000000000000000000000..03656889302406149a346ddca95d43efcf7ea3c6 GIT binary patch literal 6092 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