org.ansj.dic.impl.Jdbc2Stream Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of ansj_seg Show documentation
Show all versions of ansj_seg Show documentation
best java chinese word seg !
package org.ansj.dic.impl;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.ansj.dic.PathToStream;
import org.ansj.exception.LibraryException;
import org.nutz.dao.Dao;
import org.nutz.dao.Sqls;
import org.nutz.dao.impl.NutDao;
import org.nutz.dao.impl.SimpleDataSource;
import org.nutz.dao.sql.Sql;
import org.nutz.dao.sql.SqlCallback;
/**
* jdbc:mysql://192.168.10.103:3306/infcn_mss?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull|username|password|select name as name,nature,freq from dic where type=1
*
* @author ansj
*
*/
public class Jdbc2Stream extends PathToStream {
private static final byte[] TAB = "\t".getBytes();
private static final byte[] LINE = "\n".getBytes();
@Override
public InputStream toStream(String path) {
path = path.substring(7);
String[] split = path.split("\\|");
String jdbc = split[0];
String username = split[1];
String password = split[2];
String sqlStr = split[3];
String logStr = jdbc + "|" + username + "|********|" + sqlStr;
SimpleDataSource ds = null;
try {
ds = new SimpleDataSource();
ds.setJdbcUrl(jdbc);
ds.setUsername(username);
ds.setPassword(password);
Dao dao = new NutDao(ds);
Sql sql = Sqls.create(sqlStr);
Sql execute = dao.execute(sql.setCallback(new SqlCallback() {
@Override
public byte[] invoke(Connection conn, ResultSet rs, Sql sql) throws SQLException {
ByteArrayOutputStream baos = new ByteArrayOutputStream(100 * 1024);
while (rs.next()) {
try {
int count = rs.getMetaData().getColumnCount();
for (int i = 1; i < count; i++) {
baos.write(String.valueOf(rs.getObject(i)).getBytes());
baos.write(TAB);
}
baos.write(String.valueOf(rs.getObject(count)).getBytes());
baos.write(LINE);
} catch (IOException e) {
e.printStackTrace();
}
}
return baos.toByteArray();
}
}));
return new ByteArrayInputStream((byte[]) execute.getResult());
} catch (Exception e) {
throw new LibraryException("err to load by jdbc " + logStr);
} finally {
if (ds != null) {
ds.close();
}
}
}
public static String encryption(String path){
String[] split = path.split("\\|");
String jdbc = split[0];
String username = split[1];
String password = split[2];
String sqlStr = split[3];
return jdbc + "|" + username + "|********|" + sqlStr;
}
}