|
package com.ekexiu.portal.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.jfw.apt.annotation.Nullable;
import org.jfw.apt.orm.annotation.dao.DAO;
import org.jfw.apt.orm.annotation.dao.method.From;
import org.jfw.apt.orm.annotation.dao.method.Or;
import org.jfw.apt.orm.annotation.dao.method.OrderBy;
import org.jfw.apt.orm.annotation.dao.method.SetSentence;
import org.jfw.apt.orm.annotation.dao.method.operator.PageQuery;
import org.jfw.apt.orm.annotation.dao.method.operator.PageSelect;
import org.jfw.apt.orm.annotation.dao.method.operator.SelectList;
import org.jfw.apt.orm.annotation.dao.method.operator.SelectOne;
import org.jfw.apt.orm.annotation.dao.method.operator.UpdateWith;
import org.jfw.apt.orm.annotation.dao.param.Alias;
import org.jfw.apt.orm.annotation.dao.param.In;
import org.jfw.apt.orm.annotation.dao.param.Like;
import org.jfw.apt.orm.annotation.dao.param.Set;
import org.jfw.apt.orm.annotation.dao.param.SqlColumn;
import org.jfw.apt.orm.core.defaultImpl.FixLenStringHandler;
import org.jfw.util.PageQueryResult;
import com.ekexiu.portal.po.Ppatent;
import com.ekexiu.portal.pojo.AssedPatent;
@DAO
public abstract class PpatentDao {
@SelectOne
@Nullable
public abstract Ppatent query(Connection con, String id) throws SQLException;
@SelectList
public abstract List<Ppatent> query(Connection con, @In String[] id) throws SQLException;
@UpdateWith
@From(Ppatent.class)
public abstract int update(Connection con, String id, @Set String keywords) throws SQLException;
@PageQuery
@OrderBy(" ORDER BY ASS_TIME DESC,ID ASC")
public abstract PageQueryResult<AssedPatent> pageQueryWithProfessor(Connection con,
@SqlColumn(handlerClass = FixLenStringHandler.class, value = { "A.PROFESSOR_ID=?" }) String professId,
@SqlColumn(handlerClass = FixLenStringHandler.class, value = { "P.NAME LIKE ?" }) String name, int pageSize, int pageNo) throws SQLException;
@PageQuery
@OrderBy(" ORDER BY ASS_TIME DESC,ID ASC")
public abstract PageQueryResult<AssedPatent> pageQueryWithAuthor(Connection con,
@SqlColumn(handlerClass = FixLenStringHandler.class, value = { "A.NAME=?" }) String author,
@SqlColumn(handlerClass = FixLenStringHandler.class, value = {
"((A.PROFESSOR_ID=?) OR (A.PROFESSOR_ID='################################'))" }) String id,
@SqlColumn(handlerClass = FixLenStringHandler.class, value = { "P.NAME LIKE ?" }) String name, int pageSize, int pageNo) throws SQLException;
@From(Ppatent.class)
@UpdateWith
@SetSentence("PAGE_VIEWS = PAGE_VIEWS + 1")
public abstract int incPageViews(Connection con, String id) throws SQLException;
@PageSelect
@OrderBy(" ORDER BY SORT_NUM DESC,CREATE_TIME DESC,ID DESC")
public abstract PageQueryResult<Ppatent> query(Connection con, int pageSize, int pageNo) throws SQLException;
@PageSelect
@OrderBy(" ORDER BY SORT_NUM DESC,CREATE_TIME DESC,ID DESC")
@Or
public abstract PageQueryResult<Ppatent> query(Connection con, @Alias({ "code", "authors", "name", "keywords" }) @Like String cnt, int pageSize, int pageNo)
throws SQLException;
@SelectOne
@Nullable
public abstract Ppatent query(Connection con, long shareId) throws SQLException;
public String[] queryPatentIdWithSameKeyWord(Connection con, String id, int rows) throws SQLException {
List<String> ret = new ArrayList<String>();
String sql = "select id,count(1) sort from pat_key_word where kw in (select kw from pat_key_word where id=?) and id <>? group by id order by sort desc limit ?";
PreparedStatement ps = con.prepareStatement(sql);
try {
ps.setString(1, id);
ps.setString(2, id);
ps.setInt(3, rows);
ResultSet rs = ps.executeQuery();
try {
while (rs.next()) {
ret.add(rs.getString(1));
}
} finally {
try {
rs.close();
} catch (Exception e1) {
}
}
} finally {
try {
ps.close();
} catch (Exception e2) {
}
}
return ret.isEmpty() ? null : ret.toArray(new String[ret.size()]);
}
public String[] queryPatentIdWithKeyWord(Connection con, String[] kws, int rows) throws SQLException {
List<String> ret = new ArrayList<String>();
StringBuilder sql = new StringBuilder();
sql.append("select id,count(1) sort from pat_key_word where kw in (");
for (int i = 0; i < kws.length; ++i) {
sql.append("?,");
}
sql.delete(sql.length() - 1, sql.length());
sql.append(") group by id order by sort desc limit ?");
PreparedStatement ps = con.prepareStatement(sql.toString());
try {
int idx = 1;
for (String kw : kws) {
ps.setString(idx++, kw);
}
ps.setInt(idx++, rows);
ResultSet rs = ps.executeQuery();
try {
while (rs.next()) {
ret.add(rs.getString(1));
}
} finally {
try {
rs.close();
} catch (Exception e1) {
}
}
} finally {
try {
ps.close();
} catch (Exception e2) {
}
}
return ret.isEmpty() ? null : ret.toArray(new String[ret.size()]);
}
}
|