package com.easyooo.framework.rule;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import com.easyooo.framework.rule.impl.SimpleRule;
/**
* 规则生成器
*
* @author Killer
*/
public final class RuleBuilder {
static final String PREFFIX = "Auto";
static volatile int counter = 1;
static final Language DEFAULT_LANGUAGE = Language.JAVA;
static final Integer DEFAULT_VERSION = 1;
private static String getId(){
return PREFFIX + incrementGet();
}
public static Rule build(String ruleText){
return build(getId(), ruleText, DEFAULT_LANGUAGE, DEFAULT_VERSION);
}
public static Rule build(String ruleText, Integer version ){
return build(getId(), ruleText, DEFAULT_LANGUAGE, version);
}
public static Rule build(String ruleId , String ruleText, Language language, Integer version){
return new SimpleRule(ruleId, ruleText, language, version);
}
public static Rule build(Reader reader)throws RuleException{
return build(reader, DEFAULT_LANGUAGE, DEFAULT_VERSION);
}
public static Rule build(String ruleText, Language ruleType)throws RuleException{
return build(new StringReader(ruleText), ruleType, DEFAULT_VERSION);
}
public static Rule build(Reader reader, Language ruleType)throws RuleException{
return build(reader, ruleType, DEFAULT_VERSION);
}
public static Rule build(Reader reader, Language ruleType, Integer version)throws RuleException{
BufferedReader br = null;
try{
br = new BufferedReader(reader);
StringBuffer sb = new StringBuffer();
String line = null;
while((line = br.readLine()) != null){
sb.append( line );
}
return build(getId(), sb.toString(), ruleType, version);
}catch(IOException e){
throw new RuleException(e);
}finally{
if(br != null){
try {
br.close();
} catch (IOException e) {
}
}
}
}
public static int incrementGet(){
return counter ++;
}
}