您的位置:首页 > 其它

规则文件测试类

2016-01-23 15:28 169 查看
package com.ideal.crm.modelconvert.ruleengine;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLDecoder;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.drools.builder.KnowledgeBuilder;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.io.ResourceFactory;
import org.junit.Test;

import com.ideal.crm.common.constants.Constant;
import com.ideal.crm.common.log.ILogger;
import com.ideal.crm.common.log.LoggerFactory;

public class DrlTest {
private static final ILogger logger = LoggerFactory.getLogger(DrlTest.class);
private String[] dirs = new String[]{"rules", "complete-rules", "dsync-rules"};

@Test
public void checkDrl() throws IOException {
for (String dir : dirs) {
List<String> drlErrors = new ArrayList<>();
URL url = Thread.currentThread().getContextClassLoader().getResource(dir);
handleDir(url.getPath(), drlErrors);
if (!drlErrors.isEmpty()) {
File file = new File("D:\\drlErrors_" + dir);
if (file.exists())
file.delete();
try {
file.createNewFile();
for (String drlError : drlErrors) {
FileUtils.writeStringToFile(file, drlError + "\n\n", true);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}

private void handleDir(String dir, List<String> drlErrors) throws IOException {
File drlFileDir = new File(URLDecoder.decode(dir, Constant.CHAR_ENCODING));
File[] files = drlFileDir.listFiles();
for (File file : files) {
if (file.isDirectory()) {
handleDir(file.getPath(), drlErrors);
} else if (file.isFile()) {
logger.debug(file.getName());
KnowledgeBuilder kb = KnowledgeBuilderFactory.newKnowledgeBuilder();
InputStream is = new FileInputStream(file);
kb.add(ResourceFactory.newInputStreamResource(is), ResourceType.DRL);
if (kb.hasErrors()) {
drlErrors.add("Errors in the rules:\ndrl=" + file.getName() + ", \nerrors=" + kb.getErrors().toString());
}
}
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: