Skip to content

Commit db2ad10

Browse files
Merge pull request microDreamSheep#11 from microDreamSheep/code
配置类准备工作
2 parents f2d16ec + e0703c1 commit db2ad10

File tree

10 files changed

+92
-60
lines changed

10 files changed

+92
-60
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.midream.sheep.swcj.core.APIClassInter;
2+
3+
public interface SWCJConfigClassConfiguration {
4+
}

src/main/java/com/midream/sheep/swcj/core/factory/SWCJAbstractFactory.java

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@
1010
import com.midream.sheep.swcj.core.classtool.classloader.SWCJClassLoader;
1111
import com.midream.sheep.swcj.core.classtool.classloader.SWCJClassLoaderInter;
1212
import com.midream.sheep.swcj.core.classtool.compiler.SWCJCompiler;
13-
import com.midream.sheep.swcj.core.factory.parse.bystr.BetterXmlParseTool;
14-
import com.midream.sheep.swcj.core.factory.parse.bystr.SWCJParseI;
13+
import com.midream.sheep.swcj.core.factory.xmlfactory.bystr.SWCJParseI;
14+
import com.midream.sheep.swcj.core.factory.xmlfactory.SWCJAbstractXmlFactory;
1515
import com.midream.sheep.swcj.data.Constant;
1616
import com.midream.sheep.swcj.data.ReptileConfig;
1717
import com.midream.sheep.swcj.pojo.buildup.SWCJClass;
@@ -22,22 +22,20 @@
2222
import java.io.FileInputStream;
2323
import java.io.FileNotFoundException;
2424
import java.lang.reflect.InvocationTargetException;
25-
import java.util.*;
25+
import java.util.HashMap;
26+
import java.util.Map;
2627
import java.util.concurrent.TimeUnit;
2728
import java.util.logging.Logger;
2829

