package com.ekexiu.portal.ware; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import org.jfw.apt.annotation.DefaultValue; import org.jfw.apt.annotation.Nullable; import org.jfw.apt.orm.annotation.dao.Column; 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.IncludeFixSet; import org.jfw.apt.orm.annotation.dao.method.OrderBy; import org.jfw.apt.orm.annotation.dao.method.Select; import org.jfw.apt.orm.annotation.dao.method.SetSentence; import org.jfw.apt.orm.annotation.dao.method.Where; import org.jfw.apt.orm.annotation.dao.method.operator.DeleteWith; import org.jfw.apt.orm.annotation.dao.method.operator.Insert; import org.jfw.apt.orm.annotation.dao.method.operator.LimitSelect; import org.jfw.apt.orm.annotation.dao.method.operator.PageSelect; import org.jfw.apt.orm.annotation.dao.method.operator.QueryList; import org.jfw.apt.orm.annotation.dao.method.operator.QueryVal; 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.Update; import org.jfw.apt.orm.annotation.dao.method.operator.UpdateWith; import org.jfw.apt.orm.annotation.dao.param.GroupSqlColumn; import org.jfw.apt.orm.annotation.dao.param.In; import org.jfw.apt.orm.annotation.dao.param.LessThan; import org.jfw.apt.orm.annotation.dao.param.SqlColumn; import org.jfw.apt.orm.annotation.dao.param.UnEquals; import org.jfw.apt.orm.core.defaultImpl.LongHandler; import org.jfw.apt.orm.core.defaultImpl.StringHandler; import org.jfw.apt.web.annotation.method.SetCookie; import org.jfw.util.PageQueryResult; import com.ekexiu.portal.question.Answer; @DAO public abstract class WareDao { @Insert public abstract int insert(Connection con, Ware ware) throws SQLException; @Insert public abstract int insert(Connection con, WareRes res) throws SQLException; @DeleteWith @From(WareRes.class) public abstract int deleteWareRes(Connection con, String id) throws SQLException; @DeleteWith @From(WareRes.class) public abstract int deleteWithRes(Connection con, String id, String resource) throws SQLException; @Insert public abstract int insert(Connection con, WarePro pro) throws SQLException; @DeleteWith @From(WarePro.class) public abstract int deleteWarePro(Connection con, String id) throws SQLException; @DeleteWith @From(WarePro.class) public abstract int deleteWithPro(Connection con, String id, String professor) throws SQLException; @Update public abstract int update(Connection con, Ware ware) throws SQLException; @UpdateWith @From(Ware.class) @Where("STATE<>'0'") @SetSentence("STATE = '0'") // @IncludeFixSet public abstract int logicDelete(Connection con, String id) throws SQLException; @UpdateWith @From(Ware.class) @SetSentence("PAGE_VIEWS=PAGE_VIEWS+1") public abstract int incPageViews(Connection con, String id) throws SQLException; @SelectList public abstract List queryPro(Connection con, String id) throws SQLException; @SelectList public abstract List queryRes(Connection con, String id) throws SQLException; @DefaultValue("0") @QueryVal @Column(value = "COUNT(1)", handlerClass = LongHandler.class) @From(WareRes.class) public abstract long countRes(Connection con, String id) throws SQLException; @DefaultValue("0") @QueryVal @Column(value = "COUNT(1)", handlerClass = LongHandler.class) @From(WarePro.class) public abstract long countPro(Connection con, String id) throws SQLException; @DefaultValue("0") @QueryVal @Column(value = "COUNT(1)", handlerClass = LongHandler.class) @From(Ware.class) @Where("STATE='1'") public abstract long countPublish(Connection con, String category, String owner) throws SQLException; @SelectOne @Nullable public abstract Ware queryById(Connection con, String id) throws SQLException; @SelectOne @Nullable public abstract Ware queryByShareId(Connection con, long shareId) throws SQLException; @SelectList public abstract List queryById(Connection con, @In String[] id) throws SQLException; @LimitSelect @Where("STATE='1'") public abstract List queryPublish(Connection con, String category, String owner, @LessThan String modifyTime, int rows) throws SQLException; @PageSelect @OrderBy("OrderBy STATE DESC,MODIFY_TIMDE DESC") @Where("(STATE='1' OR STATE ='2') AND CATEGORY='1'") public abstract PageQueryResult pageQuery(Connection con, @Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "NAME LIKE ?", "CNT LIKE ?", "KEYWORDS LIKE ?" }, isAnd = false) String key, String owner, int pageSize, int pageNo) throws SQLException; @QueryList @Select(Ware.class) @Where("(STATE='1' OR STATE ='2') AND CATEGORY='2'") @From(Ware.class) public abstract List queryByOwner(Connection con, @Nullable @GroupSqlColumn(handlerClass = StringHandler.class, value = { "NAME LIKE ?", "CNT LIKE ?", "KEYWORDS LIKE ?" }, isAnd = false) String key, String owner) throws SQLException; @LimitSelect @OrderBy(" ORDER BY PAGE_VIEWS DESC") @Where("STATE='1'") public abstract List queryByOwnerWithPageViews(Connection con,String category,String owner,@Nullable @UnEquals String id, int rows)throws SQLException; @LimitSelect @OrderBy("ORDER BY MODIFY_TIME DESC") @Where("STATE='1'") public abstract List queryByResource(Connection con,@SqlColumn(handlerClass=StringHandler.class, value = { "ID IN (SELECT ID FROM WARE_RES WHERE RESOURCE=?)" }) String id,int rows)throws SQLException; @LimitSelect @OrderBy("ORDER BY MODIFY_TIME DESC") @Where("STATE='1'") public abstract List queryByArticle(Connection con,@SqlColumn(handlerClass=StringHandler.class, value = { "ID IN (SELECT WARE FROM ARTICLE_WARE WHERE ID=?)" }) String id,int rows) throws SQLException; public List indexSeach(Connection con, String key, long sortFirst, String modifyTime, String id, int rows) throws SQLException { List result = new ArrayList(rows); StringBuilder sb = new StringBuilder(); sb.append("SELECT PAGE_VIEWS,ID,NAME,KEYWORDS,CNT,COOPERATION,DESCP,CATEGORY,OWNER,IMAGES,STATE,SHARE_ID,SORT_FIRST,CREATE_TIME,MODIFY_TIME FROM WARE") .append(" WHERE STATE='1' AND ((SORT_FIRST