package com.norteksoft.portal.dao;
import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import com.norteksoft.acs.entity.authorization.BusinessSystem;
import com.norteksoft.acs.service.authorization.BusinessSystemManager;
import com.norteksoft.portal.base.enumeration.StaticVariable;
import com.norteksoft.portal.entity.Widget;
import com.norteksoft.product.orm.Page;
import com.norteksoft.product.orm.hibernate.HibernateDao;
import com.norteksoft.product.util.ContextUtils;
@Repository
public class WidgetDao extends HibernateDao<Widget, Long>{
@Autowired
private BusinessSystemManager businessSystemManager;
public List<Widget> getWidgets(){
return this.find("FROM Widget w WHERE w.acquiescent=? and w.companyId=?",true,ContextUtils.getCompanyId());
}
public Widget getWidgetByName(String code){
return this.findUnique("FROM Widget w WHERE w.systemCode=? AND w.name=?",code,StaticVariable.NOTICE);
}
public Widget getWidgetBySystemCode(String code){
return this.findUnique("FROM Widget w WHERE w.systemCode=?",code);
}
public Widget getWidgetByCode(String code){
List<Widget> ws= this.find("FROM Widget w WHERE w.code=? ",code);
if(ws.size()>0)return ws.get(0);
return null;
}
public Widget getWidgetByNames(String widgetName) throws Exception{
return this.findUnique("FROM Widget t WHERE t.name=?", widgetName);
}
public Widget getWidgetById(Long widgetId){
return this.findUnique("FROM Widget t WHERE t.id=?", widgetId);
}
//根据系统id得到小窗体,不在任何公司中
public List<Widget> getWidgetsBySystemCode(String systemCode){
return this.find("FROM Widget w WHERE w.systemCode=? ",systemCode);
}
public Widget getWidget(String systemCode,String url){
List<Widget> ws= this.find("FROM Widget w WHERE w.systemCode=? and w.url=? ",systemCode,url);
if(ws.size()>0)return ws.get(0);
return null;
}
//根据系统id得到小窗体
public void getWidgetsBySystemCode(Page<Widget> widgetPage,String systemCode){
this.searchPageByHql(widgetPage,"from Widget w where w.systemCode=? and w.companyId=?",systemCode,ContextUtils.getCompanyId());
}
//根据系统id得到小窗体
public List<Widget> getWidgetsBySystem(String systemIds,Long companyId){
StringBuilder hql=new StringBuilder("from Widget m where m.companyId=? ");
if(StringUtils.isNotEmpty(systemIds)&&systemIds.charAt(systemIds.length()-1)==',')systemIds=systemIds.substring(0,systemIds.length()-1);
Object[] values=new Object[1];
if(StringUtils.isNotEmpty(systemIds)){
hql.append(" and ");
values=new Object[1+systemIds.split(",").length];
}
values[0]=companyId;
if(StringUtils.isNotEmpty(systemIds)){
String[] sysIds=systemIds.split(",");
for(int i=0;i<sysIds.length;i++){
if(StringUtils.isNotEmpty(sysIds[i])){
if(i==0)hql.append("(");
hql.append(" m.systemCode=? ");
if(i<sysIds.length-1){
hql.append(" or ");
}
if(i==sysIds.length-1)hql.append(")");
BusinessSystem system=businessSystemManager.getBusiness(Long.parseLong(sysIds[i]));
values[1+i]=system.getCode();
}
}
}
return find(hql.toString(), values);
}
//获得所有系统的小窗体
public List<Widget> getDefaultWidgets(Long companyId){
List<BusinessSystem> systems=businessSystemManager.getAllSystems();
StringBuilder hql=new StringBuilder("from Widget m where m.companyId=? and (");
Object[] values=new Object[1+systems.size()];
values[0]=companyId;
for(int i=0;i<systems.size();i++){
hql.append(" m.systemCode=? or");
values[1+i]=systems.get(i).getCode();
}
hql.append(")");
hql.replace(hql.lastIndexOf("or"), hql.indexOf(")"), "");
return find(hql.toString(), values);
}
}