Bázové třídy pro datový model. Bázovka pro servisy kde se nastavuje
vlastník záznamu.multitenant
parent
6462fb3806
commit
7393a2d2e2
@ -0,0 +1,94 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import javax.persistence.Column;
|
||||
import javax.persistence.FetchType;
|
||||
import javax.persistence.GeneratedValue;
|
||||
import javax.persistence.Id;
|
||||
import javax.persistence.JoinColumn;
|
||||
import javax.persistence.ManyToOne;
|
||||
import javax.persistence.MappedSuperclass;
|
||||
import javax.persistence.Transient;
|
||||
|
||||
@MappedSuperclass
|
||||
public abstract class BaseData implements OwnedDataModel {
|
||||
|
||||
@Id
|
||||
@Column(name="ID")
|
||||
@GeneratedValue
|
||||
private int id;
|
||||
@Column(name="CREATED")
|
||||
private Date created;
|
||||
@Column(name="MODIFIED")
|
||||
private Date modified;
|
||||
@ManyToOne(fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="OWNED_BY_ID")
|
||||
private User ownedBy;
|
||||
@ManyToOne(fetch=FetchType.EAGER)
|
||||
@JoinColumn(name="MODIFIED_BY_ID")
|
||||
private User modifiedBy;
|
||||
@Transient
|
||||
private boolean valid;
|
||||
|
||||
@Override
|
||||
public void setId(int id) {
|
||||
this.id = id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCreated(Date created) {
|
||||
this.created = created;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getCreated() {
|
||||
return this.created;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setModified(Date modified) {
|
||||
this.modified = modified;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Date getModified() {
|
||||
return this.modified;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return this.valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setValid(boolean valid) {
|
||||
this.valid = valid;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setOwnedBy(User user) {
|
||||
this.ownedBy = user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getOwnedBy() {
|
||||
return this.ownedBy;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setModifiedBy(User user) {
|
||||
this.modifiedBy = user;
|
||||
}
|
||||
|
||||
@Override
|
||||
public User getModifiedBy() {
|
||||
return this.modifiedBy;
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package info.bukova.isspst.data;
|
||||
|
||||
public interface OwnedDataModel extends DataModel {
|
||||
|
||||
public void setOwnedBy(User user);
|
||||
public User getOwnedBy();
|
||||
public void setModifiedBy(User user);
|
||||
public User getModifiedBy();
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package info.bukova.isspst.services;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
import org.springframework.security.core.context.SecurityContextHolder;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import info.bukova.isspst.data.OwnedDataModel;
|
||||
import info.bukova.isspst.data.User;
|
||||
|
||||
public class AbstractOwnedService<T extends OwnedDataModel> extends AbstractService<T> {
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void add(T entity) {
|
||||
entity.setCreated(new Date());
|
||||
entity.setOwnedBy(getLoggedInUser());
|
||||
dao.add(entity);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional
|
||||
public void update(T entity) {
|
||||
if (entity.getCreated() == null) {
|
||||
add(entity);
|
||||
} else {
|
||||
entity.setModifiedBy(getLoggedInUser());
|
||||
entity.setModified(new Date());
|
||||
dao.modify(entity);
|
||||
}
|
||||
}
|
||||
|
||||
protected User getLoggedInUser() {
|
||||
return (User)SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue