ReticleFamilyManagerImpl.java
package com.mycim.server.reticle.manager.imp;
import com.fa.sesa.threadlocal.LocalContext;
import com.mycim.framework.utils.lang.StringUtils;
import com.mycim.server.base.manager.NamedObjectManager;
import com.mycim.server.base.manager.RelationManager;
import com.mycim.server.base.manager.TransactionLogManager;
import com.mycim.server.reticle.dao.ReticleFamilyDAO;
import com.mycim.server.reticle.manager.ReticleFamilyManager;
import com.mycim.valueobject.ObjectList;
import com.mycim.valueobject.bas.NamedObject;
import com.mycim.valueobject.bas.ReticleFamilyRelation;
import com.mycim.valueobject.bas.TransactionLog;
import com.mycim.valueobject.consts.DataBaseNames;
import com.mycim.valueobject.consts.TransactionNames;
import com.mycim.valueobject.ems.ReticleFamily;
import com.mycim.valueobject.prp.ProductVariableEnum;
import com.mycim.valueobject.table.RelationHistoryTable;
import com.mycim.valueobject.table.RelationTable;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class ReticleFamilyManagerImpl implements ReticleFamilyManager {
@Autowired
NamedObjectManager namedObjectManager;
@Autowired
TransactionLogManager transactionLogManager;
@Autowired
ReticleFamilyDAO reticleFamilyDAO;
@Autowired
RelationManager relationManager;
@Override
public ReticleFamily getReticleFamily(ReticleFamily reticleFamily) {
// get the rrn
NamedObject namedObject = namedObjectManager.getNamedObject(reticleFamily);
if (namedObject == null) {
return null;
}
reticleFamily.copyNamedObject(namedObject);
return reticleFamily;
}
@Override
public String getReticleFamilyStatus(String id) {
return reticleFamilyDAO.getReticleFamilyStatus(id);
}
@Override
public long insertReticleFamily(ReticleFamily reticleFamily) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(reticleFamily.getTransPerformedby(), reticleFamily.getTransId());
long instanceRrn = namedObjectManager.insertNamedObject(reticleFamily, transactionLog.getTransRrn());
//插入新主表和新历史表中的数据和记录
reticleFamilyDAO.insertReticleFamily(reticleFamily);
reticleFamilyDAO.insertReticleFamilyHistory(reticleFamily, transactionLog);
transactionLogManager.markTransactionLog(transactionLog);
return instanceRrn;
}
@Override
public void deleteReticleFamily(ReticleFamily reticleFamily) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(reticleFamily.getTransPerformedby(), reticleFamily.getTransId());
transactionLog.setTransId(TransactionNames.DELETE_KEY);
transactionLog.setTransPerformedBy(reticleFamily.getTransPerformedby());
// delete the Entity group from the table named object.
long groupRrn = namedObjectManager.deleteNamedObject(reticleFamily, transactionLog.getTransRrn());
reticleFamilyDAO.deleteReticleFamily(groupRrn);
reticleFamily.setInstanceRrn(groupRrn);
//插入新历史表中的删除记录 和 删除新表中的数据
reticleFamilyDAO.insertReticleFamilyHistory(reticleFamily, transactionLog);
reticleFamilyDAO.deleteReticleFamily(reticleFamily);
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public void updateReticleFamily(ReticleFamily reticleFamily) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(reticleFamily.getTransPerformedby(), reticleFamily.getTransId());
transactionLog.setTransId(TransactionNames.MODIFY_KEY);
namedObjectManager.updateNamedObject(reticleFamily, transactionLog.getTransRrn());
//修改新表中的数据 和 插入新历史表中的修改记录
reticleFamily.setLastUpdateTimestamp(transactionLog.getTransStartTimestamp());
reticleFamilyDAO.updateReticleFamily(reticleFamily);
reticleFamilyDAO.insertReticleFamilyHistory(reticleFamily, transactionLog);
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public long isProductLay4ReticleFamily(long reticleFamilyRrn) {
return reticleFamilyDAO.isProductLay4ReticleFamily(reticleFamilyRrn);
}
@Override
public long isProductLay(long entityRrn) {
return reticleFamilyDAO.isProductLay(entityRrn);
}
@Override
public void insertReticleFamilyRelation(ReticleFamilyRelation relation) {
if (relationManager.getRelation(relation.getFromRrn(), relation.getToRrn(), relation.getLinkType()) == null) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(relation.getTransPerformedby(), relation.getTransId().toUpperCase());
//执行原Relation的操作
relationManager.insertRelation(relation, transactionLog.getTransRrn());
//插入新拆出的表的记录
relationManager.insertSpecificRelationTable(
new RelationTable(DataBaseNames.REL_RETICLE_RETICLEFAMILY, relation, transactionLog));
relationManager.insertSpecificRelationHistoryTable(
new RelationHistoryTable(DataBaseNames.REL_RETICLE_RETICLEFAMILY_H,
DataBaseNames.REL_RETICLE_RETICLEFAMILY, relation, transactionLog));
transactionLogManager.markTransactionLog(transactionLog);
}
}
@Override
public void deleteReticleFamilyRelation(ReticleFamilyRelation relation) {
TransactionLog transactionLog = transactionLogManager
.startTransactionLog(relation.getTransPerformedby(), relation.getTransId().toUpperCase());
//先执行原 Relation 表的操作
relationManager.deleteRelation(relation, transactionLog.getTransRrn());
relationManager.deleteSpecificRelationTable(relation, DataBaseNames.REL_RETICLE_RETICLEFAMILY, DataBaseNames.REL_RETICLE_RETICLEFAMILY_H, transactionLog);
transactionLogManager.markTransactionLog(transactionLog);
}
@Override
public String checkReticleFamilyAndCreate(String reticleFamilyId) {
boolean availableFlag = ProductVariableEnum.isUnAvailableFlag(reticleFamilyId);
if (availableFlag) {
return "Reticle Group ID: " + reticleFamilyId + " cannot contain spaces, quotes or commas!<br>";
}
long facilityRrn = LocalContext.getFacilityRrn();
ReticleFamily reticleFamily = new ReticleFamily(reticleFamilyId, namedObjectManager
.getNamedSpace(facilityRrn, ObjectList.RETICLEFAMILY_KEY), ObjectList.RETICLEFAMILY_KEY);
reticleFamily.setObjectType(ObjectList.RETICLEFAMILY_KEY);
reticleFamily.setFacilityRrn(facilityRrn);
reticleFamily.setCreatedUserRrn(LocalContext.getUserRrn());
reticleFamily.setLastUpdateUserRrn(LocalContext.getUserRrn());
reticleFamily.setTransId(TransactionNames.CREATE_KEY);
reticleFamily.setTransPerformedby(LocalContext.getUserId());
insertReticleFamily(reticleFamily);
return StringUtils.EMPTY;
}
}