29-
/**
30-
* @author midreamsheep
31-
*/
32-
public abstract class SWCJAbstractFactory implements SWCJXmlFactory{
30+
public abstract class SWCJAbstractFactory
31+
implements SWCJFactory
32+
{
3333
//核心配置文件
3434
public static volatile ReptileConfig config = new ReptileConfig();
3535
//爬虫文件
3636
protected Map<String, SWCJClass> swcjClasses = new HashMap<>();
3737
//构造器
3838
protected SWCJBuilder swcjBuilder = null;
39-
//解析器
40-
protected SWCJParseI swcjParseI = null;
4139
//加载器
4240
protected SWCJClassLoaderInter classLoader = null;
4341
@Override
@@ -60,7 +58,7 @@ public Object getWebSpiderById(String id) throws ConfigException, EmptyMatchMeth
6058
TimeUnit.MILLISECONDS.sleep(200);
6159
i++;
6260
} catch (InterruptedException e) {
63-
Logger.getLogger(SWCJAbstractFactory.class.getName()).warning("线程暂停失败");
61+
Logger.getLogger(SWCJAbstractXmlFactory.class.getName()).warning("线程暂停失败");
6462
}
6563
if(i==10){
6664
throw new ConfigException("你的配置文件找不到id="+id);
@@ -71,7 +69,7 @@ public Object getWebSpiderById(String id) throws ConfigException, EmptyMatchMeth
7169
try {
7270
TimeUnit.MILLISECONDS.sleep(200);
7371
} catch (InterruptedException e) {
74-
Logger.getLogger(SWCJAbstractFactory.class.getName()).warning("线程暂停失败");
72+
Logger.getLogger(SWCJAbstractXmlFactory.class.getName()).warning("线程暂停失败");
7573
}
7674
}else {
7775
swcjClasses.get(id).setLoad(true);
@@ -81,32 +79,27 @@ public Object getWebSpiderById(String id) throws ConfigException, EmptyMatchMeth
8179
}
8280
}
8381
@Override
84-
public SWCJXmlFactory setCompiler(SWCJCompiler swcjCompiler) {
82+
public SWCJFactory setCompiler(SWCJCompiler swcjCompiler) {
8583
if(swcjBuilder==null){
8684
swcjBuilder = new ReptilesBuilder();
8785
}
8886
this.swcjBuilder.setCompiler(swcjCompiler);
8987
return this;
9088
}
9189
@Override
92-
public SWCJXmlFactory setBuilder(SWCJBuilder swcjBuilder) {
90+
public SWCJFactory setBuilder(SWCJBuilder swcjBuilder) {
9391
this.swcjBuilder = swcjBuilder;
9492
return this;
9593
}
96-
@Override
97-
public SWCJXmlFactory setParseTool(SWCJParseI swcjParseI) {
98-
this.swcjParseI = swcjParseI;
99-
return this;
100-
}
10194

10295
@Override
103-
public SWCJXmlFactory invokeSpecialMethod(Object... args) {
96+
public SWCJFactory invokeSpecialMethod(Object... args) {
10497
System.err.println("此工厂不存在特殊方法");
10598
return this;
10699
}
107100

108101
@Override
109-
public SWCJXmlFactory setClassLoader(SWCJClassLoaderInter classLoader) {
102+
public SWCJFactory setClassLoader(SWCJClassLoaderInter classLoader) {
110103
if(this.swcjBuilder==null){
111104
this.swcjBuilder = new ReptilesBuilder();
112105
}

src/main/java/com/midream/sheep/swcj/core/factory/SWCJXmlFactory.java renamed to src/main/java/com/midream/sheep/swcj/core/factory/SWCJFactory.java

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,13 @@
66
import com.midream.sheep.swcj.core.build.inter.SWCJBuilder;
77
import com.midream.sheep.swcj.core.classtool.classloader.SWCJClassLoaderInter;
88
import com.midream.sheep.swcj.core.classtool.compiler.SWCJCompiler;
9-
import com.midream.sheep.swcj.core.factory.parse.bystr.SWCJParseI;
10-
import org.xml.sax.SAXException;
9+
import com.midream.sheep.swcj.core.factory.xmlfactory.bystr.SWCJParseI;
1110

12-
import javax.xml.parsers.ParserConfigurationException;
13-
import java.io.File;
14-
import java.io.IOException;
1511
/**
1612
* 这是工厂类的模板,自定义工厂需要实现这些方法
1713
* @author midreamsheep
1814
* */
19-
public interface SWCJXmlFactory {
20-
/**
21-
* 通过文件流解析文件
22-
* @param xmlFile 文件流
23-
* */
24-
SWCJXmlFactory parse(File xmlFile) throws IOException, SAXException, ConfigException, ParserConfigurationException;
25-
/**
26-
* 通过文件流解析文件
27-
* @param xmlString 文件
28-
* */
29-
SWCJXmlFactory parse(String xmlString) throws IOException, SAXException, ConfigException, ParserConfigurationException;
15+
public interface SWCJFactory {
3016
/**
3117
* 获取具体的实现类
3218
* @param id 配置文件的具体id
@@ -37,25 +23,25 @@ public interface SWCJXmlFactory {
3723
* 设置编译器
3824
* @param swcjCompiler 编译器
3925
* */
40-
SWCJXmlFactory setCompiler(SWCJCompiler swcjCompiler);
26+
SWCJFactory setCompiler(SWCJCompiler swcjCompiler);
4127
/**
4228
* 设置构建器
4329
* @param swcjBuilder 构建器
4430
* */
45-
SWCJXmlFactory setBuilder(SWCJBuilder swcjBuilder);
31+
SWCJFactory setBuilder(SWCJBuilder swcjBuilder);
4632
/**
4733
* 设置类加载器
4834
* @param classLoader 加载器
4935
* */
50-
SWCJXmlFactory setClassLoader(SWCJClassLoaderInter classLoader);
36+
SWCJFactory setClassLoader(SWCJClassLoaderInter classLoader);
5137
/**
5238
* 设置解析器
5339
* @param swcjParseI 解析器
5440
* */
55-
SWCJXmlFactory setParseTool(SWCJParseI swcjParseI);
41+
SWCJFactory setParseTool(SWCJParseI swcjParseI);
5642
/**
5743
* 调用专属特殊方法
5844
* @param args 传递值
5945
* */
60-
SWCJXmlFactory invokeSpecialMethod(Object... args);
46+
SWCJFactory invokeSpecialMethod(Object... args);
6147
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package com.midream.sheep.swcj.core.factory.annotationfactory;
2+
3+
import com.midream.sheep.swcj.core.APIClassInter.SWCJConfigClassConfiguration;
4+
import com.midream.sheep.swcj.core.factory.SWCJAbstractFactory;
5+
import com.midream.sheep.swcj.core.factory.xmlfactory.bystr.SWCJParseI;
6+
7+
public abstract class SWCJAnnotationAbstractFactory
8+
extends SWCJAbstractFactory
9+
{
10+
@Override
11+
public SWCJAnnotationAbstractFactory setParseTool(SWCJParseI swcjParseI) {
12+
System.err.println("AnnotationFactory can't set parse tool");
13+
return this;
14+
}
15+
public abstract SWCJAnnotationAbstractFactory parse(Class<? extends SWCJConfigClassConfiguration> configClass);
16+
}

src/main/java/com/midream/sheep/swcj/core/factory/xmlfactory/CoreXmlFactory.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,8 @@
55
import com.midream.sheep.swcj.Exception.InterfaceIllegal;
66
import com.midream.sheep.swcj.core.build.builds.javanative.BuildTool;
77
import com.midream.sheep.swcj.core.build.builds.javanative.ReptilesBuilder;
8-
import com.midream.sheep.swcj.core.factory.SWCJAbstractFactory;
9-
import com.midream.sheep.swcj.core.factory.SWCJXmlFactory;
10-
import com.midream.sheep.swcj.core.factory.parse.bystr.BetterXmlParseTool;
8+
import com.midream.sheep.swcj.core.factory.SWCJFactory;
9+
import com.midream.sheep.swcj.core.factory.xmlfactory.bystr.BetterXmlParseTool;
1110
import com.midream.sheep.swcj.pojo.buildup.SWCJClass;
1211
import com.midream.sheep.swcj.pojo.swc.passvalue.ReptlileMiddle;
1312
import org.xml.sax.SAXException;
@@ -21,7 +20,7 @@
2120
/**
2221
* 工厂类,读取配置文件,获取具体实现类
2322
*/
24-
public class CoreXmlFactory extends SWCJAbstractFactory {
23+
public class CoreXmlFactory extends SWCJAbstractXmlFactory {
2524

2625
public CoreXmlFactory(){}
2726

@@ -33,7 +32,7 @@ public CoreXmlFactory(boolean isLoadCache,String workplace) throws ConfigExcepti
3332

3433
//解析文档
3534
@Override
36-
public SWCJXmlFactory parse(File xmlFile) {
35+
public SWCJAbstractXmlFactory parse(File xmlFile) {
3736
notNull();
3837
try {
3938
parse(swcjParseI.parseXmlFile(xmlFile, config));
@@ -46,7 +45,7 @@ public SWCJXmlFactory parse(File xmlFile) {
4645
}
4746

4847
@Override
49-
public SWCJXmlFactory parse(String File) {
48+
public SWCJAbstractXmlFactory parse(String File) {
5049
notNull();
5150
try {
5251
parse(swcjParseI.parseStringXml(File, config));
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.midream.sheep.swcj.core.factory.xmlfactory;
2+
3+
import com.midream.sheep.swcj.Exception.ConfigException;
4+
import com.midream.sheep.swcj.core.factory.SWCJAbstractFactory;
5+
import com.midream.sheep.swcj.core.factory.SWCJFactory;
6+
import com.midream.sheep.swcj.core.factory.xmlfactory.bystr.SWCJParseI;
7+
import org.xml.sax.SAXException;
8+
9+
import javax.xml.parsers.ParserConfigurationException;
10+
import java.io.File;
11+
import java.io.IOException;
12+
13+
/**
14+
* @author midreamsheep
15+
*/
16+
public abstract class SWCJAbstractXmlFactory
17+
extends SWCJAbstractFactory
18+
{
19+
//解析器
20+
protected SWCJParseI swcjParseI = null;
21+
@Override
22+
public SWCJAbstractXmlFactory setParseTool(SWCJParseI swcjParseI) {
23+
this.swcjParseI = swcjParseI;
24+
return this;
25+
}
26+
/**
27+
* 通过文件流解析文件
28+
* @param xmlFile 文件流
29+
* */
30+
public abstract SWCJAbstractXmlFactory parse(File xmlFile) throws IOException, SAXException, ConfigException, ParserConfigurationException;
31+
/**
32+
* 通过文件流解析文件
33+
* @param xmlString 文件
34+
* */
35+
public abstract SWCJAbstractXmlFactory parse(String xmlString) throws IOException, SAXException, ConfigException, ParserConfigurationException;
36+
}

src/main/java/com/midream/sheep/swcj/core/factory/xmlfactory/ThreadXmlFactory.java

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,8 @@
44
import com.midream.sheep.swcj.Exception.EmptyMatchMethodException;
55
import com.midream.sheep.swcj.Exception.InterfaceIllegal;
66
import com.midream.sheep.swcj.core.build.builds.javanative.ReptilesBuilder;
7-
import com.midream.sheep.swcj.core.factory.SWCJAbstractFactory;
8-
import com.midream.sheep.swcj.core.factory.SWCJXmlFactory;
9-
import com.midream.sheep.swcj.core.factory.parse.bystr.BetterXmlParseTool;
7+
import com.midream.sheep.swcj.core.factory.SWCJFactory;
8+
import com.midream.sheep.swcj.core.factory.xmlfactory.bystr.BetterXmlParseTool;
109
import com.midream.sheep.swcj.pojo.buildup.SWCJClass;
1110
import com.midream.sheep.swcj.pojo.swc.passvalue.ReptlileMiddle;
1211
import org.xml.sax.SAXException;
@@ -21,7 +20,7 @@
2120
/**
2221
* 工厂类,读取配置文件,获取具体实现类
2322
*/
24-
public class ThreadXmlFactory extends SWCJAbstractFactory {
23+
public class ThreadXmlFactory extends SWCJAbstractXmlFactory {
2524
private static final ExecutorService execute = new ThreadPoolExecutor(1,1,
2625
5, TimeUnit.SECONDS,
2726
new LinkedBlockingQueue<>()
@@ -34,7 +33,7 @@ public ThreadXmlFactory(boolean isLoadCache,String workplace) throws ConfigExcep
3433
}
3534
//解析文档
3635
@Override
37-
public SWCJXmlFactory parse(File xmlFile) {
36+
public SWCJAbstractXmlFactory parse(File xmlFile) {
3837
if (this.swcjParseI == null) {
3938
this.swcjParseI = new BetterXmlParseTool();
4039
}
@@ -50,7 +49,7 @@ public SWCJXmlFactory parse(File xmlFile) {
5049
return this;
5150
}
5251
@Override
53-
public SWCJXmlFactory parse(String File) {
52+
public SWCJAbstractXmlFactory parse(String File) {
5453
if (this.swcjParseI == null) {
5554
this.swcjParseI = new BetterXmlParseTool();
5655
}
@@ -88,7 +87,7 @@ private void parse(List<SWCJClass> list){
8887
}
8988

9089
@Override
91-
public SWCJXmlFactory invokeSpecialMethod(Object... args) {
90+
public SWCJFactory invokeSpecialMethod(Object... args) {
9291
execute.shutdown();
9392
return this;
9493
}

src/main/java/com/midream/sheep/swcj/core/factory/parse/bystr/BetterXmlParseTool.java renamed to src/main/java/com/midream/sheep/swcj/core/factory/xmlfactory/bystr/BetterXmlParseTool.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
package com.midream.sheep.swcj.core.factory.parse.bystr;
1+
package com.midream.sheep.swcj.core.factory.xmlfactory.bystr;
22

33
import com.midream.sheep.swcj.Exception.ConfigException;
44
import com.midream.sheep.swcj.Exception.InterfaceIllegal;
55
import com.midream.sheep.swcj.cache.CacheCorn;
66
import com.midream.sheep.swcj.core.APIClassInter.ExecuteConfigurationClass;
77
import com.midream.sheep.swcj.core.build.builds.javanative.BuildTool;
8-
import com.midream.sheep.swcj.core.factory.SWCJAbstractFactory;
98
import com.midream.sheep.swcj.core.factory.xmlfactory.CoreXmlFactory;
109
import com.midream.sheep.swcj.data.Constant;
1110
import com.midream.sheep.swcj.data.ReptileConfig;
@@ -18,7 +17,6 @@
1817
import java.io.File;
1918
import java.lang.reflect.InvocationTargetException;
2019
import java.util.*;
21-
import java.util.concurrent.atomic.AtomicInteger;
2220
import java.util.logging.Logger;
2321

2422
public class BetterXmlParseTool implements SWCJParseI {

src/main/java/com/midream/sheep/swcj/core/factory/parse/bystr/SWCJParseI.java renamed to src/main/java/com/midream/sheep/swcj/core/factory/xmlfactory/bystr/SWCJParseI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.midream.sheep.swcj.core.factory.parse.bystr;
1+
package com.midream.sheep.swcj.core.factory.xmlfactory.bystr;
22

33
import com.midream.sheep.swcj.Exception.InterfaceIllegal;
44
import com.midream.sheep.swcj.data.ReptileConfig;

src/test/java/Test.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import com.midream.sheep.swcj.Exception.EmptyMatchMethodException;
44
import com.midream.sheep.swcj.Exception.InterfaceIllegal;
55
import com.midream.sheep.swcj.core.build.builds.effecient.EffecientCompiler;
6-
import com.midream.sheep.swcj.core.factory.SWCJXmlFactory;
6+
import com.midream.sheep.swcj.core.factory.SWCJFactory;
77
import com.midream.sheep.swcj.core.factory.xmlfactory.CoreXmlFactory;
8+
import com.midream.sheep.swcj.core.factory.xmlfactory.SWCJAbstractXmlFactory;
89
import org.xml.sax.SAXException;
910
import test.pojo;
1011

@@ -18,7 +19,7 @@
1819
*/
1920
public class Test {
2021
public static void main(String[] args) throws ConfigException, IOException, ParserConfigurationException, SAXException, EmptyMatchMethodException, InterfaceIllegal {
21-
SWCJXmlFactory swcjXmlFactory = new CoreXmlFactory(true,"E://临时文件");
22+
SWCJAbstractXmlFactory swcjXmlFactory = new CoreXmlFactory(true,"E://临时文件");
2223
long start1 = System.currentTimeMillis();
2324
swcjXmlFactory.parse(new File(Objects.requireNonNull(Test.class.getClassLoader().getResource("")).getPath() + "/text_reg.xml"));
2425
long end1 = System.currentTimeMillis();

0 commit comments

Comments
 (0)