package com.sinba.itsm.tools.action; import java.util.ArrayList; import java.util.List; import org.compass.core.CompassHit; import org.compass.core.support.search.CompassSearchResults; import org.springframework.beans.factory.annotation.Autowired; import com.opensymphony.xwork2.ActionSupport; import com.sinba.common.compass.dto.CompassQueryDTO; import com.sinba.common.compass.service.ICompassSearchService; import com.sinba.common.dto.PageDTO; import com.sinba.itsm.tools.dto.KnowledgeDTO; import com.sinba.itsm.tools.dto.KnowledgeQueryDTO; import com.sinba.itsm.tools.entity.KnowledgeInfo; import com.sinba.itsm.tools.service.IKnowledgeService; import com.sinba.itsm.tools.service.KnowledgeService; /** *@date:2010-11-2 *@autor:Eileen *@description */ public class KnowledgeAction extends ActionSupport { @Autowired private IKnowledgeService knowledgeService; @Autowired private ICompassSearchService compassSearchService; private KnowledgeDTO knowledgeDto = new KnowledgeDTO( ); private CompassQueryDTO compassQueryDto = new CompassQueryDTO( ); private KnowledgeQueryDTO knowledgeQueryDto = new KnowledgeQueryDTO( ); private List<KnowledgeDTO> list = new ArrayList<KnowledgeDTO>( ); private Long[] nos; private PageDTO knowledges; private int page = 1; private int rows = 10; public CompassQueryDTO getCompassQueryDto( ) { return compassQueryDto; } public void setCompassQueryDto( CompassQueryDTO compassQueryDto ) { this.compassQueryDto = compassQueryDto; } public KnowledgeQueryDTO getKnowledgeQueryDto( ) { return knowledgeQueryDto; } public void setKnowledgeQueryDto( KnowledgeQueryDTO knowledgeQueryDto ) { this.knowledgeQueryDto = knowledgeQueryDto; } public PageDTO getKnowledges( ) { return knowledges; } public void setKnowledges( PageDTO knowledges ) { this.knowledges = knowledges; } public int getPage( ) { return page; } public void setPage( int page ) { this.page = page; } public int getRows( ) { return rows; } public void setRows( int rows ) { this.rows = rows; } public Long[] getNos( ) { return nos; } public void setNos( Long[] nos ) { this.nos = nos; } public KnowledgeDTO getKnowledgeDto( ) { return knowledgeDto; } public void setKnowledgeDto( KnowledgeDTO knowledgeDto ) { this.knowledgeDto = knowledgeDto; } public List<KnowledgeDTO> getList( ) { return list; } /** * find all knowledgeInfo * @return */ public String findAllKnowledges( ) { int start = ( page - 1 ) * rows; knowledges = knowledgeService.findAllKnowledgeInfos( knowledgeQueryDto, start, rows ); knowledges.setPage( page ); knowledges.setRows( rows ); return SUCCESS; } /** * save knowledgeInfo * @return */ public String saveKnowledgeInfo( ) { knowledgeService.saveKnowledgeInfo( knowledgeDto ); return SUCCESS; } /** * remove knowledgeInfos * @param nos * @return */ public String removeKnowledgeItems( ) { knowledgeService.removeKnowledgeItems( nos ); return SUCCESS; } /** * update knowledgeInfo by kId * @return */ public String updateKnowledgeInfo( ) { knowledgeService.updateKnowledgeInfo( knowledgeDto ); return SUCCESS; } /** * find new knowledge * @return findKnowledge */ public String findNewKnowledge( ) { list = knowledgeService.findNewKnowledge( ); return "findKnowledge"; } /** * find popular knowledge * @return */ public String findPopularKnowledge( ) { list = knowledgeService.findPopularKnowledge( ); return "findKnowledge"; } /** * full search * @return */ public String fullSearch( ) { String[] fields = { "knTitle", "content", "keyWords", "remark", "description" }; CompassSearchResults csr = compassSearchService.performSearch( compassQueryDto, fields, page, rows ); knowledges = new PageDTO( ); knowledges.setTotalSize( csr.getTotalHits( ) ); knowledges.setPage( page ); knowledges.setRows( rows ); List data = new ArrayList( ); CompassHit[] hit = csr.getHits( ); for ( int i = 0; i < hit.length; i++ ) { String alias = hit[i].alias( ); System.out.println( "alias" + alias ); if ( alias.equals( "KnowledgeInfo" ) ) { KnowledgeInfo entity = (KnowledgeInfo) hit[i].data( ); KnowledgeDTO dto = new KnowledgeDTO( ); KnowledgeService.entity2dto( entity, dto ); data.add( dto ); } } knowledges.setData( data ); return SUCCESS; } } package com.sinba.itsm.tools.entity; import org.compass.annotations.Searchable; import org.compass.annotations.SearchableId; import org.compass.annotations.SearchableProperty; import java.util.Date; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; /** *@date:2010-11-2 *@autor:Eileen *@description */ @Entity @Searchable public class KnowledgeInfo { @SearchableId private Long knId; @SearchableProperty private String knTitle; private String knCategory; private String permission; @SearchableProperty private String content; private String attachment; @SearchableProperty private String keyWords; @SearchableProperty private String remark; @SearchableProperty private String description; private Date addTime; private Long clickRate = 0L; @Id @GeneratedValue( strategy = GenerationType.AUTO ) public Long getKnId( ) { return knId; } public void setKnId( Long knId ) { this.knId = knId; } public String getKnCategory( ) { return knCategory; } public void setKnCategory( String knCategory ) { this.knCategory = knCategory; } public String getKnTitle( ) { return knTitle; } public void setKnTitle( String knTitle ) { this.knTitle = knTitle; } public String getPermission( ) { return permission; } public void setPermission( String permission ) { this.permission = permission; } public String getContent( ) { return content; } public void setContent( String content ) { this.content = content; } public String getAttachment( ) { return attachment; } public void setAttachment( String attachment ) { this.attachment = attachment; } public String getKeyWords( ) { return keyWords; } public void setKeyWords( String keyWords ) { this.keyWords = keyWords; } public String getRemark( ) { return remark; } public void setRemark( String remark ) { this.remark = remark; } public String getDescription( ) { return description; } public void setDescription( String description ) { this.description = description; } public Date getAddTime( ) { return addTime; } public void setAddTime( Date addTime ) { this.addTime = addTime; } public Long getClickRate( ) { return clickRate; } public void setClickRate( Long clickRate ) { this.clickRate = clickRate; } }