package foundation.clean;
|
|
import java.util.List;
|
|
import foundation.action.ActionProvider;
|
import foundation.dao.DataPackage;
|
import foundation.dao.DataSource;
|
import foundation.dao.Domain;
|
import foundation.data.entity.Entity;
|
import foundation.data.entity.EntitySet;
|
import foundation.data.object.DataObject;
|
import foundation.json.JArrayReader;
|
import foundation.json.JSONReader;
|
import foundation.json.JType;
|
import foundation.util.Util;
|
|
public class CleanHandler extends ActionProvider {
|
|
@Override
|
protected void publishMethod() {
|
//1. 过滤数组(来自请求)
|
addMethod("cleanValueArray");
|
|
//2. 过滤对象数组(来自请求)
|
addMethod("cleanObjectArray");
|
|
//3. 过滤对象数组(来自数据库)
|
addMethod("cleanEntitySet");
|
}
|
|
public void cleanValueArray() throws Exception {
|
//1. 获取清洗规则
|
String cleanName = dataReader.getString("clean_name");
|
CleanBucket cleanBucket = CleanBucket.getInstance();
|
CleanEngine cleanEngine = cleanBucket.get(cleanName);
|
|
//2. 获取清洗数据
|
List<String> list = dataReader.getStringList("data");
|
CleanResult cleanResult = new CleanResult();
|
|
//3. 数据清洗
|
for (String value : list) {
|
String result = cleanEngine.modify(value);
|
if(result != null) {
|
cleanResult.addOneOrginal(value);
|
cleanResult.addOneStandard(result);
|
}
|
}
|
dataWriter.addValue("data", cleanResult);
|
}
|
|
public void cleanObjectArray() throws Exception {
|
|
//1. 获取清洗规则
|
String cleanName = dataReader.getString("clean_name");
|
CleanBucket cleanBucket = CleanBucket.getInstance();
|
CleanEngine cleanEngine = cleanBucket.get(cleanName);
|
String field = dataReader.getString("field");
|
|
//2. 获取清洗数据
|
JArrayReader dataList = dataReader.getReader("data", JType.Array);
|
CleanResult cleanResult = new CleanResult();
|
cleanResult.setType(JType.Object);
|
//3. 数据清洗
|
for (JSONReader data : dataList) {
|
JSONReader json = cleanEngine.modify(data, field);
|
if(data != null) {
|
cleanResult.addOneStandard(json);
|
cleanResult.addOneOrginal(data);
|
}
|
}
|
|
dataWriter.addValue("data", cleanResult);
|
}
|
|
public void cleanEntitySet() throws Exception {
|
Domain domain = dataReader.getDomain();
|
DataPackage dataPackage = dataReader.getDataPackage();
|
String field = dataReader.getString("field");
|
String id = dataReader.getString("id");
|
String cleanName = dataReader.getString("clean_name");
|
boolean isLoadtoDB = dataReader.getBoolean("is_load_to_db", false);
|
String cleanDataName = dataReader.getString("clean_data_name");
|
|
//1. 获取清洗规则
|
CleanBucket cleanBucket = CleanBucket.getInstance();
|
CleanEngine cleanEngine = cleanBucket.get(cleanName);
|
CleanResult cleanResult = new CleanResult();
|
|
//2. 获取清洗数据
|
if(Util.isEmpty(id)) {
|
dataPackage.loadBatchDataFromDB();
|
EntitySet entitySet = dataPackage.getItemEntitySet(cleanDataName, DataSource.DB);
|
DataObject dataObject = dataPackage.getDataObject(cleanDataName);
|
|
//3. 数据清洗
|
if (Util.isEmpty(cleanDataName)) {
|
cleanResult.addOneOrginal(entitySet);
|
cleanResult.addOneStandard(entitySet);
|
}
|
|
for (Entity entity: entitySet) {
|
Entity resultEntity = cleanEngine.modify(entity, field);
|
if (resultEntity != null) {
|
cleanResult.addOneOrginal(entity);
|
cleanResult.addOneStandard(resultEntity);
|
}
|
else {
|
String detailId = entity.getId();
|
entitySet.delete(detailId);
|
if (isLoadtoDB) {
|
dataObject.deleteEntity(detailId);
|
}
|
}
|
}
|
}else {
|
dataPackage.loadOneDataFromDB();
|
Entity entity = dataPackage.getItemEntity(cleanDataName, DataSource.DB);
|
DataObject dataObject = dataPackage.getDataObject(cleanDataName);
|
|
if (Util.isEmpty(cleanDataName)) {
|
cleanResult.addOneOrginal(entity);
|
cleanResult.addOneStandard(entity);
|
}
|
|
Entity resultEntity = cleanEngine.modify(entity, field);
|
if (resultEntity != null) {
|
cleanResult.addOneOrginal(entity);
|
cleanResult.addOneStandard(resultEntity);
|
}
|
else {
|
String detailId = entity.getId();
|
entity.setDeleted();
|
if (isLoadtoDB) {
|
dataObject.deleteEntity(detailId);
|
}
|
}
|
}
|
|
dataWriter.addValue("data", cleanResult);
|
|
}
|
}
|