esoe
3 years ago
15 changed files with 318 additions and 1 deletions
@ -1,4 +1,4 @@ |
|||||||
package ru.egspt; |
package ru.egspt; |
||||||
public class Data { |
public class Data extends UserListModel{ |
||||||
|
|
||||||
} |
} |
||||||
|
@ -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(""); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
package ru.egspt; |
||||||
|
|
||||||
|
import java.util.ArrayList; |
||||||
|
|
||||||
|
public class TagModel { |
||||||
|
private ArrayList<String> tags; |
||||||
|
public TagModel(){ |
||||||
|
tags = new ArrayList<>(); |
||||||
|
} |
||||||
|
/** |
||||||
|
* @param tags the tags to set |
||||||
|
*/ |
||||||
|
public void setTags(ArrayList<String> ts) { |
||||||
|
this.tags = ts; |
||||||
|
} |
||||||
|
/** |
||||||
|
* @return the tags |
||||||
|
*/ |
||||||
|
public ArrayList<String> 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<String> 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); |
||||||
|
} |
||||||
|
} |
@ -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); |
||||||
|
} |
||||||
|
} |
@ -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; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,65 @@ |
|||||||
|
package ru.egspt; |
||||||
|
|
||||||
|
import java.sql.ResultSet; |
||||||
|
import java.util.ArrayList; |
||||||
|
|
||||||
|
public class UserListModel { |
||||||
|
private ArrayList<User> users; |
||||||
|
public UserListModel(){ |
||||||
|
users = new ArrayList(); |
||||||
|
} |
||||||
|
/** |
||||||
|
* @return the users |
||||||
|
*/ |
||||||
|
public ArrayList<User> getUsers() { |
||||||
|
return users; |
||||||
|
} |
||||||
|
/** |
||||||
|
* @param users the users to set |
||||||
|
*/ |
||||||
|
public void setUsers(ArrayList<User> users) { |
||||||
|
this.users = users; |
||||||
|
} |
||||||
|
//берем список пользователей из базы (сразу после подключения к базе данных)
|
||||||
|
public void setUsersFromBase(Base base){ |
||||||
|
ArrayList<User> 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<User> getUsersByTag(ArrayList<User> ul, TagModel tm){ |
||||||
|
ArrayList<User> ubt = new ArrayList<>(); |
||||||
|
//ArrayList<User> 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; |
||||||
|
} |
||||||
|
} |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue