Skip to content

Commit 915ccb6

Browse files
committed
重构了资源加载系统
1 parent 15cdf4c commit 915ccb6

File tree

81 files changed

+2559
-2272
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

81 files changed

+2559
-2272
lines changed

.gitignore

+2-1
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,5 @@ mynlp_work/**
4444
**/hash
4545

4646
**/model/dependency
47-
**/model/segment
47+
**/model/segment
48+
/temp/

mynlp-core/src/main/java/com/mayabot/nlp/Environment.java

+37-18
Original file line numberDiff line numberDiff line change
@@ -19,53 +19,67 @@
1919

2020
import com.mayabot.nlp.logging.InternalLogger;
2121
import com.mayabot.nlp.logging.InternalLoggerFactory;
22+
import com.mayabot.nlp.resources.MynlpResource;
23+
import com.mayabot.nlp.resources.MynlpResourceFactory;
2224
import com.mayabot.nlp.utils.PathUtils;
2325

2426
import java.io.File;
27+
import java.nio.file.Path;
2528
import java.nio.file.Paths;
2629

27-
import static com.mayabot.nlp.Settings.KEY_DATA_DIR;
28-
import static com.mayabot.nlp.Settings.KEY_WORK_DIR;
29-
import static com.mayabot.nlp.Settings.KEY_WORK_DIR_NAME;
30+
import static com.mayabot.nlp.Settings.*;
3031

