/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package entity.system;
import entity.EntityTools;
import gui.GUITools;
import op.OPDE;
import op.tools.SYSTools;
import javax.persistence.EntityManager;
import javax.persistence.Query;
import javax.swing.*;
import java.awt.*;
import java.util.ArrayList;
/**
* @author tloehr
*/
public class UsersTools {
public static final short STATUS_INACTIVE = 0;
public static final short STATUS_ACTIVE = 1;
public static final short STATUS_ROOT = 2;
public static final int MAIL_UNCONFIRMED = 0;
public static final int MAIL_CONFIRMED = 1;
public static final int MAIL_NOTIFICATIONS_ENABLED = 2;
public static ArrayList<Users> getUsers(boolean inactiveToo) {
EntityManager em = OPDE.createEM();
Query query;
if (inactiveToo) {
query = em.createQuery("SELECT u FROM Users u WHERE u.status <> :status ORDER BY u.nachname, u.vorname ");
query.setParameter("status", STATUS_ROOT);
} else {
query = em.createQuery("SELECT u FROM Users u WHERE u.status = :status ORDER BY u.nachname, u.vorname ");
query.setParameter("status", STATUS_ACTIVE);
}
ArrayList<Users> list = new ArrayList<Users>(query.getResultList());
em.close();
return list;
}
public static String getFullnameWithID(Users user) {
return user.getName() + ", " + user.getVorname() + " [" + user.getUID() + "]";
}
public static ArrayList<Users> getUsers(String searchPattern, boolean inactiveToo) {
EntityManager em = OPDE.createEM();
Query query;
if (inactiveToo) {
query = em.createQuery("SELECT u FROM Users u WHERE u.status <> :status ORDER BY u.nachname, u.vorname ");
query.setParameter("status", STATUS_ROOT);
} else {
query = em.createQuery("SELECT u FROM Users u WHERE (u.uid LIKE :pattern OR u.nachname LIKE :pattern OR u.vorname LIKE :pattern) AND u.status = :status ORDER BY u.nachname, u.vorname ");
query.setParameter("status", STATUS_ACTIVE);
query.setParameter("pattern", EntityTools.getMySQLsearchPattern(searchPattern));
}
ArrayList<Users> list = new ArrayList<Users>(query.getResultList());
em.close();
return list;
}
public static ListCellRenderer getRenderer() {
return (jList, o, i, isSelected, cellHasFocus) -> {
String text;
if (o == null) {
text = SYSTools.xx("misc.commands.>>noselection<<");
} else if (o instanceof Users) {
text = o.toString();
} else {
text = o.toString();
}
return new DefaultListCellRenderer().getListCellRendererComponent(jList, text, i, isSelected, cellHasFocus);
};
}
public static boolean isAdmin(Users user) {
EntityManager em = OPDE.createEM();
Query query = em.createQuery("SELECT g FROM Groups g WHERE g.gid = 'admin' AND :user MEMBER OF g.members");
query.setParameter("user", user);
boolean admin = query.getResultList().size() > 0;
// OPDE.debug("Benutzer ist " + (admin ? "" : "kein") + " Admin");
em.close();
return admin;
}
public static Color getBG1(Users user) {
Color active = GUITools.getColor("CEF0FF");
Color closed = GUITools.getColor("C0C0C0");
if (user.isActive()) {
return active;
}
return closed;
}
public static boolean isQualified(Users user) {
boolean qualified = false;
for (Groups group : user.getGroups()) {
if (group.isQualified()) {
qualified = true;
break;
}
}
return qualified;
}
public static Users checkPassword(String username, String password) {
EntityManager em = OPDE.createEM();
Users user = null;
try {
Query query = em.createQuery("SELECT o FROM Users o WHERE o.uid = :uKennung AND o.md5pw = :md5pw");
query.setParameter("uKennung", username);
query.setParameter("md5pw", SYSTools.hashword(password));
user = (Users) query.getSingleResult();
} catch (Exception e) {
OPDE.info(e);
} finally {
em.close();
}
return user;
}
}