From c268a3dd62538196c539583b6a4eaddb323fc7ba Mon Sep 17 00:00:00 2001 From: esoe Date: Fri, 13 May 2022 10:05:38 +0300 Subject: [PATCH] qqq --- src/main/java/ru/egspt/Base.java | 15 ++++ src/main/java/ru/egspt/Data.java | 2 +- src/main/java/ru/egspt/TagControls.java | 39 ++++++++ src/main/java/ru/egspt/TagModel.java | 52 +++++++++++ src/main/java/ru/egspt/TagPane.java | 95 ++++++++++++++++++++ src/main/java/ru/egspt/User.java | 51 +++++++++++ src/main/java/ru/egspt/UserListModel.java | 65 ++++++++++++++ target/classes/ru/egspt/App.class | Bin 1382 -> 1558 bytes target/classes/ru/egspt/Base.class | Bin 2701 -> 3168 bytes target/classes/ru/egspt/Data.class | Bin 255 -> 261 bytes target/classes/ru/egspt/TagControls.class | Bin 0 -> 1632 bytes target/classes/ru/egspt/TagModel.class | Bin 0 -> 1791 bytes target/classes/ru/egspt/TagPane.class | Bin 0 -> 5179 bytes target/classes/ru/egspt/User.class | Bin 0 -> 1078 bytes target/classes/ru/egspt/UserListModel.class | Bin 0 -> 2935 bytes 15 files changed, 318 insertions(+), 1 deletion(-) create mode 100644 src/main/java/ru/egspt/TagControls.java create mode 100644 src/main/java/ru/egspt/TagModel.java create mode 100644 src/main/java/ru/egspt/TagPane.java create mode 100644 src/main/java/ru/egspt/User.java create mode 100644 src/main/java/ru/egspt/UserListModel.java create mode 100644 target/classes/ru/egspt/TagControls.class create mode 100644 target/classes/ru/egspt/TagModel.class create mode 100644 target/classes/ru/egspt/TagPane.class create mode 100644 target/classes/ru/egspt/User.class create mode 100644 target/classes/ru/egspt/UserListModel.class diff --git a/src/main/java/ru/egspt/Base.java b/src/main/java/ru/egspt/Base.java index da85056..0f251e9 100644 --- a/src/main/java/ru/egspt/Base.java +++ b/src/main/java/ru/egspt/Base.java @@ -1,6 +1,8 @@ package ru.egspt; import java.sql.Connection; import java.sql.DriverManager; +import java.sql.ResultSet; +import java.sql.Statement; public class Base { private Connection connection = null; @@ -71,5 +73,18 @@ public class Base { } } } + public ResultSet querry(String querry){ + ResultSet rs = null; + try{ + Statement stmt = getConnection().createStatement(); + rs = stmt.executeQuery(querry); + } + catch (Exception ex){ + System.err.println ("Подключение к серверу баз данных не установлено ... "); + ex.printStackTrace(); + System.out.println (ex); + } + return rs; + } } diff --git a/src/main/java/ru/egspt/Data.java b/src/main/java/ru/egspt/Data.java index 5f80edf..b5cfe02 100644 --- a/src/main/java/ru/egspt/Data.java +++ b/src/main/java/ru/egspt/Data.java @@ -1,4 +1,4 @@ package ru.egspt; -public class Data { +public class Data extends UserListModel{ } diff --git a/src/main/java/ru/egspt/TagControls.java b/src/main/java/ru/egspt/TagControls.java new file mode 100644 index 0000000..323dabc --- /dev/null +++ b/src/main/java/ru/egspt/TagControls.java @@ -0,0 +1,39 @@ +package ru.egspt; + +public class TagControls { + //добавляем тег в модель + public static void addTag(Base base, TagModel tm, TagPane tp){ + //тег в модель + tm.addTag(tp.getCurrentTag()); + //обновляем текстовую область + tp.updateTagArea(tm); + //tp.getTagArea().update(tp.getTagArea().getGraphics()); + tp.getCurrentTagField().setText(""); + //выводим пользователей в консоль + UserListModel ul = new UserListModel(); + ul.setUsersFromBase(base); + int i = 0; + while (i < ul.getUsers().size()){ + System.out.println(ul.getUsers().get(i).getLogin()); + i++; + } + } + //добавляем тег в модель + public static void addTag(TagModel tm, TagPane tp){ + //тег в модель + tm.addTag(tp.getCurrentTag()); + //обновляем текстовую область + tp.updateTagArea(tm); + //tp.getTagArea().update(tp.getTagArea().getGraphics()); + tp.getCurrentTagField().setText(""); + } + //удаляем тег из модели + public static void removeTag(TagModel tm, TagPane tp){ + //удаляем тег из модели + tm.removeTag(tp.getCurrentTag()); + //обновляем текстовую область + tp.updateTagArea(tm); + //tp.getTagArea().update(tp.getTagArea().getGraphics()); + tp.getCurrentTagField().setText(""); + } +} diff --git a/src/main/java/ru/egspt/TagModel.java b/src/main/java/ru/egspt/TagModel.java new file mode 100644 index 0000000..7a64663 --- /dev/null +++ b/src/main/java/ru/egspt/TagModel.java @@ -0,0 +1,52 @@ +package ru.egspt; + +import java.util.ArrayList; + +public class TagModel { + private ArrayList tags; + public TagModel(){ + tags = new ArrayList<>(); + } + /** + * @param tags the tags to set + */ + public void setTags(ArrayList ts) { + this.tags = ts; + } + /** + * @return the tags + */ + public ArrayList getTags() { + return tags; + } + public void addTag(String t){ + int i = 0; + boolean b = true; + while (i < tags.size()){ + if (tags.get(i).equals(t) ){ + b = false; + } + i++; + } + if (b){ + tags.add(t); + } + } + /** + * создаем новый список тегов + * пишем в него теги старого списка, если они не совпадают с заданным + */ + public void removeTag(String t){ + System.out.println("Удаление тега: " + t); + ArrayList newTags = new ArrayList<>(); + int i = 0; + while (i < tags.size()){ + if (tags.get(i).equals(t) ){ } + else{ + newTags.add(tags.get(i)); + } + i++; + } + setTags(newTags); + } +} diff --git a/src/main/java/ru/egspt/TagPane.java b/src/main/java/ru/egspt/TagPane.java new file mode 100644 index 0000000..f161602 --- /dev/null +++ b/src/main/java/ru/egspt/TagPane.java @@ -0,0 +1,95 @@ +package ru.egspt; + +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JLabel; +import javax.swing.JPanel; +import javax.swing.JTextArea; +import javax.swing.JTextField; +import javax.swing.WindowConstants; +import javax.swing.border.LineBorder; +import javax.swing.border.TitledBorder; +import java.awt.Color; + +public class TagPane extends JPanel{ + private JLabel newTagLabel = new JLabel("Текущий тег: "); + private JTextField CurrentTagField = new JTextField(25); + private JButton addTagButton = new JButton("Добавить"); + private JButton removeTagButton = new JButton("Удалить"); + private JTextArea tagArea = new JTextArea(); + public TagPane(Base base, TagModel tm){ + this.add(newTagLabel); + this.add(CurrentTagField); + this.add(addTagButton); + addTagButton.addActionListener(e -> TagControls.addTag(base, tm, this)); + this.add(removeTagButton); + removeTagButton.addActionListener(e -> TagControls.removeTag(tm, this)); + //заполняем tagArea + tagArea.setText("Перечень тегов:"); + int i = 0; + while (i < tm.getTags().size()){ + tagArea.append(tm.getTags().get(i)); + i++; + } + this.add(tagArea); + TitledBorder border = new TitledBorder(new LineBorder(Color.black), "tag-controls", TitledBorder.CENTER, TitledBorder.CENTER); + this.setBorder(border); + } + public TagPane(TagModel tm){ + this.add(newTagLabel); + this.add(CurrentTagField); + this.add(addTagButton); + addTagButton.addActionListener(e -> TagControls.addTag(tm, this)); + this.add(removeTagButton); + removeTagButton.addActionListener(e -> TagControls.removeTag(tm, this)); + //заполняем tagArea + tagArea.setText("Перечень тегов:"); + int i = 0; + while (i < tm.getTags().size()){ + tagArea.append(tm.getTags().get(i)); + i++; + } + this.add(tagArea); + TitledBorder border = new TitledBorder(new LineBorder(Color.black), "tag-controls", TitledBorder.CENTER, TitledBorder.CENTER); + this.setBorder(border); + } + /** + * @return the newTagField + */ + public String getCurrentTag() { + return CurrentTagField.getText(); + } + /** + * @return the tagArea + */ + public JTextArea getTagArea() { + return tagArea; + } + public void updateTagArea(TagModel tm){ + tagArea.setText("Перечень тегов:"); + int i = 0; + while (i < tm.getTags().size()){ + tagArea.append("\n" + tm.getTags().get(i)); + i++; + } + tagArea.repaint(); + } + /** + * @return the currentTagField + */ + public JTextField getCurrentTagField() { + return CurrentTagField; + } + public static void main( String[] args ){ + //Base base = new Base(); + //Data data; + TagModel tm = new TagModel(); + System.out.println( "Проверка работоспособности класса TagPane ..." ); + JFrame mainframe = new JFrame("TagPane-test"); + TagPane tp = new TagPane(tm); + mainframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + mainframe.add(tp); + mainframe.setSize(320, 240); + mainframe.setVisible(true); + } +} diff --git a/src/main/java/ru/egspt/User.java b/src/main/java/ru/egspt/User.java new file mode 100644 index 0000000..57ba48e --- /dev/null +++ b/src/main/java/ru/egspt/User.java @@ -0,0 +1,51 @@ +package ru.egspt; + +public class User { + int id; + String login; + String mail; + + public User(){} + public User(int id, String login, String mail){ + setId(id); + setLogin(login); + setMail(mail); + } + /** + * @param id the id to set + */ + public void setId(int id) { + this.id = id; + } + /** + * @return the id + */ + public int getId() { + return id; + } + /** + * @param login the login to set + */ + public void setLogin(String login) { + this.login = login; + } + /** + * @return the login + */ + public String getLogin() { + return login; + } + /** + * @param mail the mail to set + */ + public void setMail(String mail) { + this.mail = mail; + } + /** + * @return the mail + */ + public String getMail() { + return mail; + } + +} diff --git a/src/main/java/ru/egspt/UserListModel.java b/src/main/java/ru/egspt/UserListModel.java new file mode 100644 index 0000000..b87b7f5 --- /dev/null +++ b/src/main/java/ru/egspt/UserListModel.java @@ -0,0 +1,65 @@ +package ru.egspt; + +import java.sql.ResultSet; +import java.util.ArrayList; + +public class UserListModel { + private ArrayList users; + public UserListModel(){ + users = new ArrayList(); + } + /** + * @return the users + */ + public ArrayList getUsers() { + return users; + } + /** + * @param users the users to set + */ + public void setUsers(ArrayList users) { + this.users = users; + } + //берем список пользователей из базы (сразу после подключения к базе данных) + public void setUsersFromBase(Base base){ + ArrayList us = new ArrayList<>(); + String querry = "SELECT id, username, email FROM mdl_user"; + ResultSet rs = base.querry(querry); + try { + while (rs.next()){ + int id = rs.getInt("id"); + String login = rs.getString("username"); + String mail = rs.getString("email"); + User u = new User(id, login, mail); + us.add(u); + } + } + catch (Exception ex){ + System.err.println ("Подключение к серверу баз данных не установлено ... "); + ex.printStackTrace(); + System.out.println (ex); + } + setUsers(us); + } + /** + * Возвращает список пользователей, отфильтрованный по заданному тегу + * @return + */ + public ArrayList getUsersByTag(ArrayList ul, TagModel tm){ + ArrayList ubt = new ArrayList<>(); + //ArrayList ulBuf = ul; + int j = 0;//номер записи в списке тегов + //перебираем теги + while (j < tm.getTags().size()){ + int i = 0;//номер записи в списке пользователей + while (i < ul.size()){ + if (ul.get(i).getLogin().contains(tm.getTags().get(j))){ + ubt.add(ul.get(i)); + } + i++; + } + j++; + } + return ubt; + } +} diff --git a/target/classes/ru/egspt/App.class b/target/classes/ru/egspt/App.class index e5cb5d487fb1756b2b2322addf3a81db7a865e7f..da2ad6ddc4209c1349ab60763160c6a040f291cb 100644 GIT binary patch delta 841 zcmZ9H+fEZ<6ouD6RHhyON(V|yIiD#lIA{??JXTcHqD8Q^Dkh_jq^2#{RugZmZ=hrn zFO8SpVx&!M!UOmeTzT&c7}pd6#Qd3^eOR-58C2mH@D|?~ z)>>(!Y|NWwQ$riP9tZ>_RJb?4Er{ODKOOEK^ho2UFhA_MuMls>+niLobCk{k$vt-R3mfY0%XKp;D@f<^93a13L zl2uM+OW9{ROTZPj-wRz#+n+=*I3wW6o7uw4qM5fe#Bk1m%-TDm(;dT{#06Zmcg3(b zh9PHsMdB*rwyyY_VleEmGTXa=+bV9+&nxq-Y2?hpnz8(@RJQUGcaX3vO24>ke^oxl zlen*9NuaGE%&r^BVzy9TE*CA6+GWfNs2ffzS8$G}XMvQ&X=qONP@>y@-IS{=p@}8X z6{$f+>Nt_9!M6>aX&ck_Z3MPBR?xxN3KyfscpNQ|=wu#ZNA9g)-Nj0vn|(nI@EpyJ z*(CS%WFkMH*U(qRV4C$P>k9Nb!UPc?ZS-ALocy2I0w3QPbWHGuL*nECk+$}Uc^Xnk z9;qXiX+2ZJ*+jItiu2J(6_?UcUHPDk-6}3e3A(mbp>oe#Cocv3+|y2P0mdNu=z5qu zhZxw~x=+;TbO!TedT<>#_Svh{IPB1O+-zN};$9ts-c}N{_JCjd&{zP+DD0kr8$I;a aOR_^7IKm1cgGUtk$aqYi;CsSa!RkLQb&iVw delta 740 zcmZ9K+int36o&sjlv2iRIZqF?6p@ZFqmEinwVq0A1w_S=*l^*+q@6YxKxFWEgKuD( zNxbwCOf)(qlK23<^9{W61-$UixHgd1n91zPUhCig_phCK$A8N5{-3Yk0G!8zJ^B6K ze!e)v5NSU%tX;d+F;=&>EZZ)dO-sf!;v9a=F@!Uv14YiXt(ELU84L-I1tb|f=Jqy& zmT{i4sMBIGSu|4|$B}k^vDDHDa(HY$H(wg|i&}HnC~maPhBbjKgTGLwv8uk4Q1;JA((j@Of9tB&e9gZpIx2N9C!9xuosP(|LJ|?R@1iv8kk!lhmv`&%&kTHfM2+%i5 zJ3c&v7!=wuOi`UtAIOtV_$lNyUDZA#)WfWc`Au!i#j*cg16>5^i6Qilt#V*XVMn$N z3L%m0VjpTXoasR;>EkX=>6(kPn|erk6JkGHoYRSN@sKi$aXJ(kqz;g+$h$yk)AWOg zIh5|ubwrdAM;4ce>BnU(kJyh$BiJ*aa3y@xMXnDcIt&N$$DleCK@MckX-){Rw-1?SB6Or1`Mz`Q-FC z*XxF9ZYsuYzX~?5uNE7{RBgSIS~P0)ij_00%n)TZylnDN;VYR&(K2$D9BW3^QjCnp zdPCj13_a$l&J#tTOW8%eG-)Wj#)eUM9=}Qo@+xl(CejFUIBd%FBX5V$qIHHmtv%g55kUV7Xy3E*dVLyRK9{UKVh%?0` zr-lEFoM*{!j*Cn)$Bez@{(SfXy5v4C5#};uT#>0+(VP>_tDNMTUGPjc8z_e42mVA8 ze~?t!i59DE9w_FM@ivb%vR@gU-(e|`Z*e}^;?@pR67D3v$*?9%j8b5Ln2bkddB{rj z23~Fowjk)DSjdTmC6Qki<9Q~eD=jPLMNtX~NjtZ?Y}BEQ^Ni;by|VEOUJ7|w-fIOz dZug{f1nsZz4(KSIS2}Mxu`n#N?*!F&{|_TmiAw+g delta 211 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 literal 0 HcmV?d00001 diff --git a/target/classes/ru/egspt/UserListModel.class b/target/classes/ru/egspt/UserListModel.class new file mode 100644 index 0000000000000000000000000000000000000000..defa32722575861e44c351b7b0bcaba725ee1b0b GIT binary patch literal 2935 zcma)7TUQfT6#gb8Oo+o(LW$NkS}%kEsaO$-qJq%U2CxLMNU0sdh=aLcGNEE`UTa%h zdwFYLy87g+x+GLtvby@%z9fIAtJQvIh6Dn6=wgwXIcJ}5@BQs>@AK#Lr>g+oz>hL) z5*m`}fHs?&Hv(fREg8~N#$aMbi^{M|sF_n2)Id~?&jyC4=d_3+!I7p_N`gCN?xhVq z8aS0qs*B=eP(npmpN*?VI;lz6U&`iKsK{Zkn}^De>2clYmQdE@8<$}3Wdtsip;AEw zTr#R9Y%k%?g(_55Kti1Y2g)T>hxE8Ml#Wen$x(GW$`I;8iHI5r4 zSR6?qbq3^|)eJ!gtzK&Kl}dv~O{I5ACFo2Q@EV&+!il_nCAYTX3EPI^#1`lC$<^dt z^(Pat9yKLMXj;!ytOR}IPV8m^;l5B`@2FRwY4M7(#?_eC;?-iR9`*K*3=eu^Gtu*6 z!-dzdPsUyem4)I7AO-tzfaSZK){@CZ!HAWcshF^l)Z??kHTF`Mqk$1Em5v%=%?LW- zlVH7^Z_RhvR?V{1>hlt;yz3%@}Lz2rC93h z)?l4DLW!FU$T+$&-7%AfP6UM{kBL+VwjSTQ;u{wt?N)FCCn;}rW@b|!R$m2u=S1W^ z3VLyx4G`C^FkyDXxeD~-Eg5eXHDh=&WoR)419+QO~Gm6Z}zD-cRjn5yOw<D040s?JI{QF3ks*Im=f9P0UI+%mP* zk_cNT&;NzodQ!B3p&*R~Dwgq!5)G`)h7A`?(1lK1QLu=s))Wp|l-B2G?Z(mK!YBAl z#-|c$3oPeTRq#0)DLlI3QcA{k&dl}etoNdt3~QWQ@d$64IBqJqh1+x)NyH6RkF(G_ zH;#;r_H0&>%^d|_;wx4=rC;TcWwTNOwloWGGh!5S39e|Bo@VOO9RGC*u5coqjA;G3 zc~uF46fU7Q5i536uw}fgi79S4K4pH{;N%wv9E6~^aixb=5}!5A%TStEP&KiPnkCde zG_AMux5~tE!p>9GJXg;(#X18w8u-Pl4voaNJa|mp09OUBqxmsvAMnKn0VVbyAqg*5%DZ^h3RSE)&5&Nft9&wb zDbBSDS}d$(Jy_=*^0#KNr^|jHT^@T~(-Sn?(Ba_g>rc>bLsvOpJFHiE1)URaho{^l zFQco=+2V0#aQv*t{sgBa{QTmN``FRtc!a*XcQP3CI5G%7!h7O5+1!%B2M-xV9mX-i z0cJO|>PIc3@i5LEjBh7*cQK<^;AO;q{&ujaeb|E#*T=D!C--5J_hD&` zZ!&U$g<@s}Mi%fPRC;t$vD4(oMh}Lea#ZNoL(D<9$|6& z_^)G*7?Z@kgedLu3|qKP;>PH=9`@&O%cznOm*MXS$rx>*_jz2Vg(Z`uSpyHnRn8Mr zYc&`u>md23%Q_tQ(e8JXt<>-6%-|zZ_OaV;eqPJq#!ski-LQT9>@A1ncK9>+;@1~{ z-Lgw=yEtHeW?F^(EQ;GH2jC!6I7Ih{sqGGueuM#cq8&$Z5<%XhM@aE;40C^yx37?D zw-sc8&MAD&6(Qv*+{HIc%84<2%e6A%j^G|iv=g}--L>W|G**nZGRI*!uQ;<;fMbKTgS$F literal 0 HcmV?d00001