package foundation.data.rule.exists;
|
|
import java.util.List;
|
|
import foundation.action.ActionContext;
|
import foundation.action.ActionProvider;
|
import foundation.dao.DataPackage;
|
import foundation.dao.DataSource;
|
import foundation.dao.PackageItem;
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.object.DataObject;
|
|
public class ExistsValidator extends ActionProvider {
|
|
@Override
|
protected void publishMethod() {
|
addMethod("checkExists");
|
|
}
|
|
public void checkExists() throws Exception {
|
DataPackage dataPackage = dataReader.getDataPackage();
|
boolean isCheck = dataReader.getBoolean("check_exists", true);
|
String dataName = dataReader.getString("dataname");
|
boolean existsResult = false;
|
|
if(!isCheck) {
|
logger.info("dataName: {}, do not check this time", dataReader.getString("dataname"));
|
return ;
|
}
|
|
if (dataPackage == null ) {
|
logger.info("datapackage is null, cannot check exists; dataName: " + dataName);
|
return ;
|
}
|
|
// 1.检查主表
|
DataObject dataObject = dataPackage.getMasterDataObject();
|
Entity masterEntity = dataPackage.getMasterEntity();
|
|
masterEntity = dataPackage.getMasterEntity();
|
existsResult = dataObject.existsValidate(masterEntity);
|
|
// 2.检查明细
|
dataPackage.loadOneDataFromDB();
|
List<PackageItem> slaveItems = dataPackage.getSlaveItems();
|
|
for (PackageItem item: slaveItems){
|
String itemName = item.getName();
|
dataObject = DataObject.getInstance(itemName);
|
EntitySet detailEntitySet = dataPackage.getItemEntitySet(itemName, DataSource.DB);
|
|
if(dataObject.existsValidate(detailEntitySet)) {
|
existsResult = true;
|
}
|
}
|
|
if(existsResult) {
|
task.terminate();
|
}
|
}
|
|
public boolean checkExists(DataPackage dataPackage, ActionContext context) throws Exception {
|
dataReader = context.getDataReader();
|
boolean isCheck = dataReader.getBoolean("check_exists", true);
|
String dataName = dataReader.getString("dataname");
|
boolean existsResult = false;
|
|
if(!isCheck) {
|
logger.info("dataName: {}, do not check this time", dataReader.getString("dataname"));
|
return false;
|
}
|
|
if (dataPackage == null ) {
|
logger.info("datapackage is null, cannot check exists; dataName: " + dataName);
|
return false;
|
}
|
|
// 1.检查主表
|
DataObject dataObject = dataPackage.getMasterDataObject();
|
Entity masterEntity = dataPackage.getMasterEntity(DataSource.Request);
|
|
existsResult = dataObject.existsValidate(masterEntity);
|
|
// 2.检查明细
|
dataPackage.loadOneDataFromDB();
|
List<PackageItem> slaveItems = dataPackage.getSlaveItems();
|
|
for (PackageItem item: slaveItems){
|
String itemName = item.getName();
|
dataObject = DataObject.getInstance(itemName);
|
EntitySet detailEntitySet = dataPackage.getItemEntitySet(itemName, DataSource.Request);
|
|
if(dataObject.existsValidate(detailEntitySet)) {
|
existsResult = true;
|
}
|
}
|
|
return existsResult;
|
}
|
}
|