@@ -10,6 +10,7 @@ import info.bukova.isspst.services.munits.MUnitService;
|
||||
import info.bukova.isspst.services.material.MaterialService;
|
||||
import info.bukova.isspst.services.users.RoleService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
|
||||
public class Constants {
|
||||
|
||||
@@ -53,13 +54,15 @@ public class Constants {
|
||||
public final static String MOD_BUILDINGS = "BUILDINGS";
|
||||
public final static String MOD_MUNITS = "MUNITS";
|
||||
public final static String MOD_MATERIAL = "MATERIAL";
|
||||
public final static String MOD_WORKGROUPS = "WORKGROUPS";
|
||||
public final static Module MODULES[] = {
|
||||
new Module(MOD_USERS, "Uživatelé", UserService.class)
|
||||
, new Module(MOD_PERMISSIONS, "Práva", RoleService.class)
|
||||
, new Module(MOD_ADDRESSBOOK, "Dodavatelé", AdbService.class)
|
||||
, new Module(MOD_BUILDINGS, "Budovy", BuildingService.class)
|
||||
, new Module(MOD_MUNITS, "Měrné jednotky", MUnitService.class)
|
||||
, new Module(MOD_MATERIAL, "Materiál", MaterialService.class)
|
||||
new Module(MOD_USERS, "Uživatelé", UserService.class),
|
||||
new Module(MOD_PERMISSIONS, "Práva", RoleService.class),
|
||||
new Module(MOD_ADDRESSBOOK, "Dodavatelé", AdbService.class),
|
||||
new Module(MOD_BUILDINGS, "Budovy", BuildingService.class),
|
||||
new Module(MOD_MUNITS, "Měrné jednotky", MUnitService.class),
|
||||
new Module(MOD_MATERIAL, "Materiál", MaterialService.class),
|
||||
new Module(MOD_WORKGROUPS, "Pracovní skupiny", WorkgroupService.class)
|
||||
};
|
||||
|
||||
public final static String DYNAMIC_REPORT_NAME = "Tabulková sestava";
|
||||
|
||||
@@ -0,0 +1,7 @@
|
||||
package info.bukova.isspst.dao;
|
||||
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
|
||||
public interface WorkgroupDao extends BaseDao<Workgroup> {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package info.bukova.isspst.dao.jpa;
|
||||
|
||||
import info.bukova.isspst.dao.WorkgroupDao;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
|
||||
public class WorkgroupDaoJPA extends BaseDaoJPA<Workgroup> implements WorkgroupDao {
|
||||
|
||||
@Override
|
||||
public String getEntityName() {
|
||||
return Workgroup.class.getSimpleName();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
@Entity
|
||||
@Table(name = "JOBMAPPING")
|
||||
public class JobMapping {
|
||||
|
||||
@Id
|
||||
@Column(name = "ID")
|
||||
@GeneratedValue
|
||||
private int id;
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinTable(name = "JOB_MEMBER", joinColumns = { @JoinColumn(name = "JOB_ID") }, inverseJoinColumns = { @JoinColumn(name = "MEMBER_ID") })
|
||||
private Member member;
|
||||
@ManyToOne(fetch = FetchType.EAGER)
|
||||
@JoinTable(name = "JOB_ROLE", joinColumns = { @JoinColumn(name = "JOB_ID") }, inverseJoinColumns = { @JoinColumn(name = "ROLE_ID") })
|
||||
private Role role;
|
||||
|
||||
public JobMapping() {
|
||||
|
||||
}
|
||||
|
||||
public JobMapping(Member member, Role role) {
|
||||
this.member = member;
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Member getMember() {
|
||||
return member;
|
||||
}
|
||||
|
||||
public void setMember(Member member) {
|
||||
this.member = member;
|
||||
}
|
||||
|
||||
public Role getRole() {
|
||||
return role;
|
||||
}
|
||||
|
||||
public void setRole(Role role) {
|
||||
this.role = role;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof JobMapping
|
||||
&& ((JobMapping)o).getMember().equals(this.getMember())
|
||||
&& ((JobMapping)o).getRole().equals(this.getRole())) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.GenerationType;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.Inheritance;
|
||||
import javax.persistence.InheritanceType;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
@Entity
|
||||
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
|
||||
public abstract class Member implements DataModel {
|
||||
|
||||
@Id
|
||||
@GeneratedValue(strategy = GenerationType.TABLE)
|
||||
private int id;
|
||||
@Column(name = "CREATED")
|
||||
private Date created;
|
||||
@Column(name = "MODIFIED")
|
||||
private Date modified;
|
||||
@Transient
|
||||
private boolean valid;
|
||||
|
||||
public abstract String getFullName();
|
||||
public abstract boolean isHasJob();
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
public Date getCreated() {
|
||||
return created;
|
||||
}
|
||||
|
||||
public void setCreated(Date created) {
|
||||
this.created = created;
|
||||
}
|
||||
|
||||
public Date getModified() {
|
||||
return modified;
|
||||
}
|
||||
|
||||
public void setModified(Date modified) {
|
||||
this.modified = modified;
|
||||
}
|
||||
|
||||
public boolean isValid() {
|
||||
return valid;
|
||||
}
|
||||
|
||||
public void setValid(boolean valid) {
|
||||
this.valid = valid;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,6 +2,8 @@ package info.bukova.isspst.data;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.EnumType;
|
||||
import javax.persistence.Enumerated;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.springframework.security.core.GrantedAuthority;
|
||||
@@ -21,15 +23,33 @@ public class Permission extends BaseSimpleData implements GrantedAuthority {
|
||||
private String description;
|
||||
@Column(name="MODULE")
|
||||
private String module;
|
||||
@Column(name = "TYPE")
|
||||
@Enumerated(EnumType.ORDINAL)
|
||||
private PermissionType type;
|
||||
|
||||
public Permission(String authority, String description) {
|
||||
this();
|
||||
this.authority = authority;
|
||||
this.description = description;
|
||||
this.module = "";
|
||||
}
|
||||
|
||||
public Permission(String authority, String description, String module) {
|
||||
this(authority, description);
|
||||
this.module = module;
|
||||
}
|
||||
|
||||
public Permission(String authority, String description, PermissionType type) {
|
||||
this(authority, description, "", type);
|
||||
}
|
||||
|
||||
public Permission(String authority, String description, String module, PermissionType type) {
|
||||
this(authority, description, module);
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
public Permission() {
|
||||
|
||||
type = PermissionType.GLOBAL;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
public enum PermissionType {
|
||||
|
||||
GLOBAL,
|
||||
WORKGROUP,
|
||||
CENTRE
|
||||
|
||||
}
|
||||
@@ -31,15 +31,21 @@ public class Role extends BaseSimpleData implements GrantedAuthority, DataModel
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@JoinTable(name="ROLE_PERMISSION", joinColumns={@JoinColumn(name="ROLE_ID")}, inverseJoinColumns={@JoinColumn(name="PERMISSION_ID")})
|
||||
private List<Permission> permissions;
|
||||
@Column(name = "WORKGROUP")
|
||||
private boolean workgroup;
|
||||
@Column(name = "CENTRE")
|
||||
private boolean centre;
|
||||
|
||||
public Role(String authority, String description) {
|
||||
this();
|
||||
this.authority = authority;
|
||||
this.description = description;
|
||||
this.permissions = new ArrayList<Permission>();
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
public Role() {
|
||||
this.permissions = new ArrayList<Permission>();
|
||||
centre = false;
|
||||
workgroup = false;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -80,4 +86,20 @@ public class Role extends BaseSimpleData implements GrantedAuthority, DataModel
|
||||
}
|
||||
}
|
||||
|
||||
public boolean isWorkgroup() {
|
||||
return workgroup;
|
||||
}
|
||||
|
||||
public void setWorkgroup(boolean workgroup) {
|
||||
this.workgroup = workgroup;
|
||||
}
|
||||
|
||||
public boolean isCentre() {
|
||||
return centre;
|
||||
}
|
||||
|
||||
public void setCentre(boolean centre) {
|
||||
this.centre = centre;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@ import org.springframework.security.core.userdetails.UserDetails;
|
||||
|
||||
@Entity
|
||||
@Table(name="USER")
|
||||
public class User extends BaseSimpleData implements UserDetails, DataModel {
|
||||
public class User extends Member implements UserDetails, DataModel {
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -129,10 +129,12 @@ public class User extends BaseSimpleData implements UserDetails, DataModel {
|
||||
|
||||
public String getFullName() {
|
||||
String ret = "";
|
||||
if (firstName != null && !firstName.isEmpty()) {
|
||||
ret = firstName + " ";
|
||||
if (lastName != null && !lastName.isEmpty()) {
|
||||
ret = lastName + " ";
|
||||
}
|
||||
return ret + lastName == null ? "" : lastName;
|
||||
ret = ret + (firstName == null ? "" : firstName);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
public String getFirstName() {
|
||||
@@ -174,5 +176,24 @@ public class User extends BaseSimpleData implements UserDetails, DataModel {
|
||||
public void setNotify(boolean notify) {
|
||||
this.notify = notify;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if ((o instanceof User) && (((User)o).getId() == this.getId())) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getFullName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHasJob() {
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,125 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import javax.persistence.CascadeType;
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.Entity;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.JoinTable;
|
||||
import javax.persistence.ManyToMany;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.Table;
|
||||
|
||||
import org.hibernate.annotations.LazyCollection;
|
||||
import org.hibernate.annotations.LazyCollectionOption;
|
||||
|
||||
@Entity
|
||||
@Table(name = "WORKGROUP")
|
||||
public class Workgroup extends Member implements OwnedDataModel {
|
||||
|
||||
@Column(name = "CODE")
|
||||
private String code;
|
||||
@Column(name = "NAME")
|
||||
private String name;
|
||||
@ManyToMany(cascade = {CascadeType.ALL})
|
||||
@LazyCollection(LazyCollectionOption.FALSE)
|
||||
@JoinTable(name="WORKGROUP_MEMBER", joinColumns={@JoinColumn(name="WORKGROUP_ID")}, inverseJoinColumns={@JoinColumn(name="JOBMAPPING_ID")})
|
||||
private List<JobMapping> members;
|
||||
@Column(name = "CENTRE")
|
||||
private boolean centre;
|
||||
//BaseData
|
||||
@ManyToOne(fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="OWNED_BY_ID")
|
||||
private User ownedBy;
|
||||
@ManyToOne(fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="MODIFIED_BY_ID")
|
||||
private User modifiedBy;
|
||||
|
||||
|
||||
public Workgroup() {
|
||||
members = new ArrayList<JobMapping>();
|
||||
centre = false;
|
||||
}
|
||||
|
||||
public String getCode() {
|
||||
return code;
|
||||
}
|
||||
|
||||
public void setCode(String code) {
|
||||
this.code = code;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public boolean isCentre() {
|
||||
return centre;
|
||||
}
|
||||
|
||||
public void setCentre(boolean centre) {
|
||||
this.centre = centre;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOwnedBy(User user) {
|
||||
this.ownedBy = user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getOwnedBy() {
|
||||
return ownedBy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setModifiedBy(User user) {
|
||||
this.modifiedBy = user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getModifiedBy() {
|
||||
return modifiedBy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFullName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isHasJob() {
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<JobMapping> getMembers() {
|
||||
return members;
|
||||
}
|
||||
|
||||
public void setMembers(List<JobMapping> members) {
|
||||
this.members = members;
|
||||
}
|
||||
|
||||
public void removeMember(JobMapping mapping) {
|
||||
members.remove(mapping);
|
||||
}
|
||||
|
||||
public void removeMember(Member member, Role role) {
|
||||
JobMapping mapping = new JobMapping(member, role);
|
||||
members.remove(mapping);
|
||||
}
|
||||
|
||||
public boolean equals(Object o) {
|
||||
if (o instanceof Workgroup && ((Workgroup)o).getId() == this.getId()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package info.bukova.isspst.services.users;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.services.Service;
|
||||
|
||||
public interface RoleService extends Service<Role> {
|
||||
|
||||
public Role getRoleByAuthority(String authority);
|
||||
public List<Role> getWorkgroupRoles();
|
||||
public List<Role> getCentreRoles();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package info.bukova.isspst.services.users;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import info.bukova.isspst.data.Role;
|
||||
@@ -13,4 +15,16 @@ public class RoleServiceImpl extends AbstractService<Role> implements RoleServic
|
||||
return this.selectSingle("from Role where authority = '" + authority + "'");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Role> getWorkgroupRoles() {
|
||||
return this.execQuery("from Role where workgroup = true");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Role> getCentreRoles() {
|
||||
return this.execQuery("from Role where centre = true");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package info.bukova.isspst.services.workgroups;
|
||||
|
||||
import info.bukova.isspst.services.IsspstException;
|
||||
|
||||
public class WorkgroupException extends IsspstException {
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private static final long serialVersionUID = -1729975111741519801L;
|
||||
|
||||
public final static String NO_WORGROUP = "WorkgroupNotAllowed";
|
||||
public final static String MSUT_HAS_CENTER = "RoleMustHasCentre";
|
||||
public final static String MUST_HAS_WORKGROUP = "WorkgroupMustHasCentre";
|
||||
|
||||
public WorkgroupException(String message) {
|
||||
super(message);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package info.bukova.isspst.services.workgroups;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import info.bukova.isspst.data.Member;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.Service;
|
||||
|
||||
public interface WorkgroupService extends Service<Workgroup> {
|
||||
|
||||
public void addMember(Workgroup workgroup, Member member, Role role);
|
||||
public List<Workgroup> getWorkgroups();
|
||||
public List<Workgroup> getCentres();
|
||||
public boolean isMember(Workgroup workgroup, Member member);
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package info.bukova.isspst.services.workgroups;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import info.bukova.isspst.Constants;
|
||||
import info.bukova.isspst.data.JobMapping;
|
||||
import info.bukova.isspst.data.Member;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.AbstractOwnedService;
|
||||
|
||||
public class WorkgroupServiceImpl extends AbstractOwnedService<Workgroup> implements WorkgroupService {
|
||||
|
||||
@Override
|
||||
public void addMember(Workgroup workgroup, Member member, Role role) {
|
||||
if (!member.isHasJob() && !role.getAuthority().equals(Constants.ROLE_USER)) {
|
||||
throw new WorkgroupException(WorkgroupException.NO_WORGROUP);
|
||||
}
|
||||
if (workgroup.isCentre() && !role.isCentre()) {
|
||||
throw new WorkgroupException(WorkgroupException.MSUT_HAS_CENTER);
|
||||
}
|
||||
if (!workgroup.isCentre() && !role.isWorkgroup()) {
|
||||
throw new WorkgroupException(WorkgroupException.MUST_HAS_WORKGROUP);
|
||||
}
|
||||
|
||||
JobMapping mapping = new JobMapping(member, role);
|
||||
if (!workgroup.getMembers().contains(mapping)) {
|
||||
workgroup.getMembers().add(mapping);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Workgroup> getWorkgroups() {
|
||||
return this.execQuery("from Workgroup where centre = false");
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public List<Workgroup> getCentres() {
|
||||
return this.execQuery("from Workgroup where centre = true");
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isMember(Workgroup workgroup, Member member) {
|
||||
for (JobMapping jm : workgroup.getMembers()) {
|
||||
if (jm.getMember().equals(member)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,145 @@
|
||||
package info.bukova.isspst.ui.workgroups;
|
||||
|
||||
import info.bukova.isspst.data.JobMapping;
|
||||
import info.bukova.isspst.data.Member;
|
||||
import info.bukova.isspst.data.Role;
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.users.RoleService;
|
||||
import info.bukova.isspst.services.users.UserService;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.FormViewModel;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import org.zkoss.bind.annotation.BindingParam;
|
||||
import org.zkoss.bind.annotation.Command;
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.bind.annotation.NotifyChange;
|
||||
import org.zkoss.zk.ui.event.DropEvent;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
import org.zkoss.zul.Listitem;
|
||||
|
||||
public class WorkgroupForm extends FormViewModel<Workgroup> {
|
||||
|
||||
@WireVariable
|
||||
private UserService userService;
|
||||
@WireVariable
|
||||
private RoleService roleService;
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
private List<Member> users;
|
||||
|
||||
@Init(superclass = true)
|
||||
public void init() {
|
||||
users = new ArrayList<Member>();
|
||||
users.addAll(userService.getAll());
|
||||
List<Workgroup> wg = workgroupService.getWorkgroups();
|
||||
|
||||
for (Workgroup w : wg) {
|
||||
if (!workgroupService.isMember(getDataBean(), w)) {
|
||||
users.add(w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public List<Member> getUsers() {
|
||||
return users;
|
||||
}
|
||||
|
||||
public List<Role> getWorkgroupRoles() {
|
||||
if (getDataBean().isCentre()) {
|
||||
return roleService.getCentreRoles();
|
||||
} else {
|
||||
return roleService.getWorkgroupRoles();
|
||||
}
|
||||
}
|
||||
|
||||
@NotifyChange({"workgroupRoles", "centre"})
|
||||
public void setCentre(boolean centre) {
|
||||
getDataBean().setCentre(centre);
|
||||
}
|
||||
|
||||
public boolean getCentre() {
|
||||
return getDataBean().isCentre();
|
||||
}
|
||||
|
||||
@Command
|
||||
@NotifyChange({"users", "dataBean"})
|
||||
public void addMember(@BindingParam("event") DropEvent event) {
|
||||
Set<Listitem> selected = ((Listitem)event.getDragged()).getListbox().getSelectedItems();
|
||||
|
||||
if (selected.isEmpty()) {
|
||||
try {
|
||||
Member u = ((Listitem)event.getDragged()).getValue();
|
||||
moveUser(u, event);
|
||||
} catch(ClassCastException e) {
|
||||
JobMapping u = ((Listitem)event.getDragged()).getValue();
|
||||
moveUser(u, event);
|
||||
}
|
||||
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
for (Listitem li : selected) {
|
||||
try {
|
||||
Member u = li.getValue();
|
||||
moveUser(u, event);
|
||||
} catch (ClassCastException e) {
|
||||
JobMapping u = li.getValue();
|
||||
moveUser(u, event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void moveUser(JobMapping u, DropEvent event) {
|
||||
String source = getSource(event);
|
||||
String target = getTarget(event);
|
||||
|
||||
if (source.equals(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
getDataBean().removeMember(u);
|
||||
|
||||
if (!target.equals("users")) {
|
||||
moveUser(u.getMember(), event);
|
||||
} else if (!u.getMember().isHasJob()) {
|
||||
users.add(u.getMember());
|
||||
}
|
||||
}
|
||||
|
||||
private void moveUser(Member u, DropEvent event) {
|
||||
String source = getSource(event);
|
||||
String target = getTarget(event);
|
||||
|
||||
if (source.equals(target)) {
|
||||
return;
|
||||
}
|
||||
|
||||
workgroupService.addMember(getDataBean(), u, roleService.getRoleByAuthority(target));
|
||||
|
||||
if (!u.isHasJob()) {
|
||||
users.remove(u);
|
||||
}
|
||||
}
|
||||
|
||||
private String getSource(DropEvent event) {
|
||||
return ((Listitem)event.getDragged()).getListbox().getId();
|
||||
}
|
||||
|
||||
private String getTarget(DropEvent event) {
|
||||
String target;
|
||||
|
||||
if (event.getTarget() instanceof Listitem) {
|
||||
target = ((Listitem)event.getTarget()).getListbox().getId();
|
||||
} else {
|
||||
target = event.getTarget().getId();
|
||||
}
|
||||
|
||||
return target;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package info.bukova.isspst.ui.workgroups;
|
||||
|
||||
import org.zkoss.bind.annotation.Init;
|
||||
import org.zkoss.zk.ui.select.annotation.WireVariable;
|
||||
|
||||
import info.bukova.isspst.data.Workgroup;
|
||||
import info.bukova.isspst.services.workgroups.WorkgroupService;
|
||||
import info.bukova.isspst.ui.ListViewModel;
|
||||
|
||||
public class WorkgroupList extends ListViewModel<Workgroup> {
|
||||
|
||||
@WireVariable
|
||||
private WorkgroupService workgroupService;
|
||||
|
||||
@Init
|
||||
public void init() {
|
||||
service = workgroupService;
|
||||
dataClass = Workgroup.class;
|
||||
formZul = "workgroupForm.zul";
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user