package ee.esutoniagodesu.repository.project;
import com.googlecode.genericdao.search.Search;
import ee.esutoniagodesu.domain.heisig.view.VHeisig6Custom;
import ee.esutoniagodesu.util.persistence.JDBCUtil;
import org.springframework.stereotype.Repository;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Repository
public class Heisig6DB extends AbstractProjectRepository {
public VHeisig6Custom findHeisig6ByKanji(char kanji) {
StringBuilder msg = new StringBuilder("findHeisig6ByKanji: kanji=" + kanji);
try {
Search search = new Search(VHeisig6Custom.class);
search.addFilterEqual("kanji", kanji);
VHeisig6Custom result = (VHeisig6Custom) dao.search(search).iterator().next();
log.debug(msg.append(", result.id=").append(result.getId()).toString());
return result;
} catch (Exception e) {
log.error(msg.append(", msg=").append(e.getMessage()).toString(), e);
throw e;
}
}
public Character findKanjiByFrame(int frameNo) {
StringBuilder msg = new StringBuilder("findKanjiByFrame: frameNo=" + frameNo);
Connection con = null;
PreparedStatement s = null;
ResultSet rs = null;
Character result = null;
try {
long ms = System.currentTimeMillis();
con = dao.getConnection();
s = con.prepareCall("select kanji from heisig.heisig6 where id=?");
s.setInt(1, frameNo);
rs = s.executeQuery();
if (rs.next()) {
result = rs.getString(1).charAt(0);
}
log.debug(msg.append(", result=").append(result)
.append(", time=").append(System.currentTimeMillis() - ms).toString());
} catch (SQLException e) {
log.error(msg.append(", msg=").append(e.getMessage()).toString(), e);
throw new RuntimeException(e);
} finally {
JDBCUtil.close(rs, s, con);
}
return result;
}
public List<Character> findKanjisByKeyword(String keyword) {
StringBuilder msg = new StringBuilder("findKanjisByKeyword: keyword=" + keyword);
Connection con = null;
PreparedStatement s = null;
ResultSet rs = null;
List<Character> result = new ArrayList<>();
try {
long ms = System.currentTimeMillis();
con = dao.getConnection();
s = con.prepareCall("select kanji from heisig.heisig6 where keyword_en=? or keyword_et=?");
s.setString(1, keyword);
s.setString(2, keyword);
rs = s.executeQuery();
while (rs.next()) {
result.add(rs.getString(1).charAt(0));
}
log.debug(msg.append(", result=").append(result)
.append(", time=").append(System.currentTimeMillis() - ms).toString());
} catch (SQLException e) {
log.error(msg.append(", msg=").append(e.getMessage()).toString(), e);
throw new RuntimeException(e);
} finally {
JDBCUtil.close(rs, s, con);
}
return result;
}
}