Merge branch 'master' of https://git.bukova.info/repos/git/isspst
Conflicts: src/main/java/info/bukova/isspst/data/Requirement.java
This commit is contained in:
@@ -8,10 +8,10 @@ import info.bukova.isspst.reporting.Report;
|
||||
import info.bukova.isspst.reporting.ReportMapping;
|
||||
import info.bukova.isspst.services.addressbook.AdbService;
|
||||
import info.bukova.isspst.services.buildings.BuildingService;
|
||||
import info.bukova.isspst.services.munits.MUnitService;
|
||||
import info.bukova.isspst.services.reqsubjects.MaterialService;
|
||||
import info.bukova.isspst.services.reqsubjects.ServiceItemService;
|
||||
import info.bukova.isspst.services.munits.MUnitService;
|
||||
import info.bukova.isspst.services.requirement.RequirementService;
|
||||
import info.bukova.isspst.services.requirement.RequirementBaseService;
|
||||
import info.bukova.isspst.services.requirement.RequirementTypeService;
|
||||
import info.bukova.isspst.services.users.RoleService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
@@ -72,7 +72,7 @@ public class Constants {
|
||||
new Module(MOD_MATERIAL, "Materiál", MaterialService.class),
|
||||
new Module(MOD_SERVICES, "Služby", ServiceItemService.class),
|
||||
new Module(MOD_WORKGROUPS, "Pracovní skupiny", WorkgroupService.class),
|
||||
new Module(MOD_REQUIREMENTS, "Požadavky", RequirementService.class),
|
||||
new Module(MOD_REQUIREMENTS, "Požadavky", RequirementBaseService.class),
|
||||
new Module(MOD_WORKFLOW, "Procesy schválení", RequirementTypeService.class)
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package info.bukova.isspst.dao;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
|
||||
public interface TripRequirementDao extends BaseDao<TripRequirement> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
package info.bukova.isspst.dao.jpa;
|
||||
|
||||
import info.bukova.isspst.dao.TripRequirementDao;
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
|
||||
public class TripRequirementDaoJPA extends BaseDaoJPA<TripRequirement> implements
|
||||
TripRequirementDao {
|
||||
|
||||
}
|
||||
@@ -86,4 +86,12 @@ public class Permission extends BaseSimpleData implements GrantedAuthority {
|
||||
}
|
||||
}
|
||||
|
||||
public PermissionType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
public void setType(PermissionType type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -30,10 +30,13 @@ public class RequirementBase extends BaseData {
|
||||
@Column(name = "DESCRIPTION")
|
||||
private String description;
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "CENTRE_ID")
|
||||
private Workgroup centre;
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinColumn(name = "WORKGROUP_ID")
|
||||
private Workgroup workgroup;
|
||||
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@LazyCollection(LazyCollectionOption.TRUE)
|
||||
private List<AuthItem> authorization;
|
||||
@Column(name = "STATE")
|
||||
@Enumerated(EnumType.ORDINAL)
|
||||
@@ -101,4 +104,12 @@ public class RequirementBase extends BaseData {
|
||||
this.state = state;
|
||||
}
|
||||
|
||||
public Workgroup getCentre() {
|
||||
return centre;
|
||||
}
|
||||
|
||||
public void setCentre(Workgroup centre) {
|
||||
this.centre = centre;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name = "TRIPREQUIREMENT")
|
||||
public class TripRequirement extends RequirementBase {
|
||||
|
||||
@Column(name = "TRIP_FROM")
|
||||
private String from;
|
||||
@Column(name = "TRIP_TO")
|
||||
private String to;
|
||||
@Column(name = "TRIP_DATE")
|
||||
private Date tripDate;
|
||||
|
||||
public TripRequirement() {
|
||||
this.setOwnedBy(new User());
|
||||
}
|
||||
|
||||
public String getFrom() {
|
||||
return from;
|
||||
}
|
||||
|
||||
public void setFrom(String from) {
|
||||
this.from = from;
|
||||
}
|
||||
|
||||
public String getTo() {
|
||||
return to;
|
||||
}
|
||||
|
||||
public void setTo(String to) {
|
||||
this.to = to;
|
||||
}
|
||||
|
||||
public Date getTripDate() {
|
||||
return tripDate;
|
||||
}
|
||||
|
||||
public void setTripDate(Date tripDate) {
|
||||
this.tripDate = tripDate;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package info.bukova.isspst.filters;
|
||||
|
||||
import info.bukova.isspst.DateTimeUtils;
|
||||
import info.bukova.isspst.StringUtils;
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
|
||||
import org.hamcrest.Description;
|
||||
import org.hamcrest.Factory;
|
||||
import org.hamcrest.Matcher;
|
||||
import org.hamcrest.TypeSafeMatcher;
|
||||
|
||||
public class TripRequirementFilter implements Filter<TripRequirement>
|
||||
{
|
||||
|
||||
private TripRequirement condition;
|
||||
|
||||
public TripRequirementFilter(TripRequirement cond)
|
||||
{
|
||||
this.condition = cond;
|
||||
}
|
||||
|
||||
private static class TripRequirementMatcher extends TypeSafeMatcher<TripRequirement>
|
||||
{
|
||||
|
||||
private TripRequirement condition;
|
||||
|
||||
public TripRequirementMatcher(TripRequirement cond)
|
||||
{
|
||||
this.condition = cond;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void describeTo(Description desc)
|
||||
{
|
||||
desc.appendText("requirement matches");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean matchesSafely(TripRequirement item)
|
||||
{
|
||||
boolean foundNumser = StringUtils.isEqualForFilter(item.getNumser(), condition.getNumser());
|
||||
boolean foundReqDate = DateTimeUtils.isEqualByDateForFilter(item.getReqDate(), condition.getReqDate());
|
||||
boolean foundDescription = StringUtils.isEqualForFilter(item.getDescription(), condition.getDescription());
|
||||
boolean foundFrom = StringUtils.isEqualForFilter(item.getFrom(), condition.getFrom());
|
||||
boolean foundTo = StringUtils.isEqualForFilter(item.getTo(), condition.getTo());
|
||||
boolean foundWorkgroup = (condition.getWorkgroup() == null ||(item.getWorkgroup() != null && item.getWorkgroup().equals(condition.getWorkgroup())));
|
||||
boolean foundCentre = (condition.getCentre() == null || (item.getCentre() != null && item.getCentre().equals(condition.getCentre())));
|
||||
boolean foundOwner = StringUtils.isEqualForFilter(item.getOwnedBy().getLastName(), condition.getOwnedBy().getLastName());
|
||||
return foundNumser && foundReqDate && foundDescription && foundFrom && foundTo && foundWorkgroup && foundCentre && foundOwner;
|
||||
}
|
||||
|
||||
@Factory
|
||||
public static Matcher<TripRequirement> matchTripRequirement(TripRequirement building)
|
||||
{
|
||||
return new TripRequirementMatcher(building);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public TripRequirementMatcher matcher()
|
||||
{
|
||||
return new TripRequirementMatcher(condition);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String queryString()
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,31 +2,115 @@ package info.bukova.isspst.security;
|
||||
|
||||
import info.bukova.isspst.Constants;
|
||||
import info.bukova.isspst.Module;
|
||||
import info.bukova.isspst.data.DataModel;
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.PermissionType;
|
||||
import info.bukova.isspst.data.RequirementBase;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.data.User;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.Service;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.security.access.PermissionEvaluator;
|
||||
import org.springframework.security.core.Authentication;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@Transactional
|
||||
public class IsspstPermissionEvaluator implements PermissionEvaluator {
|
||||
|
||||
|
||||
private WorkgroupService wgService;
|
||||
|
||||
public void setWorkgroupService(WorkgroupService wgService) {
|
||||
this.wgService = wgService;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public boolean hasPermission(Authentication authentication,
|
||||
Object targetDomainObject, Object permission) {
|
||||
List<Role> perms = (List<Role>) authentication.getAuthorities();
|
||||
String perm = "";
|
||||
|
||||
if (permission instanceof String) {
|
||||
perm = (String) permission;
|
||||
}
|
||||
|
||||
if (targetDomainObject instanceof Service<?>)
|
||||
Permission appPermission = null;
|
||||
for (Permission p : Constants.SPECIAL_PERMISSIONS) {
|
||||
if (p.getAuthority().equals(perm)) {
|
||||
appPermission = p;
|
||||
}
|
||||
}
|
||||
|
||||
if ((targetDomainObject instanceof Service<?>) && (appPermission == null || appPermission.getType() == PermissionType.GLOBAL))
|
||||
{
|
||||
List<Role> perms = (List<Role>) authentication.getAuthorities();
|
||||
return evaluateGlobal((Service<?>) targetDomainObject, perm, perms);
|
||||
} else {
|
||||
return evaluateSpecial(authentication, targetDomainObject, appPermission);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private boolean evaluateSpecial(Authentication auth, Object domainObject, Permission permission) {
|
||||
List<Workgroup> userWorkgroups;
|
||||
|
||||
if (!(auth.getPrincipal() instanceof User)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
User user = (User)auth.getPrincipal();
|
||||
|
||||
if (domainObject instanceof DataModel) {
|
||||
return filterDomainObject(user, (DataModel)domainObject, permission);
|
||||
}
|
||||
|
||||
if (permission.getType() == PermissionType.CENTRE) {
|
||||
userWorkgroups = wgService.getUserCentres((User)auth.getPrincipal());
|
||||
} else {
|
||||
userWorkgroups = wgService.getUserWorkgroups((User)auth.getPrincipal());
|
||||
}
|
||||
|
||||
for (Workgroup wg : userWorkgroups) {
|
||||
List<Role> wgRoles = wgService.getUserWorkgroupRoles(wg, user);
|
||||
for (Role r : wgRoles) {
|
||||
for (Permission p : r.getPermissions()) {
|
||||
if (p.getAuthority().equals(permission.getAuthority())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private boolean filterDomainObject(User user, DataModel domainObject, Permission permission) {
|
||||
if (!(domainObject instanceof RequirementBase)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
RequirementBase req = (RequirementBase) domainObject;
|
||||
Workgroup reqWg;
|
||||
|
||||
if (permission.getType() == PermissionType.CENTRE) {
|
||||
reqWg = req.getCentre();
|
||||
} else {
|
||||
reqWg = req.getWorkgroup();
|
||||
}
|
||||
|
||||
if (wgService.isMember(reqWg, user)) {
|
||||
List<Role> roles = wgService.getUserWorkgroupRoles(reqWg, user);
|
||||
for (Role r : roles) {
|
||||
for (Permission p : r.getPermissions()) {
|
||||
if (p.getAuthority().equals(permission.getAuthority())) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
package info.bukova.isspst.services.requirement;
|
||||
|
||||
public interface RequirementBaseService {
|
||||
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import java.util.Date;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
public class RequirementServiceImpl extends AbstractOwnedService<Requirement> implements RequirementService
|
||||
public class RequirementServiceImpl extends AbstractOwnedService<Requirement> implements RequirementService, RequirementBaseService
|
||||
{
|
||||
@Override
|
||||
protected Requirement createEntity()
|
||||
|
||||
@@ -4,5 +4,7 @@ import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.services.Service;
|
||||
|
||||
public interface RequirementTypeService extends Service<RequirementType> {
|
||||
|
||||
public RequirementType getTypeById(String id);
|
||||
|
||||
}
|
||||
|
||||
@@ -1,8 +1,16 @@
|
||||
package info.bukova.isspst.services.requirement;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import info.bukova.isspst.data.RequirementType;
|
||||
import info.bukova.isspst.services.AbstractOwnedService;
|
||||
|
||||
public class RequirementTypeServiceImpl extends AbstractOwnedService<RequirementType> implements RequirementTypeService {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public RequirementType getTypeById(String id) {
|
||||
return selectSingle("from RequirementType where type = '" + id + "'");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
package info.bukova.isspst.services.requirement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.services.Service;
|
||||
|
||||
public interface TripRequirementService extends Service<TripRequirement> {
|
||||
|
||||
public List<TripRequirement> getCentreReq();
|
||||
public List<TripRequirement> getWorkgroupReq();
|
||||
public List<TripRequirement> getFromAll();
|
||||
|
||||
}
|
||||
@@ -0,0 +1,92 @@
|
||||
package info.bukova.isspst.services.requirement;
|
||||
|
||||
import info.bukova.isspst.Constants;
|
||||
import info.bukova.isspst.data.RequirementState;
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.AbstractOwnedService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.security.access.prepost.PostFilter;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
public class TripRequirementServiceImpl extends AbstractOwnedService<TripRequirement>
|
||||
implements TripRequirementService, RequirementBaseService {
|
||||
|
||||
@Autowired
|
||||
private RequirementTypeService reqTypeService;
|
||||
@Autowired
|
||||
private WorkgroupService workgroupService;
|
||||
|
||||
@Override
|
||||
protected TripRequirement createEntity() {
|
||||
TripRequirement tr = new TripRequirement();
|
||||
tr.setReqDate(new Date());
|
||||
tr.setType(reqTypeService.getTypeById(Constants.REQTYPE_BUSINESSTRIP));
|
||||
tr.setState(RequirementState.NEW);
|
||||
return tr;
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@PreAuthorize("hasPermission(this, 'PERM_ADD')")
|
||||
public void add(TripRequirement entity) {
|
||||
Workgroup reqWorkgroup = null;
|
||||
for (Workgroup w : workgroupService.getUserWorkgroups(getLoggedInUser())) {
|
||||
if (workgroupService.getMembers(entity.getCentre()).contains(w)) {
|
||||
reqWorkgroup = w;
|
||||
}
|
||||
}
|
||||
entity.setWorkgroup(reqWorkgroup);
|
||||
entity.setNumser(getNumberSerie());
|
||||
super.add(entity);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
@Transactional
|
||||
@PreAuthorize("hasPermission(this, 'PERM_READ')")
|
||||
public List<TripRequirement> getAll() {
|
||||
Query q = dao.getQuery("from TripRequirement where ownedBy = :owner");
|
||||
q.setParameter("owner", getLoggedInUser());
|
||||
return q.list();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
@Transactional
|
||||
@PreAuthorize("hasPermission(this, 'PERM_SHOW_CENTRE_REQ')")
|
||||
@PostFilter("hasPermission(filterObject, 'PERM_SHOW_CENTRE_REQ')")
|
||||
public List<TripRequirement> getCentreReq() {
|
||||
List<Workgroup> wgList = workgroupService.getUserCentres(getLoggedInUser());
|
||||
Query q = dao.getQuery("select tr from TripRequirement tr join tr.centre c where c in (:wgList)");
|
||||
q.setParameterList("wgList", wgList);
|
||||
return q.list();
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
@Transactional
|
||||
@PreAuthorize("hasPermission(this, 'PERM_SHOW_WORKGROUP_REQ')")
|
||||
@PostFilter("hasPermission(filterObject, 'PERM_SHOW_WORKGROUP_REQ')")
|
||||
public List<TripRequirement> getWorkgroupReq() {
|
||||
List<Workgroup> wgList = workgroupService.getUserWorkgroups(getLoggedInUser());
|
||||
Query q = dao.getQuery("select tr from TripRequirement tr join tr.workgroup w where w in (:wgList)");
|
||||
q.setParameterList("wgList", wgList);
|
||||
return q.list();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@PreAuthorize("hasPermission(this, 'PERM_SHOW_ALL_REQ')")
|
||||
public List<TripRequirement> getFromAll() {
|
||||
return super.getAll();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +1,17 @@
|
||||
package info.bukova.isspst.services.users;
|
||||
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.services.AbstractService;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import info.bukova.isspst.data.Permission;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.services.AbstractService;
|
||||
|
||||
public class RoleServiceImpl extends AbstractService<Role> implements RoleService {
|
||||
|
||||
@Autowired
|
||||
private PermissionService permService;
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -55,7 +51,8 @@ public class RoleServiceImpl extends AbstractService<Role> implements RoleServic
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Role> getRolesWithPermission(String authority, boolean centre) {
|
||||
Permission p = permService.selectSingle("from Permission where authority = '" + authority + "'");
|
||||
Query q = dao.getQuery("from Permission where authority = '" + authority + "'");
|
||||
Permission p = (Permission) q.uniqueResult();
|
||||
return getRolesWithPermission(p, centre);
|
||||
}
|
||||
|
||||
|
||||
@@ -19,5 +19,6 @@ public interface WorkgroupService extends Service<Workgroup> {
|
||||
public List<Workgroup> getUserCentres(User user);
|
||||
public List<Workgroup> getUserWorkgroups(User user);
|
||||
public List<Role> getUserWorkgroupRoles(Workgroup workgroup, User user);
|
||||
public List<Member> getMembers(Workgroup workgroup);
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@ import info.bukova.isspst.services.AbstractOwnedService;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.hibernate.Query;
|
||||
import org.springframework.security.access.prepost.PreAuthorize;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -95,12 +96,16 @@ public class WorkgroupServiceImpl extends AbstractOwnedService<Workgroup> implem
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Workgroup> getUserCentres(User user) {
|
||||
if (user.getParents() == null) {
|
||||
List<Workgroup> parents = getParents(user);
|
||||
|
||||
if (parents == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Workgroup> centres = new ArrayList<Workgroup>();
|
||||
for (Workgroup w : user.getParents()) {
|
||||
for (Workgroup w : parents) {
|
||||
if (w.isCentre()) {
|
||||
centres.add(w);
|
||||
}
|
||||
@@ -117,12 +122,16 @@ public class WorkgroupServiceImpl extends AbstractOwnedService<Workgroup> implem
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Workgroup> getUserWorkgroups(User user) {
|
||||
if (user.getParents() == null) {
|
||||
List<Workgroup> parents = getParents(user);
|
||||
|
||||
if (parents == null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
List<Workgroup> wg = new ArrayList<Workgroup>();
|
||||
for (Workgroup w: user.getParents()) {
|
||||
for (Workgroup w: parents) {
|
||||
if (!w.isCentre()) {
|
||||
wg.add(w);
|
||||
}
|
||||
@@ -130,6 +139,23 @@ public class WorkgroupServiceImpl extends AbstractOwnedService<Workgroup> implem
|
||||
|
||||
return wg;
|
||||
}
|
||||
|
||||
private List<Workgroup> getParents(User user) {
|
||||
List<Workgroup> parents;
|
||||
|
||||
if (user.getParents() == null) {
|
||||
parents = loadUser(user).getParents();
|
||||
} else {
|
||||
parents = user.getParents();
|
||||
}
|
||||
|
||||
return parents;
|
||||
}
|
||||
|
||||
private User loadUser(User user) {
|
||||
Query q = dao.getQuery("from User where username = '" + user.getUsername() + "'");
|
||||
return (User) q.uniqueResult();
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
@@ -158,15 +184,23 @@ public class WorkgroupServiceImpl extends AbstractOwnedService<Workgroup> implem
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Role> getUserWorkgroupRoles(Workgroup workgroup, User user) {
|
||||
List<Role> roles = new ArrayList<Role>();
|
||||
User u;
|
||||
|
||||
if (!isMember(workgroup, user)) {
|
||||
if (user.getId() == 0) {
|
||||
u = loadUser(user);
|
||||
} else {
|
||||
u = user;
|
||||
}
|
||||
|
||||
if (!isMember(workgroup, u)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
for (JobMapping jm : workgroup.getMembers()) {
|
||||
if (jm.getMember().equals(user)) {
|
||||
if (jm.getMember().equals(u)) {
|
||||
roles.add(jm.getRole());
|
||||
}
|
||||
}
|
||||
@@ -185,4 +219,16 @@ public class WorkgroupServiceImpl extends AbstractOwnedService<Workgroup> implem
|
||||
super.delete(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<Member> getMembers(Workgroup workgroup) {
|
||||
List<JobMapping> jmList = workgroup.getMembers();
|
||||
List<Member> members = new ArrayList<Member>();
|
||||
|
||||
for (JobMapping jm : jmList) {
|
||||
members.add(jm.getMember());
|
||||
}
|
||||
|
||||
return members;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -308,9 +308,13 @@ public class ListViewModel<T extends DataModel> {
|
||||
}
|
||||
|
||||
private void loadFromDbSync() {
|
||||
dataList.addAll(service.getAll());
|
||||
dataList.addAll(getListFromService());
|
||||
fullList = dataList;
|
||||
}
|
||||
|
||||
protected List<T> getListFromService() {
|
||||
return service.getAll();
|
||||
}
|
||||
|
||||
protected void showForm() {
|
||||
Map<String, Object> arg = new HashMap<String, Object>();
|
||||
|
||||
@@ -46,6 +46,10 @@ public class NavigationVM {
|
||||
return moduleUrl.contains("orders");
|
||||
}
|
||||
|
||||
public boolean isTrips() {
|
||||
return moduleUrl.contains("trips");
|
||||
}
|
||||
|
||||
public boolean isSettings() {
|
||||
return moduleUrl.contains("settings");
|
||||
}
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
package info.bukova.isspst.ui.requirement;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.FormViewModel;
|
||||
|
||||
public class TripRequirementForm extends FormViewModel<TripRequirement> {
|
||||
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
|
||||
private List<Workgroup> centres;
|
||||
|
||||
@Init(superclass = true)
|
||||
public void init() {
|
||||
centres = workgroupService.getUserCentres(userService.getCurrent());
|
||||
}
|
||||
|
||||
public List<Workgroup> getCentres() {
|
||||
return centres;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
package info.bukova.isspst.ui.requirement;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.filters.TripRequirementFilter;
|
||||
import info.bukova.isspst.services.requirement.TripRequirementService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.ListViewModel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.zkoss.bind.annotation.GlobalCommand;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.bind.annotation.NotifyChange;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
public class TripRequirementList extends ListViewModel<TripRequirement> {
|
||||
|
||||
@WireVariable
|
||||
private TripRequirementService tripRequirementService;
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
private List<Workgroup> myCentres;
|
||||
private boolean showCentre;
|
||||
private boolean showWorkgroup;
|
||||
private boolean showAll;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
service = tripRequirementService;
|
||||
dataClass = TripRequirement.class;
|
||||
formZul = "requirementsForm.zul";
|
||||
|
||||
showCentre = true;
|
||||
showWorkgroup = true;
|
||||
showAll = true;
|
||||
|
||||
dataFilter = new TripRequirementFilter(getFilterTemplate());
|
||||
myCentres = workgroupService.getUserCentres(userService.getCurrent());
|
||||
}
|
||||
|
||||
@GlobalCommand
|
||||
@NotifyChange("showCentre")
|
||||
public void disableCentre() {
|
||||
showCentre = false;
|
||||
}
|
||||
|
||||
@GlobalCommand
|
||||
@NotifyChange("showWorkgroup")
|
||||
public void disableWorkgroup() {
|
||||
showWorkgroup = false;
|
||||
}
|
||||
|
||||
@GlobalCommand
|
||||
@NotifyChange("showAll")
|
||||
public void disableAll() {
|
||||
showAll = false;
|
||||
}
|
||||
|
||||
public boolean isShowCentre() {
|
||||
return showCentre;
|
||||
}
|
||||
|
||||
public boolean isShowWorkgroup() {
|
||||
return showWorkgroup;
|
||||
}
|
||||
|
||||
public boolean isShowAll() {
|
||||
return showAll;
|
||||
}
|
||||
|
||||
public List<Workgroup> getMyCentres() {
|
||||
return myCentres;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package info.bukova.isspst.ui.requirement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.zkoss.bind.BindUtils;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.filters.TripRequirementFilter;
|
||||
import info.bukova.isspst.services.requirement.TripRequirementService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.ListViewModel;
|
||||
|
||||
public class TripRequirementListAll extends ListViewModel<TripRequirement> {
|
||||
|
||||
@WireVariable
|
||||
private TripRequirementService tripRequirementService;
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
private List<Workgroup> allCentres;
|
||||
private List<Workgroup> allWorkgroups;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
service = tripRequirementService;
|
||||
dataClass = TripRequirement.class;
|
||||
formZul = "requirementsForm.zul";
|
||||
dataFilter = new TripRequirementFilter(getFilterTemplate());
|
||||
|
||||
allCentres = workgroupService.getCentres();
|
||||
allWorkgroups = workgroupService.getWorkgroups();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<TripRequirement> getListFromService() {
|
||||
try {
|
||||
return tripRequirementService.getFromAll();
|
||||
} catch (AccessDeniedException e) {
|
||||
BindUtils.postGlobalCommand(null, null, "disableAll", null);
|
||||
return new ArrayList<TripRequirement>();
|
||||
}
|
||||
}
|
||||
|
||||
public List<Workgroup> getAllCentres() {
|
||||
return allCentres;
|
||||
}
|
||||
|
||||
public List<Workgroup> getAllWorkgroups() {
|
||||
return allWorkgroups;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
package info.bukova.isspst.ui.requirement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.zkoss.bind.BindUtils;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.filters.TripRequirementFilter;
|
||||
import info.bukova.isspst.services.requirement.TripRequirementService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.ListViewModel;
|
||||
|
||||
public class TripRequirementListCentre extends ListViewModel<TripRequirement> {
|
||||
|
||||
@WireVariable
|
||||
private TripRequirementService tripRequirementService;
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
private List<Workgroup> myCentres;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
service = tripRequirementService;
|
||||
dataClass = TripRequirement.class;
|
||||
formZul = "requirementsForm.zul";
|
||||
dataFilter = new TripRequirementFilter(getFilterTemplate());
|
||||
|
||||
myCentres = workgroupService.getUserCentres(userService.getCurrent());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<TripRequirement> getListFromService() {
|
||||
try {
|
||||
return tripRequirementService.getCentreReq();
|
||||
} catch (AccessDeniedException e) {
|
||||
BindUtils.postGlobalCommand(null, null, "disableCentre", null);
|
||||
return new ArrayList<TripRequirement>();
|
||||
}
|
||||
}
|
||||
|
||||
public List<Workgroup> getMyCentres() {
|
||||
return myCentres;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
package info.bukova.isspst.ui.requirement;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.security.access.AccessDeniedException;
|
||||
import org.zkoss.bind.BindUtils;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
import info.bukova.isspst.data.TripRequirement;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.filters.TripRequirementFilter;
|
||||
import info.bukova.isspst.services.requirement.TripRequirementService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.ListViewModel;
|
||||
|
||||
public class TripRequirementListWorkgroup extends ListViewModel<TripRequirement> {
|
||||
|
||||
@WireVariable
|
||||
private TripRequirementService tripRequirementService;
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
private List<Workgroup> myCentres;
|
||||
private List<Workgroup> myWorkgroups;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
service = tripRequirementService;
|
||||
dataClass = TripRequirement.class;
|
||||
formZul = "requirementsForm.zul";
|
||||
dataFilter = new TripRequirementFilter(getFilterTemplate());
|
||||
|
||||
myCentres = workgroupService.getUserCentres(userService.getCurrent());
|
||||
myWorkgroups = workgroupService.getUserWorkgroups(userService.getCurrent());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected List<TripRequirement> getListFromService() {
|
||||
try {
|
||||
return tripRequirementService.getWorkgroupReq();
|
||||
} catch (AccessDeniedException e) {
|
||||
BindUtils.postGlobalCommand(null, null, "disableWorkgroup", null);
|
||||
return new ArrayList<TripRequirement>();
|
||||
}
|
||||
}
|
||||
|
||||
public List<Workgroup> getMyCentres() {
|
||||
return myCentres;
|
||||
}
|
||||
|
||||
public List<Workgroup> getMyWorkgroups() {
|
||||
return myWorkgroups;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user