31-
public class Environment{
32+
public class Environment {
3233

3334
private final Settings settings;
3435

36+
3537
private final String dataPath;//word dir ./data
3638

3739
/**
3840
* Path to the temporary file directory used by the JDK
3941
*/
4042
// private final Path tmpFile = PathUtils.get(System.getProperty("java.io.tmpdir"));
4143

42-
private final ResourceLoader resourceLoader;
43-
4444
private final File workDirPath;
4545

4646
private InternalLogger logger = InternalLoggerFactory.getInstance(Environment.class);
4747

48+
49+
private final MynlpResourceFactory mynlpResourceFactory;
50+
4851
public Environment(Settings settings) {
4952
this.settings = settings;
5053

51-
dataPath = settings.get(KEY_DATA_DIR, System.getProperty(KEY_DATA_DIR,"data"));
54+
dataPath = settings.get(KEY_DATA_DIR, System.getProperty(KEY_DATA_DIR, "data"));
5255

53-
resourceLoader = new ResourceLoader(dataPath);
54-
55-
String workDir = settings.get(KEY_WORK_DIR, System.getProperty(KEY_WORK_DIR,"java.io.tmpdir"));
56-
String wordDirName = settings.get(KEY_WORK_DIR_NAME,
57-
System.getProperty(KEY_WORK_DIR_NAME,"mynlp"));
58-
String workDirPath = workDir+File.separator+wordDirName;
56+
String workDir = settings.get(KEY_WORK_DIR, System.getProperty(KEY_WORK_DIR, "java.io.tmpdir"));
57+
String workDirName = settings.get(KEY_WORK_DIR_NAME,
58+
System.getProperty(KEY_WORK_DIR_NAME, "mynlp"));
59+
String workDirPath = workDir + File.separator + workDirName;
5960

6061
//replace java.io.tmpdir
61-
workDirPath = workDirPath.replace("java.io.tmpdir",PathUtils.get(System.getProperty("java.io.tmpdir")).toAbsolutePath().toString());
62+
workDirPath = workDirPath.replace("java.io.tmpdir", PathUtils.get(System.getProperty("java.io.tmpdir")).toAbsolutePath().toString());
6263

6364
this.workDirPath = Paths.get(workDirPath).toFile();
6465

6566
this.workDirPath.mkdirs();
6667

67-
logger.info("Mynlp work dir path {}",this.workDirPath.getAbsolutePath());
68-
logger.info("Mynlp data dir path {}",new File(dataPath).getAbsolutePath());
68+
69+
mynlpResourceFactory = new MynlpResourceFactory(this.getDataPath());
70+
71+
logger.info("Mynlp work dir path {}", this.workDirPath.getAbsolutePath());
72+
logger.info("Mynlp data dir path {}", new File(dataPath).getAbsolutePath());
73+
}
74+
75+
public MynlpResource loadResource(String setting, String defaultPath) {
76+
String url = this.getSettings().get(setting, defaultPath);
77+
return this.mynlpResourceFactory.load(url);
78+
}
79+
80+
public MynlpResource loadResource(Setting<String> setting) {
81+
String url = this.getSettings().get(setting);
82+
return this.mynlpResourceFactory.load(url);
6983
}
7084

7185
public File getWorkDirPath() {
@@ -80,7 +94,12 @@ public Settings getSettings() {
8094
return settings;
8195
}
8296

83-
public ResourceLoader getResourceLoader() {
84-
return resourceLoader;
97+
public Path getDataPath() {
98+
return Paths.get(new File(dataPath).getAbsolutePath());
8599
}
100+
101+
public MynlpResourceFactory getMynlpResourceFactory() {
102+
return mynlpResourceFactory;
103+
}
104+
86105
}

mynlp-core/src/main/java/com/mayabot/nlp/MyNlps.java

+4-2
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
import com.google.inject.spi.TypeListener;
2727
import com.mayabot.nlp.logging.InternalLogger;
2828
import com.mayabot.nlp.logging.InternalLoggerFactory;
29+
import com.mayabot.nlp.resources.MynlpResourceFactory;
2930

3031
import java.io.BufferedReader;
3132
import java.io.InputStreamReader;
@@ -54,6 +55,8 @@ private static Injector createInject() {
5455

5556
Environment environment = new Environment(settings);
5657

58+
59+
5760
ArrayList<Module> modules = Lists.newArrayList();
5861

5962
modules.add(new AbstractModule() {
@@ -62,8 +65,7 @@ protected void configure() {
6265

6366
bind(Settings.class).toInstance(settings);
6467
bind(Environment.class).toInstance(environment);
65-
bind(ResourceLoader.class).toInstance(environment.getResourceLoader());
66-
68+
bind(MynlpResourceFactory.class).toInstance(environment.getMynlpResourceFactory());
6769

6870
//process initialize interface
6971
bindListener(new AbstractMatcher<TypeLiteral<?>>() {

mynlp-core/src/main/java/com/mayabot/nlp/ResourceLoader.java

-152
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
package com.mayabot.nlp;
2+
3+
import com.google.common.primitives.Booleans;
4+
import com.google.common.primitives.Ints;
5+
6+
import java.util.function.Function;
7+
8+
public class Setting<T> {
9+
10+
private String key;
11+
12+
private String defaultValue;
13+
14+
private Function<String,T> parse;
15+
16+
private Setting(){
17+
18+
}
19+
20+
public String getKey() {
21+
return key;
22+
}
23+
24+
public String getDefaultValue() {
25+
return defaultValue;
26+
}
27+
28+
public Function<String, T> getParse() {
29+
return parse;
30+
}
31+
32+
public static Setting<Integer> intSetting(String key, int value) {
33+
Setting<Integer> setting = new Setting<>();
34+
setting.key = key;
35+
setting.defaultValue = value + "";
36+
setting.parse = Ints::tryParse;
37+
return setting;
38+
}
39+
40+
public static Setting<String> stringSetting(String key, String value) {
41+
Setting<String> setting = new Setting<>();
42+
setting.key = key;
43+
setting.defaultValue = value ;
44+
setting.parse = Function.identity();
45+
return setting;
46+
}
47+
48+
public static Setting<Boolean> newBoolSetting(String key,String value) {
49+
Setting<Boolean> setting = new Setting<>();
50+
setting.key = key;
51+
setting.defaultValue = value+"" ;
52+
setting.parse = v -> v.equalsIgnoreCase("true");
53+
return setting;
54+
}
55+
}

mynlp-core/src/main/java/com/mayabot/nlp/Settings.java

+13-1
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,12 @@ public class Settings {
5858
public static final String KEY_WORK_DIR = "mynlp.work.dir";
5959
public static final String KEY_WORK_DIR_NAME = "mynlp.work.name";
6060

61+
62+
public <T> T get(Setting<T> setting){
63+
String value = get(setting.getKey(), setting.getDefaultValue());
64+
return setting.getParse().apply(value);
65+
}
66+
6167
/**
6268
* 从遇到的第一个文件开始。
6369
* 2. classpath://maya_nlp.yml
@@ -167,7 +173,11 @@ public String get(String setting, String defaultValue) {
167173
}
168174

169175
public List<String> getAsList(String setting) {
170-
String obj = get(setting);
176+
return getAsList(setting, null);
177+
}
178+
179+
public List<String> getAsList(String setting,String default_) {
180+
String obj = get(setting,default_);
171181

172182
if (obj == null) {
173183
return null;
@@ -177,6 +187,8 @@ public List<String> getAsList(String setting) {
177187
}
178188

179189

190+
191+
180192
/**
181193
* A settings that are filtered (and key is removed) with the specified prefix.
182194
*/

0 commit comments

Comments
 (0)