knu project
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

412 lines
10 KiB

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package kr.co.kihyun.beans.entity.ecross;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.jdo.JDOObjectNotFoundException;
import javax.jdo.PersistenceManager;
import javax.jdo.Query;
import javax.jdo.annotations.IdentityType;
import javax.jdo.annotations.Inheritance;
import javax.jdo.annotations.InheritanceStrategy;
import javax.jdo.annotations.NullValue;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import kr.co.kihyun.beans.entity.AcceptanceLimitStrategy;
import kr.co.kihyun.beans.entity.AccessAuth;
import kr.co.kihyun.beans.entity.ExecutionCode;
import kr.co.kihyun.beans.entity.MDept;
import kr.co.kihyun.beans.entity.MUser;
import kr.co.kihyun.beans.entity.TotDoc;
import kr.co.kihyun.beans.entity.TotDoc.TotRange;
import kr.co.kihyun.beans.entity.TotDocAppendType;
import kr.co.kihyun.beans.entity.TotDocProcess;
import kr.co.kihyun.beans.entity.TotDocType;
import kr.co.kihyun.beans.entity.util.MPersistenceManager;
import kr.co.kihyun.lang.MString;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
*
* @author bhs
*/
@PersistenceCapable(identityType = IdentityType.APPLICATION)
@Inheritance(strategy = InheritanceStrategy.SUBCLASS_TABLE)
public abstract class ECrossTotDoc extends ECross<TotDoc> {
private static final Logger LOG = LoggerFactory.getLogger(ECrossTotDoc.class);
@Persistent(nullValue = NullValue.EXCEPTION)
private Long acceptanceLimitStrategy;
@Persistent(nullValue = NullValue.EXCEPTION)
private AccessAuth accessAuth = AccessAuth.PER;
@Persistent(nullValue = NullValue.EXCEPTION)
private TotDocAppendType appendType = TotDocAppendType.COPY;
private transient String decName;
@Persistent(nullValue = NullValue.EXCEPTION)
private Date endDate = Calendar.getInstance().getTime();
@Persistent
private String executionCode;
@Persistent(nullValue = NullValue.EXCEPTION)
private int fixNum = 0;
@Persistent
private String form;
@Persistent
private Long group;
@Persistent
private String handyName;
@Persistent
private Long id;
private transient boolean isDecrypted;
@Persistent(nullValue = NullValue.EXCEPTION)
private String isDeleted = "N";
@Persistent
private String mDept;
@Persistent
private String mUser;
@Persistent
private String managementCode;
@Persistent
private String masterDept;
@Persistent
private Long masterTotDoc;
@Persistent
private String name;
@Persistent
private String ownerEmail;
@Persistent
private String ownerName;
@Persistent
private String ownerPhone;
@Persistent(customValueStrategy = "timestamp", nullValue = NullValue.EXCEPTION)
private Date regDate;
@Persistent(nullValue = NullValue.EXCEPTION)
private Date startDate = Calendar.getInstance().getTime();
@Persistent(nullValue = NullValue.EXCEPTION)
private TotRange totRange = TotRange.INTERNAL;
@Persistent
private TotDocType type = TotDocType.TOT_DOC;
public ECrossTotDoc(TotDoc totDoc) {
super(totDoc);
this.setAcceptanceLimitStrategy(totDoc.getAcceptanceLimitStrategy());
this.setAccessAuth(totDoc.getAccessAuth());
this.setAppendType(totDoc.getAppendType());
this.setDeleted(totDoc.isDeleted());
this.setDept(totDoc.getDept());
this.setEndDate(totDoc.getEndDate());
this.setExecutionCode(totDoc.getExecutionCode());
this.setFixNum(totDoc.getFixNum());
this.setForm(totDoc.getForm());
this.setGroup(totDoc.getGroup());
this.setHandyName(totDoc.getHandyName());
this.setId(totDoc.getId());
this.setManagementCode(totDoc.getManagementCode());
this.setMasterTotDoc(totDoc.getMasterTotDoc());
this.setName(totDoc.getName());
this.setUser(null);
this.setOwnerEmail(totDoc.getOwnerEmail());
this.setOwnerName(totDoc.getOwnerName());
this.setOwnerPhone(totDoc.getOwnerPhone());
this.setRegDate(totDoc.getRegDate());
this.setRepDept(totDoc.getRepDept());
this.setStartDate(totDoc.getStartDate());
this.setTotRange(totDoc.getTotRange());
this.setType(totDoc.getType());
}
@Override
protected TotDoc setFieldValues(MPersistenceManager pm, TotDoc totDoc) {
//System.out.println("**************************************************** acceptanceLimitStrategy;"+acceptanceLimitStrategy);
totDoc.setAcceptanceLimitStrategy(AcceptanceLimitStrategy.create("LimitByWriteDateStrategy", 0L));
totDoc.setAccessAuth(accessAuth);
totDoc.setAppendType(appendType);
totDoc.setDeleted(isDeleted);
totDoc.setDept(mDept == null ? null : pm.getObjectById(MDept.class, mDept));
totDoc.setEndDate(endDate);
totDoc.setExecutionCode(MString.isNull(executionCode) ? null : ExecutionCode.valueOf(executionCode));
totDoc.setFixNum(fixNum);
totDoc.setForm(form);
totDoc.setGroup(group);
totDoc.setHandyName(handyName);
totDoc.setId(id);
totDoc.setMasterTotDoc(masterTotDoc == null ? null : pm.getObjectById(TotDoc.class, masterTotDoc));
totDoc.setName(name);
totDoc.setRegDate(regDate);
totDoc.setRepDept(masterDept == null ? null : pm.getObjectById(MDept.class, masterDept));
totDoc.setStartDate(startDate);
totDoc.setTotRange(totRange);
totDoc.setType(type);
totDoc.setUser(null);
totDoc.setOwnerEmail(ownerEmail);
totDoc.setOwnerName(ownerName);
totDoc.setOwnerPhone(ownerPhone);
return totDoc;
}
public AccessAuth getAccessAuth() {
return this.accessAuth;
}
public TotDocAppendType getAppendType() {
return appendType;
}
private String getDecName() {
return this.decName;
}
public MDept getDept(PersistenceManager pm) {
try {
return pm.getObjectById(MDept.class, this.mDept);
} catch (JDOObjectNotFoundException jonfe) {
return null;
}
}
private String getEncName() {
return this.ownerName;
}
public Date getEndDate() {
return this.endDate;
}
public final ExecutionCode getExecutionCode() {
try {
if (executionCode != null) {
return ExecutionCode.valueOf(executionCode);
} else {
return new ExecutionCode(executionCode, null, null);
}
} catch (Exception e) {
LOG.error("Unable to parse execution code for {}", executionCode);
return new ExecutionCode(executionCode, null, null);
}
}
public int getFixNum() {
return this.fixNum;
}
public String getForm() {
return this.form;
}
public Long getGroup() {
return group;
}
public String getHandyName() {
return this.handyName;
}
/**
* @return the id
*/
public Long getId() {
return id;
}
public final String getManagementCode() {
return managementCode;
}
public String getName() {
return this.name;
}
/**
* @return the ownerEmail
*/
public String getOwnerEmail() {
return MString.checkNull(ownerEmail);
}
/**
* @return the ownerName
*/
public String getOwnerName(PersistenceManager pm) {
if (!this.isDecrypted) {
Query q = pm.newQuery("javax.jdo.query.SQL", "SELECT sp_cm_dec_fu(?) FROM sysibm.sysdummy1");
q.setUnique(true);
this.setDecName((String) q.execute(this.getEncName()));
this.isDecrypted = true;
}
return this.getDecName();
}
public MDept getOwnerParty(PersistenceManager pm) {
return this.getDept(pm).getRootDept(pm);
}
/**
* @return the ownerPhone
*/
public String getOwnerPhone() {
return MString.checkNull(ownerPhone);
}
public Date getRegDate() {
return this.regDate;
}
public MDept getRepDept(PersistenceManager pm) {
return pm.getObjectById(MDept.class, this.masterDept);
}
public Date getStartDate() {
return this.startDate;
}
public TotRange getTotRange() {
return this.totRange;
}
public TotDocType getType() {
return this.type;
}
public MUser getUser(PersistenceManager pm) {
try {
return pm.getObjectById(MUser.class, this.mUser);
} catch (JDOObjectNotFoundException jonfe) {
MUser nullUser = new MUser();
nullUser.setId(this.mUser);
return nullUser;
}
}
public String isDeleted() {
return this.isDeleted;
}
public final void setAcceptanceLimitStrategy(AcceptanceLimitStrategy acceptanceLimitStrategy) {
this.acceptanceLimitStrategy = acceptanceLimitStrategy == null ? null : acceptanceLimitStrategy.getId();
}
public void setAccessAuth(AccessAuth accAuth) {
this.accessAuth = accAuth;
}
public void setAppendType(TotDocAppendType appendType) {
this.appendType = appendType;
}
private void setDecName(String decName) {
this.decName = decName;
}
public void setDeleted(String isDeleted) {
this.isDeleted = isDeleted;
}
public final void setDept(String mDept) {
this.mDept = mDept;
}
public void setEndDate(Date edDate) {
this.endDate = edDate;
}
public final void setExecutionCode(ExecutionCode executionCode) {
this.executionCode = executionCode == null ? null : executionCode.toString();
}
public void setFixNum(int num) {
this.fixNum = num;
}
public final void setForm(String form) {
this.form = form;
}
public void setGroup(Long group) {
this.group = group;
}
public void setHandyName(String name) {
this.handyName = name;
}
/**
* @param id
* the id to set
*/
public void setId(Long id) {
this.id = id;
}
public final void setManagementCode(String managementCode) {
this.managementCode = managementCode;
}
public void setMasterTotDoc(TotDoc doc) {
this.masterTotDoc = doc == null ? null : doc.getId();
}
public final void setName(String name) {
this.name = name;
}
/**
* @param ownerEmail the ownerEmail to set
*/
protected void setOwnerEmail(String ownerEmail) {
this.ownerEmail = ownerEmail;
}
/**
* @param ownerName the ownerName to set
*/
protected void setOwnerName(String ownerName) {
this.ownerName = ownerName;
}
/**
* @param ownerPhone the ownerPhone to set
*/
protected void setOwnerPhone(String ownerPhone) {
this.ownerPhone = ownerPhone;
}
public void setRegDate(Date regDate) {
this.regDate = regDate;
}
public void setRepDept(String masterDept) {
this.masterDept = masterDept;
}
public void setStartDate(Date stDate) {
this.startDate = stDate;
}
public void setTotRange(TotRange r) {
this.totRange = r;
}
public void setType(TotDocType t) {
this.type = t;
}
public final void setUser(MUser mUser) {
if (mUser == null) {
this.mUser = null;
setOwnerEmail(null);
setOwnerName(null);
setOwnerPhone(null);
} else {
LOG.debug("tot doc user id: {}", mUser.getId());
this.mUser = mUser.getId();
setOwnerEmail(mUser.getEmail());
setOwnerName(mUser.getEncName());
setOwnerPhone(mUser.getPhone());
}
}
}