package com.rekoe;
import java.util.HashMap;
import java.util.List;
import org.apache.shiro.crypto.RandomNumberGenerator;
import org.apache.shiro.crypto.SecureRandomNumberGenerator;
import org.apache.shiro.crypto.hash.Sha256Hash;
import org.nutz.dao.Dao;
import org.nutz.dao.impl.FileSqlManager;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.util.Daos;
import org.nutz.ioc.Ioc;
import org.nutz.mvc.NutConfig;
import org.nutz.mvc.Setup;
import org.nutz.plugins.view.freemarker.FreeMarkerConfigurer;
import org.tmatesoft.svn.core.SVNCommitInfo;
import org.tmatesoft.svn.core.SVNException;
import org.tmatesoft.svn.core.SVNURL;
import org.tmatesoft.svn.core.auth.ISVNAuthenticationManager;
import org.tmatesoft.svn.core.wc.SVNClientManager;
import org.tmatesoft.svn.core.wc.SVNCommitClient;
import org.tmatesoft.svn.core.wc.SVNWCUtil;
import com.rekoe.domain.Pj;
import com.rekoe.domain.PjGrUsr;
import com.rekoe.domain.ProjectConfig;
import com.rekoe.domain.User;
import com.rekoe.domain.Usr;
import com.rekoe.service.AuthorityService;
import com.rekoe.service.ProjectConfigService;
import freemarker.template.Configuration;
/**
* @author 科技㊣²º¹³
* 2014年2月3日 下午4:48:45
* http://www.rekoe.com
* QQ:5382211
*/
public class MvcSetup implements Setup {
@SuppressWarnings("serial")
@Override
public void init(NutConfig config) {
Ioc ioc = config.getIoc();
// 加载freemarker自定义标签 自定义宏路径
ioc.get(Configuration.class).setAutoImports(new HashMap(2) {
{
put("p", "/ftl/pony/index.ftl");
put("s", "/ftl/spring.ftl");
}
});
ioc.get(FreeMarkerConfigurer.class, "mapTags");
Dao dao = ioc.get(Dao.class);
dao.create(PjGrUsr.class, false);
// dao.clear(OAuthUser.class);
Daos.createTablesInPackage(dao, User.class.getPackage().getName(), false);
Daos.migration(dao, Usr.class, true, true, false);
Daos.migration(dao, Pj.class, true, true, false);
Daos.migration(dao, ProjectConfig.class, true, true, false);
if (0 == dao.count(User.class)) {
FileSqlManager fm = new FileSqlManager("init_system_h2.sql");
List sqlList = fm.createCombo(fm.keys());
dao.execute(sqlList.toArray(new Sql[sqlList.size()]));
List userList = dao.query(User.class, null);
for (User user : userList) {
RandomNumberGenerator rng = new SecureRandomNumberGenerator();
String salt = rng.nextBytes().toBase64();
String hashedPasswordBase64 = new Sha256Hash("123", salt, 1024).toBase64();
user.setSalt(salt);
user.setPassword(hashedPasswordBase64);
dao.update(user);
}
}
ioc.get(AuthorityService.class).initFormPackage("com.rekoe");
ioc.get(ProjectConfigService.class).init();
}
public static void main(String[] args) {
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager("admin", "john");
SVNClientManager manager = SVNClientManager.newInstance();
manager.setAuthenticationManager(authManager);
SVNCommitClient commitClient = SVNClientManager.newInstance().getCommitClient();
try {
SVNCommitInfo info = commitClient.doMkDir(new SVNURL[] { SVNURL.parseURIEncoded("http://192.168.3.127/repository/koux/trunk") }, "commitMessage", null, true);
long newRevision = info.getNewRevision();
System.out.println(newRevision);
} catch (SVNException e) {
e.printStackTrace();
}
}
@Override
public void destroy(NutConfig config) {
}
}