Skip to content

Commit

Permalink
支持CREATE DATABASE WITH语法, 用于配置每个数据库的具体参数
Browse files Browse the repository at this point in the history
  • Loading branch information
codefollower committed Oct 16, 2015
1 parent bdd273e commit 0301110
Show file tree
Hide file tree
Showing 14 changed files with 297 additions and 283 deletions.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ private static void initPluggableEngines() {
try { try {
Class<?> clz = Utils.loadUserClass(def.name); Class<?> clz = Utils.loadUserClass(def.name);
se = (StorageEngine) clz.newInstance(); se = (StorageEngine) clz.newInstance();
StorageEngineManager.getInstance().registerEngine(se, clz.getName()); StorageEngineManager.getInstance().registerEngine(se);
} catch (Exception e) { } catch (Exception e) {
throw new ConfigurationException("StorageEngine '" + def.name + "' can not found"); throw new ConfigurationException("StorageEngine '" + def.name + "' can not found");
} }
Expand All @@ -128,7 +128,7 @@ private static void initPluggableEngines() {
try { try {
Class<?> clz = Utils.loadUserClass(def.name); Class<?> clz = Utils.loadUserClass(def.name);
te = (TransactionEngine) clz.newInstance(); te = (TransactionEngine) clz.newInstance();
TransactionEngineManager.getInstance().registerEngine(te, clz.getName()); TransactionEngineManager.getInstance().registerEngine(te);
} catch (Exception e) { } catch (Exception e) {
throw new ConfigurationException("TransactionEngine '" + def.name + "' can not found"); throw new ConfigurationException("TransactionEngine '" + def.name + "' can not found");
} }
Expand All @@ -149,7 +149,7 @@ private static void initPluggableEngines() {
try { try {
Class<?> clz = Utils.loadUserClass(def.name); Class<?> clz = Utils.loadUserClass(def.name);
se = (SQLEngine) clz.newInstance(); se = (SQLEngine) clz.newInstance();
SQLEngineManager.getInstance().registerEngine(se, clz.getName()); SQLEngineManager.getInstance().registerEngine(se);
} catch (Exception e) { } catch (Exception e) {
throw new ConfigurationException("SQLEngine '" + def.name + "' can not found"); throw new ConfigurationException("SQLEngine '" + def.name + "' can not found");
} }
Expand All @@ -168,7 +168,7 @@ private static void initPluggableEngines() {
try { try {
Class<?> clz = Utils.loadUserClass(def.name); Class<?> clz = Utils.loadUserClass(def.name);
pse = (ProtocolServerEngine) clz.newInstance(); pse = (ProtocolServerEngine) clz.newInstance();
ProtocolServerEngineManager.getInstance().registerEngine(pse, clz.getName()); ProtocolServerEngineManager.getInstance().registerEngine(pse);
} catch (Exception e) { } catch (Exception e) {
throw new ConfigurationException("ProtocolServerEngine '" + def.name + "' can not found"); throw new ConfigurationException("ProtocolServerEngine '" + def.name + "' can not found");
} }
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -183,7 +183,7 @@ public void setLevelSystemOut(int level) {
*/ */
public void setLevelFile(int level) { public void setLevelFile(int level) {
if (level == ADAPTER) { if (level == ADAPTER) {
String adapterClass = "org.lealone.message.TraceWriterAdapter"; String adapterClass = "org.lealone.common.message.TraceWriterAdapter";
try { try {
writer = (TraceWriter) Class.forName(adapterClass).newInstance(); writer = (TraceWriter) Class.forName(adapterClass).newInstance();
} catch (Throwable e) { } catch (Throwable e) {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -97,23 +97,27 @@ public StatementBuilder resetCount() {
* *
* @param s the text to append * @param s the text to append
*/ */
public void appendOnlyFirst(String s) { public StatementBuilder appendOnlyFirst(String s) {
if (index == 0) { if (index == 0) {
builder.append(s); builder.append(s);
} }
return this;
} }


/** /**
* Append a text, except when this method is called the first time. * Append a text, except when this method is called the first time.
* *
* @param s the text to append * @param s the text to append
*/ */
public void appendExceptFirst(String s) { public StatementBuilder appendExceptFirst(String s) {
if (index++ > 0) { if (index++ > 0) {
builder.append(s); builder.append(s);
} }

return this;
} }


@Override
public String toString() { public String toString() {
return builder.toString(); return builder.toString();
} }
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -621,13 +621,11 @@ private DbException getFormatException() {
public DbSettings getDbSettings() { public DbSettings getDbSettings() {
if (dbSettings == null) { if (dbSettings == null) {
DbSettings defaultSettings = DbSettings.getDefaultSettings(); DbSettings defaultSettings = DbSettings.getDefaultSettings();
HashMap<String, String> s = null; HashMap<String, String> s = New.hashMap();
s.put("PERSISTENT", persistent ? "true" : "false");
for (Object k : prop.keySet()) { for (Object k : prop.keySet()) {
String key = k.toString(); String key = k.toString();
if (!isKnownSetting(key) && defaultSettings.containsKey(key)) { if (!isKnownSetting(key) && defaultSettings.containsKey(key)) {
if (s == null) {
s = New.hashMap();
}
s.put(key, prop.getProperty(key)); s.put(key, prop.getProperty(key));
} }
} }
Expand Down
18 changes: 13 additions & 5 deletions lealone-common/src/main/java/org/lealone/db/DbSettings.java
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
package org.lealone.db; package org.lealone.db;


import java.util.HashMap; import java.util.HashMap;
import java.util.Map;


import org.lealone.api.ErrorCode; import org.lealone.api.ErrorCode;
import org.lealone.common.message.DbException; import org.lealone.common.message.DbException;
Expand All @@ -29,9 +30,9 @@
class SettingsBase { class SettingsBase {
// 这个字段需要放在这,在DbSettings的构造函数中可以提前初始化它, // 这个字段需要放在这,在DbSettings的构造函数中可以提前初始化它,
// 如果放在子类中,DbSettings类的其他字段会在执行构造函数中的代码之前执行,此时settings还是null。 // 如果放在子类中,DbSettings类的其他字段会在执行构造函数中的代码之前执行,此时settings还是null。
protected final HashMap<String, String> settings; protected final Map<String, String> settings;


protected SettingsBase(HashMap<String, String> s) { protected SettingsBase(Map<String, String> s) {
this.settings = s; this.settings = s;
} }
} }
Expand All @@ -50,14 +51,14 @@ public static DbSettings getDefaultSettings() {
* @param s the settings * @param s the settings
* @return the settings * @return the settings
*/ */
public static DbSettings getInstance(HashMap<String, String> s) { public static DbSettings getInstance(Map<String, String> s) {
if (s == null || s.isEmpty()) { if (s == null || s.isEmpty()) {
return defaultSettings; return defaultSettings;
} }
return new DbSettings(s); return new DbSettings(s);
} }


private DbSettings(HashMap<String, String> s) { private DbSettings(Map<String, String> s) {
super(s); super(s);
} }


Expand Down Expand Up @@ -325,6 +326,13 @@ private DbSettings(HashMap<String, String> s) {
*/ */
public final boolean compressData = get("COMPRESS", false); public final boolean compressData = get("COMPRESS", false);


/**
* Database setting <code>PERSISTENT</code>
* (default: true).<br />
* Persistent data.
*/
public final boolean persistent = get("PERSISTENT", true);

/** /**
* Get the setting for the given key. * Get the setting for the given key.
* *
Expand Down Expand Up @@ -398,7 +406,7 @@ public boolean containsKey(String k) {
* *
* @return the settings * @return the settings
*/ */
public HashMap<String, String> getSettings() { public Map<String, String> getSettings() {
return settings; return settings;
} }
} }
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -47,14 +47,20 @@ public T getEngine(String name) {


public void registerEngine(T pluggableEngine, String... alias) { public void registerEngine(T pluggableEngine, String... alias) {
pluggableEngines.put(pluggableEngine.getName().toUpperCase(), pluggableEngine); pluggableEngines.put(pluggableEngine.getName().toUpperCase(), pluggableEngine);
pluggableEngines.put(pluggableEngine.getClass().getName().toUpperCase(), pluggableEngine);
if (alias != null) { if (alias != null) {
for (String a : alias) for (String a : alias)
pluggableEngines.put(a.toUpperCase(), pluggableEngine); pluggableEngines.put(a.toUpperCase(), pluggableEngine);
} }
} }


public void deregisterEngine(T pluggableEngine) { public void deregisterEngine(T pluggableEngine, String... alias) {
pluggableEngines.remove(pluggableEngine.getName().toUpperCase()); pluggableEngines.remove(pluggableEngine.getName().toUpperCase());
pluggableEngines.remove(pluggableEngine.getClass().getName().toUpperCase().toUpperCase());
if (alias != null) {
for (String a : alias)
pluggableEngines.remove(a.toUpperCase());
}
} }


private synchronized void loadPluggableEngines() { private synchronized void loadPluggableEngines() {
Expand Down
Loading

0 comments on commit 0301110

Please sign in to comment.