Skip to content

Commit

Permalink
change: 暴露NutLoading的方法
Browse files Browse the repository at this point in the history
add: 添加对sysbase的支持
change: jdbc遇到未知数据库时,fallback为mysql实现
  • Loading branch information
wendal committed Apr 12, 2014
1 parent f62df5b commit ee8ceac
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 12 deletions.
4 changes: 4 additions & 0 deletions src/org/nutz/dao/DB.java
Expand Up @@ -47,6 +47,10 @@ public enum DB {
*
*/
GBASE,
/**
*
*/
SYBASE,
/**
* 其他数据库
*/
Expand Down
29 changes: 29 additions & 0 deletions src/org/nutz/dao/impl/jdbc/sybase/SybaseIQJdbcExpert.java
@@ -0,0 +1,29 @@
package org.nutz.dao.impl.jdbc.sybase;

import org.nutz.dao.DB;
import org.nutz.dao.Dao;
import org.nutz.dao.entity.Entity;
import org.nutz.dao.impl.jdbc.AbstractJdbcExpert;
import org.nutz.dao.jdbc.JdbcExpertConfigFile;
import org.nutz.dao.sql.Pojo;
import org.nutz.lang.Lang;

public class SybaseIQJdbcExpert extends AbstractJdbcExpert {

public SybaseIQJdbcExpert(JdbcExpertConfigFile conf) {
super(conf);
}

public String getDatabaseType() {
return DB.SYBASE.name();
}

public boolean createEntity(Dao dao, Entity<?> en) {
throw Lang.noImplement();
}

public void formatQuery(Pojo pojo) {
throw Lang.noImplement();
}

}
6 changes: 4 additions & 2 deletions src/org/nutz/dao/jdbc/Jdbcs.java
Expand Up @@ -155,8 +155,10 @@ public static JdbcExpert getExpert(String productName, String version) {

JdbcExpert re = conf.matchExpert(dbName);

if (null == re)
throw Lang.makeThrow("Can not support database '%s %s'", productName, version);
if (null == re) {
log.warnf("Can not support database '%s %s', fallback to MySql 5", productName, version);
re = conf.matchExpert("mysql 5");
}

return re;
}
Expand Down
3 changes: 2 additions & 1 deletion src/org/nutz/dao/jdbc/nutz_jdbc_experts.js
Expand Up @@ -19,7 +19,8 @@ var ioc = {
"hsql.*" : "org.nutz.dao.impl.jdbc.hsqldb.HsqldbJdbcExpert",
"sqlite" : "org.nutz.dao.impl.jdbc.sqlite.SQLiteJdbcExpert",
".+derby.+" : "org.nutz.dao.impl.jdbc.derby.DerbyJdbcExpert",
"gbase.*" : "org.nutz.dao.impl.jdbc.gbase.GBaseJdbcExpert"
"gbase.*" : "org.nutz.dao.impl.jdbc.gbase.GBaseJdbcExpert",
"sybase.*" : "org.nutz.dao.impl.jdbc.sybase.SybaseIQJdbcExpert"
// ~ 映射结束
},

Expand Down
18 changes: 9 additions & 9 deletions src/org/nutz/mvc/impl/NutLoading.java
Expand Up @@ -125,7 +125,7 @@ public UrlMapping load(NutConfig config) {

}

private UrlMapping evalUrlMapping(NutConfig config, Class<?> mainModule, Ioc ioc) throws Exception {
protected UrlMapping evalUrlMapping(NutConfig config, Class<?> mainModule, Ioc ioc) throws Exception {
/*
* @ TODO 个人建议可以将这个方法所涉及的内容转换到Loadings类或相应的组装类中,
* 以便将本类加以隔离,使本的职责仅限于MVC整体的初使化,而不再负责UrlMapping的加载
Expand Down Expand Up @@ -202,7 +202,7 @@ private UrlMapping evalUrlMapping(NutConfig config, Class<?> mainModule, Ioc ioc
return mapping;
}

private static void createContext(NutConfig config) {
protected void createContext(NutConfig config) {
// 构建一个上下文对象,方便子类获取更多的环境信息
// 同时,所有 Filter 和 Adaptor 都可以用 ${app.root} 来填充自己
Context context = Lang.context();
Expand All @@ -226,14 +226,14 @@ private static void createContext(NutConfig config) {
config.getServletContext().setAttribute(Loading.CONTEXT_NAME, context);
}

private UrlMapping createUrlMapping(NutConfig config) throws Exception {
protected UrlMapping createUrlMapping(NutConfig config) throws Exception {
UrlMappingBy umb = config.getMainModule().getAnnotation(UrlMappingBy.class);
if (umb != null)
return Loadings.evalObj(config, umb.value(), umb.args());
return new UrlMappingImpl();
}

private ActionChainMaker createChainMaker(NutConfig config, Class<?> mainModule) {
protected ActionChainMaker createChainMaker(NutConfig config, Class<?> mainModule) {
ChainBy ann = mainModule.getAnnotation(ChainBy.class);
ActionChainMaker maker = null == ann ? new NutActionChainMaker(new String[]{})
: Loadings.evalObj(config, ann.type(), ann.args());
Expand All @@ -242,7 +242,7 @@ private ActionChainMaker createChainMaker(NutConfig config, Class<?> mainModule)
return maker;
}

private void evalSetup(NutConfig config, Class<?> mainModule) throws Exception {
protected void evalSetup(NutConfig config, Class<?> mainModule) throws Exception {
SetupBy sb = mainModule.getAnnotation(SetupBy.class);
if (null != sb) {
if (log.isInfoEnabled())
Expand All @@ -253,7 +253,7 @@ private void evalSetup(NutConfig config, Class<?> mainModule) throws Exception {
}
}

private void evalLocalization(NutConfig config, Class<?> mainModule) {
protected void evalLocalization(NutConfig config, Class<?> mainModule) {
Localization lc = mainModule.getAnnotation(Localization.class);
if (null != lc) {
if (log.isDebugEnabled())
Expand Down Expand Up @@ -289,7 +289,7 @@ else if (log.isDebugEnabled()) {
}
}

private ViewMaker[] createViewMakers(Class<?> mainModule, Ioc ioc) throws Exception {
protected ViewMaker[] createViewMakers(Class<?> mainModule, Ioc ioc) throws Exception {
Views vms = mainModule.getAnnotation(Views.class);
ViewMaker[] makers;
int i = 0;
Expand Down Expand Up @@ -318,7 +318,7 @@ private ViewMaker[] createViewMakers(Class<?> mainModule, Ioc ioc) throws Except
return makers;
}

private Ioc createIoc(NutConfig config, Class<?> mainModule) throws Exception {
protected Ioc createIoc(NutConfig config, Class<?> mainModule) throws Exception {
IocBy ib = mainModule.getAnnotation(IocBy.class);
if (null != ib) {
if (log.isDebugEnabled())
Expand All @@ -338,7 +338,7 @@ private Ioc createIoc(NutConfig config, Class<?> mainModule) throws Exception {
}

@SuppressWarnings({"all"})
private void createSessionProvider(NutConfig config, Class<?> mainModule) throws Exception {
protected void createSessionProvider(NutConfig config, Class<?> mainModule) throws Exception {
SessionBy sb = mainModule.getAnnotation(SessionBy.class);
if (sb != null) {
SessionProvider sp = null;
Expand Down

0 comments on commit ee8ceac

Please sign in to comment.