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.
1041 lines
39 KiB
1041 lines
39 KiB
package kr.co.kihyun.beans.entity; |
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
import java.util.Calendar; |
|
import java.util.Collections; |
|
import java.util.Date; |
|
import java.util.HashMap; |
|
import java.util.HashSet; |
|
import java.util.List; |
|
import java.util.Map; |
|
import java.util.Set; |
|
|
|
import javax.jdo.JDOObjectNotFoundException; |
|
import javax.jdo.PersistenceManager; |
|
import javax.jdo.Query; |
|
import javax.jdo.annotations.IdentityType; |
|
import javax.jdo.annotations.NullValue; |
|
import javax.jdo.annotations.PersistenceCapable; |
|
import javax.jdo.annotations.Persistent; |
|
import kr.co.kihyun.beans.entity.ecross.IRemotePersistable; |
|
|
|
import kr.co.kihyun.beans.entity.util.QueryImpl; |
|
import kr.co.kihyun.io.IUploadable; |
|
//import kr.co.kihyun.lang.MString; |
|
|
|
import org.slf4j.Logger; |
|
import org.slf4j.LoggerFactory; |
|
//import kr.co.kihyun.db.DBManager; |
|
|
|
@PersistenceCapable(identityType = IdentityType.APPLICATION, detachable = "true") |
|
public class TotDoc extends AbstractPublicDocument implements IUploadable, IRemotePersistable{ |
|
|
|
/** |
|
* |
|
*/ |
|
private static final long serialVersionUID = 9200425438952946683L; |
|
private static final Logger LOG = LoggerFactory.getLogger(TotDoc.class); |
|
private static final boolean DEFAULT_REPORT_RECURSION = true; |
|
//v2. 5.static final 필드 변조 가능성 : Update by KWON,HAN |
|
// public static final int PROCESS_FORM = TotDocProcess.FORM.ordinal(); |
|
// public static final int PROCESS_REG = TotDocProcess.REG.ordinal(); |
|
// public static final int PROCESS_PRSS = TotDocProcess.PRSS.ordinal(); |
|
// public static final int PROCESS_END = TotDocProcess.END.ordinal(); |
|
// public static final int PROCESS_CANCEL = TotDocProcess.CANCEL.ordinal(); |
|
// public static final int PROCESS_REASSIGN = TotDocProcess.REG.ordinal(); |
|
// public static final int PROCESS_READ = TotDocProcess.READ.ordinal(); |
|
// public static final int PROCESS_ALL = TotDocProcess.ALL.ordinal(); |
|
// public static final int ACCESSAUTH_PER = AccessAuth.PER.ordinal(); |
|
// public static final int ACCESSAUTH_DEPT = AccessAuth.DEPT.ordinal(); |
|
// public static final int ACCESSAUTH_PART = AccessAuth.PART.ordinal(); |
|
// public static final int ACCESSAUTH_ALL = AccessAuth.ALL.ordinal(); |
|
|
|
//<참고> 아래의 변수는 사용되지 않는다. |
|
public static final int PROCESS_FORM = TotDocProcess.FORM.ordinal(); |
|
public static final int PROCESS_REG = TotDocProcess.REG.ordinal(); |
|
public static final int PROCESS_PRSS = TotDocProcess.PRSS.ordinal(); |
|
public static final int PROCESS_END = TotDocProcess.END.ordinal(); |
|
public static final int PROCESS_CANCEL = TotDocProcess.CANCEL.ordinal(); |
|
public static final int PROCESS_REASSIGN = TotDocProcess.REG.ordinal(); |
|
public static final int PROCESS_READ = TotDocProcess.READ.ordinal(); |
|
public static final int PROCESS_ALL = TotDocProcess.ALL.ordinal(); |
|
public static final int ACCESSAUTH_PER = AccessAuth.PER.ordinal(); |
|
public static final int ACCESSAUTH_DEPT = AccessAuth.DEPT.ordinal(); |
|
public static final int ACCESSAUTH_PART = AccessAuth.PART.ordinal(); |
|
public static final int ACCESSAUTH_ALL = AccessAuth.ALL.ordinal(); |
|
//========================================================== |
|
@Persistent |
|
private String name; |
|
@Persistent |
|
private String executionCode; |
|
@Persistent |
|
private Long group; |
|
@Persistent |
|
private String mUser; // COLUMN: user_id |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private Date startDate = Calendar.getInstance().getTime(); |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private Date endDate = Calendar.getInstance().getTime(); |
|
@Persistent(customValueStrategy = "timestamp", nullValue = NullValue.EXCEPTION) |
|
private Date regDate; |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private AccessAuth accessAuth = AccessAuth.PER; |
|
@Persistent |
|
private String form; |
|
@Persistent |
|
private TotDoc masterTotDoc; // COLUMN: rep_id |
|
@Persistent(mappedBy = "slaveTotDoc") |
|
private TotReport masterTotReport; |
|
@Persistent(mappedBy = "masterTotDoc") |
|
private Set<TotDoc> slaveTotDocs; |
|
@Persistent |
|
private MDept masterDept; // COLUMN: rep_dept_id |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private String isDeleted = "N"; // COLUMN: del_type |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private TotDocAppendType appendType = TotDocAppendType.COPY; |
|
@Persistent |
|
private TotDocType type = TotDocType.TOT_DOC; // COLUMN: group_id |
|
/*@Persistent |
|
private String mDept; //COLUMN: dept_id*/ |
|
@Persistent |
|
private MDept mDept; |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private int fixNum = 0; |
|
@Persistent |
|
private String handyName; |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private TotRange totRange = TotRange.INTERNAL; |
|
@Persistent(mappedBy = "totDoc") |
|
private Board board; |
|
@Persistent(nullValue = NullValue.EXCEPTION) |
|
private AcceptanceLimitStrategy acceptanceLimitStrategy = AcceptanceLimitStrategy.create("LimitByDeadlineStrategy", Long.MAX_VALUE); |
|
@Persistent(mappedBy = "totDoc") |
|
private List<TotItem> totItems = new ArrayList<TotItem>(); |
|
@Persistent(mappedBy = "totDoc") |
|
private Set<TotReport> totReports = new HashSet<TotReport>(); |
|
@Persistent(mappedBy = "totDoc") |
|
private Set<TotTable> totTables = new HashSet<TotTable>(); |
|
|
|
@Persistent(nullValue = NullValue.DEFAULT) |
|
private String autoRtnYn = "Y"; //자동회수여부(기본값:Y.자동회수) |
|
@Persistent(nullValue = NullValue.DEFAULT) |
|
private String periodicalDocYn = "N"; //정기집계여부(기본값:N.수시집계) |
|
|
|
public TotDoc() { |
|
} |
|
|
|
public TotDoc(String name, MDept dept, String form) { |
|
this.setName(name); |
|
this.setDept(dept); |
|
this.setForm(form); |
|
} |
|
|
|
public String getAutoRtnYn() { |
|
return autoRtnYn; |
|
} |
|
|
|
public void setAutoRtnYn(String autoRtnYn) { |
|
this.autoRtnYn = autoRtnYn; |
|
} |
|
|
|
public String getPeriodicalDocYn() { |
|
return periodicalDocYn; |
|
} |
|
|
|
public void setPeriodicalDocYn(String periodicalDocYn) { |
|
this.periodicalDocYn = periodicalDocYn; |
|
} |
|
|
|
public String getName() { |
|
return this.name; |
|
} |
|
|
|
public final void setName(String name) { |
|
this.name = name; |
|
} |
|
|
|
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 final void setExecutionCode(ExecutionCode executionCode) { |
|
this.executionCode = executionCode == null ? null : executionCode.toString(); |
|
} |
|
|
|
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 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()); |
|
} |
|
} |
|
|
|
public String getUser() |
|
{ |
|
return mUser; |
|
} |
|
|
|
public Date getStartDate() { |
|
// 미진행자료에 시간을 표기하기 위하여 아래 내용을 주석처리함. |
|
// if (this.startDate.after(new Date()) && |
|
// this.getAcceptanceLimitStrategy().getProcess() == TotDocProcess.PRSS) |
|
// return null; |
|
// if (this.getAcceptanceLimitStrategy().getProcess() == TotDocProcess.REG) |
|
// return startDate; |
|
// |
|
return this.startDate; |
|
} |
|
|
|
public void setStartDate(Date stDate) { |
|
this.startDate = stDate; |
|
} |
|
|
|
public Date getEndDate() { |
|
return this.endDate; |
|
} |
|
|
|
public void setEndDate(Date edDate) { |
|
this.endDate = edDate; |
|
} |
|
|
|
public Date getRegDate() { |
|
return this.regDate; |
|
} |
|
|
|
public void setRegDate(Date regDate) { |
|
this.regDate = regDate; |
|
} |
|
|
|
public AccessAuth getAccessAuth() { |
|
return this.accessAuth; |
|
} |
|
|
|
public void setAccessAuth(AccessAuth accAuth) { |
|
this.accessAuth = accAuth; |
|
} |
|
|
|
public String getForm() { |
|
return this.form; |
|
} |
|
|
|
public final void setForm(String form) { |
|
this.form = form; |
|
} |
|
|
|
public TotDoc getMasterTotDoc() { |
|
return this.masterTotDoc; |
|
} |
|
|
|
public void setMasterTotDoc(TotDoc doc) { |
|
this.masterTotDoc = doc; |
|
} |
|
|
|
public Set<TotDoc> getSlaveTotDocs() { |
|
return Collections.unmodifiableSet(this.slaveTotDocs); |
|
} |
|
|
|
public String getRepDept() { |
|
if (masterDept == null) { |
|
return null; |
|
} |
|
return this.masterDept.getId(); |
|
} |
|
|
|
public MDept getRepDept(PersistenceManager pm) { |
|
if (masterDept == null) { |
|
return null; |
|
} |
|
return pm.getObjectById(MDept.class, this.masterDept.getId()); |
|
} |
|
|
|
public void setRepDept(MDept masterDept) { |
|
if (masterDept == null) { |
|
this.masterDept = null; |
|
} else { |
|
this.masterDept = masterDept; |
|
} |
|
} |
|
|
|
public String isDeleted() { |
|
return this.isDeleted; |
|
} |
|
|
|
public void setDeleted(String isDeleted) { |
|
this.isDeleted = isDeleted; |
|
} |
|
|
|
public TotDocProcess getProcess(PersistenceManager pm) { |
|
return this.getAcceptanceLimitStrategy().getProcess(pm); |
|
} |
|
|
|
public void setProcess(TotDocProcess p) { |
|
this.getAcceptanceLimitStrategy().setProcess(p); |
|
} |
|
|
|
public void setAppendType(TotDocAppendType appendType) { |
|
this.appendType = appendType; |
|
} |
|
|
|
public TotDocAppendType getAppendType() { |
|
return appendType; |
|
} |
|
|
|
public TotDocType getType() { |
|
return this.type; |
|
} |
|
|
|
public void setType(TotDocType t) { |
|
this.type = t; |
|
} |
|
|
|
public String getDept() { |
|
return this.mDept.getId(); |
|
} |
|
|
|
public MDept getDept(PersistenceManager pm) { |
|
try { |
|
return pm.getObjectById(MDept.class, this.mDept.getId()); |
|
} catch (JDOObjectNotFoundException jonfe) { |
|
return null; |
|
} |
|
} |
|
|
|
public final void setDept(MDept mDept) { |
|
if (mDept == null) { |
|
this.mDept = null; |
|
} else { |
|
this.mDept = mDept; |
|
} |
|
} |
|
|
|
public int getFixNum() { |
|
return this.fixNum; |
|
} |
|
|
|
public void setFixNum(int num) { |
|
this.fixNum = num; |
|
} |
|
|
|
public String getHandyName() { |
|
return this.handyName; |
|
} |
|
|
|
public void setHandyName(String name) { |
|
this.handyName = name; |
|
} |
|
|
|
@Override |
|
public Map<String, List<Byte>> getAttachments() { |
|
return this.getBoard().getAttachments(); |
|
} |
|
|
|
@Override |
|
public void addAttachment(String key, List<Byte> value) { |
|
this.getBoard().addAttachment(key, value); |
|
} |
|
|
|
@Override |
|
public List<Byte> removeAttachment(String key) { |
|
return this.getBoard().removeAttachment(key); |
|
} |
|
|
|
/** |
|
* @return the masterTotReport |
|
*/ |
|
public TotReport getMasterTotReport() { |
|
return masterTotReport; |
|
} |
|
|
|
/** |
|
* @param masterTotReport the masterTotReport to set |
|
*/ |
|
public void setMasterTotReport(TotReport masterTotReport) { |
|
this.masterTotReport = masterTotReport; |
|
} |
|
|
|
public static enum TotRange { |
|
|
|
INTERNAL("내부집계"), EXTERNAL("기관학교집계"); |
|
private String name; |
|
|
|
private TotRange(String name) { |
|
this.name = name; |
|
} |
|
|
|
//v2. 5.static final 필드 변조 가능성 : Update by KWON,HAN |
|
//private는 같은 클래스 내에서만 호출이 가능하므로 접근제한이 없는 public으로 하고 final을 사용하지 않는다 |
|
// public static final TotRange asTotRange(int rangeNum) { |
|
public static TotRange asTotRange(int rangeNum) { |
|
//LOG.debug("v2. 5.static final 필드 변조 가능성 : TotDoc.asTotRange() values()[rangeNum]={}, Test OK", values()[rangeNum]); |
|
return values()[rangeNum]; |
|
} |
|
//========================================================== |
|
|
|
@Override |
|
public String toString() { |
|
return name; |
|
} |
|
} |
|
|
|
public TotRange getTotRange() { |
|
return this.totRange; |
|
} |
|
|
|
public void setTotRange(TotRange r) { |
|
this.totRange = r; |
|
} |
|
|
|
public Board getBoard() { |
|
return this.board; |
|
} |
|
|
|
public void setBoard(Board board) { |
|
this.board = board; |
|
} |
|
|
|
public final AcceptanceLimitStrategy getAcceptanceLimitStrategy() { |
|
return this.acceptanceLimitStrategy; |
|
} |
|
|
|
public final void setAcceptanceLimitStrategy(AcceptanceLimitStrategy acceptanceLimitStrategy) { |
|
this.acceptanceLimitStrategy = acceptanceLimitStrategy; |
|
} |
|
|
|
public List<TotItem> getTotItems() { |
|
return Collections.unmodifiableList(this.totItems); |
|
} |
|
|
|
public void addItem(TotItem item) { |
|
this.totItems.add(item); |
|
} |
|
|
|
public void removeTotItem(TotItem item) { |
|
this.totItems.remove(item); |
|
} |
|
|
|
public Set<TotReport> getTotReports() { |
|
return Collections.unmodifiableSet(this.totReports); |
|
} |
|
|
|
public void addTotReport(TotReport totReport) { |
|
this.totReports.add(totReport); |
|
} |
|
|
|
public void removeTotReport(TotReport totReport) { |
|
this.totReports.remove(totReport); |
|
} |
|
|
|
public Set<TotTable> getTotTables() { |
|
return Collections.unmodifiableSet(this.totTables); |
|
} |
|
|
|
public void addTotTable(TotTable totTable) { |
|
this.totTables.add(totTable); |
|
} |
|
|
|
public void removeTotTable(TotTable totTable) { |
|
this.totTables.remove(totTable); |
|
} |
|
|
|
public void setGroup(Long group) { |
|
this.group = group; |
|
} |
|
|
|
public Long getGroup() { |
|
return group; |
|
} |
|
|
|
public List<Board> getBoards(PersistenceManager pm, Category category) { |
|
return this.getBoards(pm, category, null); |
|
} |
|
|
|
public List<Board> getBoards(PersistenceManager pm, Category category, String filterKey, String filterValue) { |
|
Map<String, Object> filterMap = new HashMap<String, Object>(1); |
|
filterMap.put(filterKey, filterValue); |
|
return this.getBoards(pm, category, filterMap); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<Board> getBoards(PersistenceManager pm, Category category, Map<String, Object> filterMap) { |
|
QueryImpl q = new QueryImpl(pm, Board.class); |
|
q.setFilter("category == board_category && (totDoc == tot_doc || totDoc == tot_doc.masterTotDoc)"); |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.Category board_category"); |
|
q.setSearchFilter(filterMap); |
|
q.setOrdering("id desc"); |
|
|
|
return (List<Board>) q.execute(this, category); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
public List<TotReport> getAllReports(PersistenceManager pm, boolean recursive) { |
|
return this.getAllReports(pm, null, recursive); |
|
} |
|
|
|
public List<TotReport> getAllReports(PersistenceManager pm, String filterKey, Object filterValue) { |
|
return this.getAllReports(pm, filterKey, filterValue, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
public List<TotReport> getAllReports(PersistenceManager pm, String filterKey, Object filterValue, boolean recursive) { |
|
Map<String, Object> filterMap = new HashMap<String, Object>(1); |
|
filterMap.put(filterKey, filterValue); |
|
return this.getAllReports(pm, filterMap, recursive); |
|
} |
|
|
|
public List<TotReport> getAllReports(PersistenceManager pm, Map<String, Object> filterMap) { |
|
return this.getAllReports(pm, filterMap, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
public List<TotReport> getSortOrgReports(PersistenceManager pm) { |
|
return this.getSortOrgReports(pm, null, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getSortOrgReports(PersistenceManager pm, Map<String, Object> filterMap, boolean recursive) { |
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
|
|
q.setFilter("totDoc == tot_doc && isDeleted == 'N'"); |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
q.setSearchFilter(filterMap); |
|
q.setOrdering("mDept.organ ASC, mDept.upperDept, mDept.grade ASC,mDept.foundation ASC, mDept.name ASC"); |
|
|
|
//System.out.println(QueryImpl.SQL); |
|
|
|
List<TotReport> reportList = (List<TotReport>) q.execute(this); |
|
return recursive ? this.getRecursiveAllReports(pm, reportList, filterMap) : reportList; |
|
} |
|
|
|
public List<TotReport> getSortSchReports(PersistenceManager pm) { |
|
return this.getSortSchReports(pm, null, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getSortSchReports(PersistenceManager pm, Map<String, Object> filterMap, boolean recursive) { |
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
|
|
q.setFilter("totDoc == tot_doc && isDeleted == 'N'"); |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
q.setSearchFilter(filterMap); |
|
q.setOrdering("mDept.grade ASC,mDept.foundation ASC, mDept.organ ASC, mDept.upperDept, mDept.name ASC"); |
|
|
|
//System.out.println(QueryImpl.SQL); |
|
|
|
List<TotReport> reportList = (List<TotReport>) q.execute(this); |
|
return recursive ? this.getRecursiveAllReports(pm, reportList, filterMap) : reportList; |
|
} |
|
|
|
|
|
public List<TotReport> getAllReports(PersistenceManager pm) { |
|
return this.getAllReports(pm, null, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getAllReports(PersistenceManager pm, Map<String, Object> filterMap, boolean recursive) { |
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
|
|
q.setFilter("totDoc == tot_doc && isDeleted == 'N'"); |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
q.setSearchFilter(filterMap); |
|
q.setOrdering(" mDept.grade ASC, mDept.foundation ASC, mDept.organ ASC, mDept.upperDept, mDept.name ASC"); |
|
|
|
//System.out.println("totDoc java getAllReports:::::쿼리:::::"+QueryImpl.SQL); |
|
|
|
List<TotReport> reportList = (List<TotReport>) q.execute(this); |
|
return recursive ? this.getRecursiveAllReports(pm, reportList, filterMap) : reportList; |
|
} |
|
|
|
public List<TotReport> getSortReports2(PersistenceManager pm,String key,String value) { |
|
return this.getSortReports2(pm, key,value, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getSortReports2(PersistenceManager pm,String key,String value, boolean recursive) |
|
{ |
|
List tmpList=null; |
|
StringBuilder filter = new StringBuilder(); |
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
List<TotReport> reportList=null; |
|
filter.append("totDoc == tot_doc && isDeleted == 'N'"); |
|
q.setFilter(filter.toString()); |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
q.setOrdering("mDept.grade ASC,mDept.foundation ASC,mDept.organ ASC,mDept.upperDept DESC,mDept.name ASC"); |
|
reportList=(List<TotReport>) q.execute(this); |
|
reportList=this.getRecursiveAllReports(pm, reportList, null); |
|
List<TotReport> reportList2=new ArrayList<TotReport>(); |
|
if(value!=null && !value.equals("")) |
|
{ |
|
for(TotReport report:reportList) |
|
{ |
|
String tmp1=report.getDept(pm).getName(); |
|
String tmp2=report.getDept(pm).getOrgan(pm).getName(); |
|
String tmp3=report.getOwnerName(pm); |
|
if(tmp1!=null && tmp1.indexOf(value)>=0) { reportList2.add(report); continue; } |
|
if(tmp2!=null && tmp2.indexOf(value)>=0) { reportList2.add(report); continue; } |
|
if(tmp3!=null && tmp3.indexOf(value)>=0) { reportList2.add(report); continue; } |
|
} |
|
return reportList2; |
|
} |
|
else return reportList; |
|
} |
|
|
|
public List<TotReport> getAllReports2(PersistenceManager pm,String key,String value) { |
|
return this.getAllReports2(pm, key,value, DEFAULT_REPORT_RECURSION); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getAllReports2(PersistenceManager pm,String key,String value, boolean recursive) |
|
{ |
|
List tmpList=null; |
|
StringBuilder filter = new StringBuilder(); |
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
List<TotReport> reportList=null; |
|
filter.append("totDoc == tot_doc && isDeleted == 'N'"); |
|
q.setFilter(filter.toString()); |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
q.setOrdering("mDept.organ ASC,mDept.upperDept,mDept.grade ASC,mDept.foundation ASC, mDept.name ASC"); |
|
reportList=(List<TotReport>) q.execute(this); |
|
reportList=this.getRecursiveAllReports(pm, reportList, null); |
|
List<TotReport> reportList2=new ArrayList<TotReport>(); |
|
if(value!=null && !value.equals("")) |
|
{ |
|
for(TotReport report:reportList) |
|
{ |
|
String tmp1=report.getDept(pm).getName(); |
|
String tmp2=report.getDept(pm).getOrgan(pm).getName(); |
|
String tmp3=report.getOwnerName(pm); |
|
if(tmp1!=null && tmp1.indexOf(value)>=0) { reportList2.add(report); continue; } |
|
if(tmp2!=null && tmp2.indexOf(value)>=0) { reportList2.add(report); continue; } |
|
if(tmp3!=null && tmp3.indexOf(value)>=0) { reportList2.add(report); continue; } |
|
} |
|
return reportList2; |
|
} |
|
else return reportList; |
|
} |
|
|
|
public List<TotReport> getPrssReports(PersistenceManager pm, int listType, String filterKey, Object filterValue,String howSort) { |
|
return getPrssReports(pm, TotReportProcess.values()[listType], filterKey, filterValue, howSort); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getPrssReports(PersistenceManager pm, TotReportProcess process, String filterKey,Object filterValue,String howSort) { |
|
|
|
//45.semicolon 사용 오류(CWE-483) Update by YOUNGJUN,CHO |
|
String ordering = "mDept.organ ASC, mDept.upperDept, mDept.grade, mDept.foundation ASC, mDept.name ASC"; |
|
if(howSort == null || howSort.equals("")) { |
|
ordering="mDept.organ ASC, mDept.upperDept, mDept.grade, mDept.foundation ASC, mDept.name ASC"; |
|
}else{ |
|
ordering = howSort; |
|
} |
|
List tmpList=null; |
|
|
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
|
|
StringBuilder filter = new StringBuilder(); |
|
filter.append("totDoc == tot_doc && isDeleted == 'N'"); |
|
|
|
if(process == TotReportProcess.NOT_REPORT) { |
|
filter.append(" && process.ordinal() < TotReportProcess.COMP.ordinal()"); |
|
} else if(process == TotReportProcess.ALL) { |
|
// do nothing. |
|
filter.append(""); |
|
} else { |
|
if(process == TotReportProcess.COMP) { |
|
filter.append(" && process == prss "); |
|
} else if(process == TotReportProcess.NOTE) { |
|
filter.append(" && process == prss "); |
|
} else { |
|
filter.append(" && process == prss"); |
|
} |
|
} |
|
|
|
/* |
|
if (filterKey.equals("mDept.name")) { |
|
tmpList=getSearchDept(pm,filterValue); |
|
filter.append(" && tmpList.contains(mDept)"); |
|
//filter.append(" && mDept.contains(tmpList)"); |
|
} |
|
*/ |
|
|
|
if(howSort!=null && !howSort.equals("")) { |
|
filter.append("&& submitDate != null"); |
|
} |
|
|
|
q.setFilter(filter.toString()); |
|
q.setOrdering(ordering); |
|
|
|
if(process != TotReportProcess.ALL && process != TotReportProcess.NOT_REPORT) { |
|
/* |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss,java.util.List tmpList"); |
|
return (List<TotReport>) q.execute(this, process,tmpList); |
|
} |
|
*/ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss"); |
|
//v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 |
|
return (List<TotReport>) q.execute(this, process); |
|
//================ |
|
} else { |
|
/* |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc,java.util.List tmpList"); |
|
return (List<TotReport>) q.execute(this,tmpList); |
|
} |
|
*/ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
return (List<TotReport>) q.execute(this); |
|
} |
|
//================================================ |
|
} |
|
|
|
public List<TotReport> getPrssFoundReports(PersistenceManager pm, int listType, String filterKey, Object filterValue,String howSort) { |
|
return getPrssFoundReports(pm, TotReportProcess.values()[listType], filterKey, filterValue, howSort); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getPrssFoundReports(PersistenceManager pm, TotReportProcess process, String filterKey,Object filterValue,String howSort) { |
|
//System.out.println("getPrssFoundReports:::::타기"); |
|
//45.semicolon 사용 오류(CWE-483) Update by YOUNGJUN,CHO |
|
String ordering="mDept.grade,mDept.foundation ASC,mDept.organ ASC,mDept.upperDept,mDept.name ASC"; |
|
if(howSort==null || howSort.equals("")) { |
|
ordering="mDept.grade,mDept.foundation ASC,mDept.organ ASC,mDept.upperDept,mDept.name ASC"; |
|
} else { |
|
ordering=howSort; |
|
} |
|
List tmpList=null; |
|
|
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
|
|
StringBuilder filter = new StringBuilder(); |
|
filter.append("totDoc==tot_doc && isDeleted == 'N'"); |
|
|
|
if(process==TotReportProcess.NOT_REPORT) { |
|
filter.append(" && process.ordinal()<TotReportProcess.COMP.ordinal()"); |
|
} else if(process == TotReportProcess.ALL) { |
|
// do nothing. |
|
filter.append(""); |
|
} else { |
|
if(process==TotReportProcess.COMP) { |
|
filter.append(" && process==prss "); |
|
} else if( process==TotReportProcess.NOTE) { |
|
filter.append(" && process==prss "); |
|
} else { |
|
filter.append(" && process==prss"); |
|
} |
|
} |
|
/* |
|
if (filterKey.equals("mDept.name")) { |
|
tmpList=getSearchDept(pm,filterValue); |
|
filter.append(" && tmpList.contains(mDept)"); |
|
//filter.append(" && mDept.contains(tmpList)"); |
|
} |
|
*/ |
|
if(howSort!=null && !howSort.equals("")) { |
|
filter.append("&& submitDate != null"); |
|
} |
|
|
|
q.setFilter(filter.toString()); |
|
q.setOrdering(ordering); |
|
|
|
if(process != TotReportProcess.ALL && process != TotReportProcess.NOT_REPORT) { |
|
/* |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss,java.util.List tmpList"); |
|
return (List<TotReport>) q.execute(this, process,tmpList); |
|
} |
|
*/ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss"); |
|
//v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 |
|
return (List<TotReport>) q.execute(this, process); |
|
//================ |
|
} else { |
|
/* |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc,java.util.List tmpList"); |
|
return (List<TotReport>) q.execute(this,tmpList); |
|
} |
|
*/ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
return (List<TotReport>) q.execute(this); |
|
} |
|
//================================================ |
|
} |
|
|
|
//설립일 정렬 2012.10.16일 추가 |
|
public List<TotReport> getFoundationFoundReports(PersistenceManager pm, int listType, String filterKey, Object filterValue,String howSort) { |
|
return getFoundationFoundReports(pm, TotReportProcess.values()[listType], filterKey, filterValue, howSort); |
|
} |
|
|
|
public List<TotReport> getFoundationFoundReports(PersistenceManager pm, TotReportProcess process, String filterKey,Object filterValue,String howSort) { |
|
//System.out.println("getFoundationFoundReports:::::타기"); |
|
|
|
//45.semicolon 사용 오류(CWE-483) Update by YOUNGJUN,CHO |
|
String ordering="mDept.grade,mDept.foundation ASC,mDept.organ ASC,mDept.upperDept,mDept.name ASC"; |
|
if(howSort==null || howSort.equals("")) { |
|
ordering="mDept.grade,mDept.foundation ASC,mDept.organ ASC,mDept.upperDept,mDept.name ASC"; |
|
} else { |
|
ordering=howSort; |
|
} |
|
|
|
List tmpList=null; |
|
|
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
|
|
StringBuilder filter = new StringBuilder(); |
|
filter.append("totDoc==tot_doc && isDeleted == 'N'"); |
|
|
|
if(process==TotReportProcess.NOT_REPORT) { |
|
filter.append(" && process.ordinal()<TotReportProcess.COMP.ordinal()"); |
|
} else if(process == TotReportProcess.ALL) { |
|
// do nothing. |
|
filter.append(""); |
|
} else { |
|
if(process==TotReportProcess.COMP) { |
|
filter.append(" && process==prss "); |
|
} else if( process==TotReportProcess.NOTE) { |
|
filter.append(" && process==prss "); |
|
} else { |
|
filter.append(" && process==prss"); |
|
} |
|
} |
|
|
|
if(howSort!=null && !howSort.equals("")) { |
|
filter.append("&& submitDate != null"); |
|
} |
|
|
|
q.setFilter(filter.toString()); |
|
q.setOrdering(ordering); |
|
|
|
if(process != TotReportProcess.ALL && process != TotReportProcess.NOT_REPORT) { |
|
/* |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss,java.util.List tmpList"); |
|
return (List<TotReport>) q.execute(this, process,tmpList); |
|
} |
|
*/ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss"); |
|
//v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 |
|
return (List<TotReport>) q.execute(this, process); |
|
//================ |
|
} else { |
|
/* |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc,java.util.List tmpList"); |
|
return (List<TotReport>) q.execute(this,tmpList); |
|
} |
|
*/ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
return (List<TotReport>) q.execute(this); |
|
} |
|
//================================================ |
|
} |
|
|
|
public List<TotReport2> getPrssReports2(PersistenceManager pm, int listType, String filterKey, Object filterValue,String howSort) { |
|
return getPrssReports2(pm, TotReportProcess.values()[listType], filterKey, filterValue, howSort); |
|
} |
|
|
|
@SuppressWarnings("unchecked") |
|
public List<TotReport2> getPrssReports2(PersistenceManager pm, TotReportProcess process, String filterKey,Object filterValue,String howSort) { |
|
|
|
String ordering="mDept.organ, mDept.upperDept, mDept.grade, mDept.foundation,mDept.name ASC"; |
|
|
|
if(howSort==null || howSort.equals("")) { |
|
ordering="mDept.organ, mDept.upperDept, mDept.grade,mDept.foundation,mDept.name ASC"; |
|
} else { |
|
ordering=howSort; |
|
} |
|
|
|
List tmpList=null; |
|
QueryImpl q = new QueryImpl(pm, TotReport2.class); |
|
|
|
StringBuilder filter = new StringBuilder(); |
|
filter.append("totDoc==tot_doc && isDeleted == 'N'"); |
|
|
|
//45.semicolon 사용 오류(CWE-483) Update by YOUNGJUN,CHO |
|
//if(process==TotReportProcess.NOT_REPORT) filter.append(" && process.ordinal()<TotReportProcess.COMP.ordinal()"); |
|
// else if(process == TotReportProcess.ALL); |
|
// else filter.append(" && process==prss"); |
|
if(process==TotReportProcess.NOT_REPORT) { |
|
filter.append(" && process.ordinal()<TotReportProcess.COMP.ordinal()"); |
|
} else if(process == TotReportProcess.ALL) { |
|
// do nothing. |
|
filter.append(""); |
|
} else { |
|
filter.append(" && process==prss"); |
|
} |
|
|
|
if (filterKey.equals("mDept.name")) { |
|
filter.append(" && mDept.name.contains(searchWord)"); |
|
} |
|
|
|
if(howSort!=null && !howSort.equals("")) { |
|
filter.append("&& submitDate != null"); |
|
} |
|
//================================================ |
|
|
|
q.setFilter(filter.toString()); |
|
q.setOrdering(ordering); |
|
|
|
if(process != TotReportProcess.ALL && process != TotReportProcess.NOT_REPORT) { |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss,String searchWord"); |
|
//v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 |
|
return (List<TotReport2>) q.execute(this, process,tmpList); |
|
//=============== |
|
} |
|
|
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss"); |
|
//v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 |
|
return (List<TotReport2>) q.execute(this, process); |
|
//=============== |
|
} else { |
|
if(filterKey.equals("mDept.name")) { |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc,String searchWord"); |
|
return (List<TotReport2>) q.execute(this,tmpList); |
|
} |
|
|
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
return (List<TotReport2>) q.execute(this); |
|
} |
|
} |
|
|
|
/******************************************************************************************************************************* |
|
@SuppressWarnings("unchecked") |
|
public List<TotReport> getPrssReports(PersistenceManager pm, TotReportProcess process, String filterKey,Object filterValue) |
|
{ |
|
QueryImpl q = new QueryImpl(pm, TotReport.class); |
|
StringBuilder filter = new StringBuilder(); |
|
filter.append("totDoc==tot_doc && isDeleted==false"); |
|
if(process==TotReportProcess.NOT_REPORT) filter.append(" && process.ordinal()<TotReportProcess.COMP.ordinal()"); |
|
else if(process == TotReportProcess.ALL); |
|
else filter.append(" && process==prss"); |
|
if (filterKey.equals("mDept.name")) |
|
{ |
|
List tmpList=getSearchDept(pm,filterValue); |
|
if(tmpList.size()>0) |
|
{ |
|
filter.append("&& ("); |
|
for(int ii=0;ii<tmpList.size();ii++) |
|
{ |
|
if(ii==0) filter.append("mDept==\""+tmpList.get(ii)+"\""); |
|
else filter.append("||mDept==\""+tmpList.get(ii)+"\""); |
|
} |
|
filter.append(")"); |
|
} |
|
} |
|
q.setFilter(filter.toString()); |
|
q.setOrdering("mDept ASC"); |
|
LOG.debug("******************************************************************************* filter {}", filter.toString()); |
|
LOG.debug("******************************************************************************* filterKey: {}",filterKey); |
|
LOG.debug("******************************************************************************* filterValue: {}",filterValue); |
|
LOG.debug("******************************************************************************* tmpList: {}",tmpList); |
|
if(process != TotReportProcess.ALL && process != TotReportProcess.NOT_REPORT) |
|
{ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc, kr.co.kihyun.beans.entity.TotReportProcess prss"); |
|
return (List<TotReport>) q.execute(this, process); |
|
} |
|
else |
|
{ |
|
q.declareParameters("kr.co.kihyun.beans.entity.TotDoc tot_doc"); |
|
return (List<TotReport>) q.execute(this); |
|
} |
|
} |
|
*******************************************************************************************************************************/ |
|
|
|
public List<String> getSearchDept(PersistenceManager pm, Object searchVal) |
|
{ |
|
try |
|
{ |
|
//System.out.println("SELECT id FROM moumi_Dept WHERE name like '%"+searchVal+"%'"); |
|
Query q=pm.newQuery("javax.jdo.query.SQL","SELECT id||organ||upper_dept FROM moumi_Dept WHERE name like '%"+searchVal+"%'"); |
|
//v2. 6.SQL 삽입 : DO형식이므로 해결책에 따른 prepare SQL 문으로 변경할 수 없음 |
|
return (List <String>) q.execute(); |
|
//================ |
|
} |
|
catch(Exception ex) |
|
{ |
|
ex.printStackTrace(); |
|
throw new UnsupportedOperationException("Error! Error!"); |
|
} |
|
} |
|
|
|
public List<TotReport> getCompReports(PersistenceManager pm) { |
|
return this.getCompReports(pm, null, null); |
|
} |
|
|
|
public List<TotReport> getCompReports(PersistenceManager pm, String filterKey, Object filterValue) { |
|
Map<String, Object> filterMap = new HashMap<String, Object>(1); |
|
filterMap.put(filterKey, filterValue); |
|
return this.getCompReports(pm, filterMap); |
|
} |
|
|
|
public List<TotReport> getCompReports(PersistenceManager pm, Map<String, Object> filterMap) { |
|
return this.getAcceptanceLimitStrategy().getCompReports(pm, filterMap); |
|
} |
|
|
|
public List<TotReport> getRecursiveAllReports(PersistenceManager pm, List<TotReport> reportList, |
|
Map<String, Object> filterMap) { |
|
List<TotReport> resultReportList = new ArrayList<TotReport>(); |
|
for (TotReport report : reportList) { |
|
if (report.getSlaveTotDoc() == null) { |
|
resultReportList.add(report); |
|
//LOG.debug("{} added.", report); |
|
} else { |
|
List<TotReport> slaveReportList = report.getSlaveTotDoc().getAllReports(pm, filterMap, false); |
|
resultReportList.addAll(getRecursiveAllReports(pm, slaveReportList, filterMap)); |
|
} |
|
} |
|
return resultReportList; |
|
} |
|
|
|
public List<TotReport> getRecursivePrssReports(PersistenceManager pm, List<TotReport> reportList, |
|
Map<String, Object> filterMap) { |
|
List<TotReport> resultReportList = new ArrayList<TotReport>(); |
|
for (TotReport report : reportList) { |
|
if (report.getSlaveTotDoc() == null) { |
|
resultReportList.add(report); |
|
//LOG.debug("{} added.", report); |
|
} else { |
|
List<TotReport> slaveReportList = report.getSlaveTotDoc().getPrssReports(pm, TotReportProcess.COMP, "", null,null); |
|
resultReportList.addAll(getRecursiveAllReports(pm, slaveReportList, filterMap)); |
|
} |
|
} |
|
return resultReportList; |
|
} |
|
|
|
@Override |
|
public MDept getOwnerParty(PersistenceManager pm) { |
|
return this.getDept(pm).getRootDept(pm); |
|
} |
|
|
|
}
|
|
|