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 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); } }