public static SearchResult tagSearch(Mapx map) { SearchParameters sps = new SearchParameters(); String site = map.getString("site"); String order = map.getString("order"); String keyword = map.getString("keyword"); String query = map.getString("query"); if (StringUtil.isEmpty(keyword)) { keyword = query; } String page = map.getString("page"); String size = map.getString("size"); if (StringUtil.isNotEmpty(keyword)) { sps.addLikeField("Tag", keyword, false); } if ("time".equalsIgnoreCase(order)) { sps.setSortField("PublishDate", 3, true); } if (StringUtil.isNotEmpty(page)) { sps.setPageIndex(Integer.parseInt(page) - 1); } if (StringUtil.isNotEmpty(size)) { sps.setPageSize(Integer.parseInt(size)); } String id = SearchAPI.getIndexIDBySiteID(site); sps.setIndexID(Long.parseLong(id)); return ArticleIndexer.search(sps); }
public static SearchResult search(Mapx map) { SearchParameters sps = new SearchParameters(); String site = map.getString("site"); String id = map.getString("id"); String catalog = map.getString("catalog"); if (StringUtil.isEmpty(catalog)) { catalog = map.getString("Catalog"); } String order = map.getString("order"); String time = map.getString("time"); String keyword = map.getString("keyword"); String query = map.getString("query"); if (StringUtil.isEmpty(keyword)) { keyword = query; } String page = map.getString("page"); String size = map.getString("size"); if (StringUtil.isEmpty(id)) { id = SearchAPI.getIndexIDBySiteID(site); } if (StringUtil.isNotEmpty(keyword)) { sps.addFulltextField("Title", keyword, false); sps.addFulltextField("Content", keyword, false); sps.addFulltextField("_Keyword", keyword, true); } if ("time".equalsIgnoreCase(order)) { sps.setSortField("PublishDate", 3, true); } if (StringUtil.isNotEmpty(time)) { Date today = new Date(); String StartDate = DateUtil.toString(DateUtil.addDay(today, -36500)); if (time.equals("week")) StartDate = DateUtil.toString(DateUtil.addDay(today, -7)); else if (time.equals("month")) StartDate = DateUtil.toString(DateUtil.addDay(today, -30)); else if (time.equals("quarter")) { StartDate = DateUtil.toString(DateUtil.addDay(today, -90)); } String EndDate = "2999-01-01"; sps.setDateRange("PublishDate", StartDate, EndDate); } if (StringUtil.isNotEmpty(catalog)) { sps.addLeftLikeField("CatalogInnerCode", catalog); } if (StringUtil.isNotEmpty(page)) { sps.setPageIndex(Integer.parseInt(page) - 1); } if (StringUtil.isNotEmpty(size)) { sps.setPageSize(Integer.parseInt(size)); } if (StringUtil.isEmpty(id)) { SearchResult sr = new SearchResult(); sr.Data = new DataTable(); return sr; } sps.setIndexID(Long.parseLong(id)); return ArticleIndexer.search(sps); }
public static void dg1DataBind(DataGridAction dga) { String searchUserName = dga.getParam("searchUserName"); QueryBuilder qb = new QueryBuilder("select * from ZSOrder where IsValid = 'Y' and status='10'"); QueryBuilder totalQB = new QueryBuilder("select * from ZSOrder where IsValid = 'Y' and status='10'"); if (StringUtil.isNotEmpty(searchUserName)) { qb.append(" and UserName like ? ", "%" + searchUserName + "%"); totalQB.append(" and UserName like ? ", "%" + searchUserName + "%"); } dga.setTotal(totalQB); qb.append(" order by id desc"); DataTable dt = qb.executePagedDataTable(dga.getPageSize(), dga.getPageIndex()); dt.decodeColumn("IsValid", HtmlUtil.codeToMapx("Order.IsValid")); dt.decodeColumn("HasInvoice", HtmlUtil.codeToMapx("Order.HasInvoice")); dt.decodeColumn("Status", HtmlUtil.codeToMapx("Order.Status")); DataTable dc = new QueryBuilder("select Name,Code from zddistrict Order by Code").executeDataTable(); Mapx map = dc.toMapx("Code", "Name"); dt.decodeColumn("Province", map); dt.decodeColumn("City", map); dt.decodeColumn("District", map); dga.bindData(dt); }
public static String[] getSearchEngine(Visit v) { String url = v.URL; if (StringUtil.isEmpty(url)) { return null; } if (url.indexOf("Result.jsp") > 0) { String keyword = SearchAPI.getParameter(url, "query"); return new String[] {"站内搜索", keyword}; } url = v.Referer; String domain = StatUtil.getDomain(url); Mapx map = ServletUtil.getMapFromQueryString(url); String name = null; String keyword = null; if (domain.indexOf("baidu.") > 0) { keyword = StringUtil.urlDecode(map.getString("wd"), "GBK"); name = "百度"; } else if (domain.indexOf("google.") > 0) { String charset = map.getString("ie"); if (StringUtil.isEmpty(charset)) { charset = "UTF-8"; } keyword = StringUtil.urlDecode(map.getString("q"), charset); name = "谷歌"; } else if (domain.indexOf("yahoo.") > 0) { String charset = map.getString("ei"); if (StringUtil.isEmpty(charset)) { charset = "UTF-8"; } keyword = StringUtil.urlDecode(map.getString("p"), charset); name = "雅虎"; } else if (domain.indexOf("msn.") > 0) { keyword = StringUtil.urlDecode(map.getString("q"), "UTF-8"); name = "MSN"; } else if (domain.indexOf("soso.") > 0) { keyword = StringUtil.urlDecode(map.getString("w"), "GBK"); name = "搜搜"; } else if (domain.indexOf("sogou.") > 0) { keyword = StringUtil.urlDecode(map.getString("query"), "GBK"); name = "搜狗"; } else if (domain.indexOf("zhongsou.") > 0) { keyword = StringUtil.urlDecode(map.getString("word"), "GBK"); name = "中搜"; } else if (domain.indexOf("youdao.") > 0) { String charset = map.getString("ue"); if (StringUtil.isEmpty(charset)) { charset = "UTF-8"; } keyword = StringUtil.urlDecode(map.getString("q"), charset); name = "有道"; } else if (domain.indexOf("live.") > 0) { keyword = StringUtil.urlDecode(map.getString("q"), "UTF-8"); name = "Live.com"; } if (StringUtil.isNotEmpty(keyword)) { return new String[] {name, keyword}; } return null; }
public void setRelaTableMaxNo(SiteTableRela.TableRela tr, DataRow dr, boolean newIDFlag) { for (int i = 0; i < this.NoRelas.length; ++i) { SiteTableRela.NoType nr = this.NoRelas[i]; if (nr.TableCode.equalsIgnoreCase(tr.TableCode)) { String id = dr.getString(nr.FieldName); if (newIDFlag) { id = String.valueOf(NoUtil.getMaxID(nr.NoType)); } addIDMapping(nr.TableCode + "." + nr.FieldName, dr.getString(nr.FieldName), id); dr.set(nr.FieldName, id); } } for (int i = 0; i < this.TableRelas.length; ++i) if (this.TableRelas[i].TableCode.equals(tr.TableCode)) { String type = this.TableRelas[i].RelaTable; if ((((type.equals("ZCArticle")) || (type.equals("ZCAttachment")) || (type.equals("ZCImage")) || (type.equals("ZCAudio")) || (type.equals("ZCVideo")))) && (this.TableRelas[i].RelaField.equals("ID"))) { type = "Document"; } String id = getIDMapping( type + "." + this.TableRelas[i].RelaField, dr.getString(this.TableRelas[i].KeyField)); if (StringUtil.isNotEmpty(id)) dr.set(this.TableRelas[i].KeyField, id); } }
public void setSiteIDTableMaxNo(String tableName, DataRow dr, boolean newIDFlag) { try { if (dr.getDataColumn("SiteID") != null) dr.set("SiteID", getIDMapping("ZCSite", String.valueOf(this.siteID))); } catch (Throwable t) { t.printStackTrace(); LogUtil.warn(tableName); } for (int i = 0; i < this.NoRelas.length; ++i) { SiteTableRela.NoType nr = this.NoRelas[i]; if (nr.TableCode.equalsIgnoreCase(tableName)) { String id = dr.getString(nr.FieldName); if (newIDFlag) { if ((nr.TableCode.equals("ZCCatalog")) && (nr.FieldName.equals("InnerCode"))) if (id.length() == 6) { id = CatalogUtil.createCatalogInnerCode(null); } else { String parent = id.substring(0, id.length() - 6); parent = getIDMapping(nr.TableCode + "." + nr.FieldName, parent); id = CatalogUtil.createCatalogInnerCode(parent); } else { id = String.valueOf(NoUtil.getMaxID(nr.NoType)); } } String type = nr.TableCode; if ((((type.equals("ZCArticle")) || (type.equals("ZCAttachment")) || (type.equals("ZCImage")) || (type.equals("ZCAudio")) || (type.equals("ZCVideo")))) && (nr.NoType.equals("DocID"))) { type = "Document"; } addIDMapping(type + "." + nr.FieldName, dr.getString(nr.FieldName), id); dr.set(nr.FieldName, id); } } for (int i = 0; i < this.TableRelas.length; ++i) if (this.TableRelas[i].TableCode.equals(tableName)) { String type = this.TableRelas[i].RelaTable; if ((((type.equals("ZCArticle")) || (type.equals("ZCAttachment")) || (type.equals("ZCImage")) || (type.equals("ZCAudio")) || (type.equals("ZCVideo")))) && (this.TableRelas[i].RelaField.equals("ID"))) { type = "Document"; } String id = getIDMapping( type + "." + this.TableRelas[i].RelaField, dr.getString(this.TableRelas[i].KeyField)); if (StringUtil.isNotEmpty(id)) dr.set(this.TableRelas[i].KeyField, id); } }
public void add() { String toUser = $V("ToUser"); if (!StringUtil.checkID(toUser)) { this.Response.setLogInfo(0, "传入参数错误!"); return; } String[] userList = toUser.split(","); String toRole = $V("ToRole"); if (!StringUtil.checkID(toRole)) { this.Response.setLogInfo(0, "传入参数错误!"); return; } String[] roleList = toRole.split(","); if (roleList.length > 0) { String roleStr = ""; for (int j = 0; j < roleList.length; ++j) { if (StringUtil.isNotEmpty(roleList[j])) { if (j == 0) roleStr = roleStr + "'" + roleList[j] + "'"; else { roleStr = roleStr + ",'" + roleList[j] + "'"; } } } if (StringUtil.isNotEmpty(roleStr)) { DataTable dt = new QueryBuilder("select UserName from zduserRole where rolecode in (" + roleStr + ")") .executeDataTable(); for (int k = 0; k < dt.getRowCount(); ++k) { String userName = dt.getString(k, "UserName"); if ((!User.getUserName().equals(userName)) && (!ArrayUtils.contains(userList, userName))) { userList = (String[]) ArrayUtils.add(userList, userName); } } } } if (MessageCache.addMessage($V("Subject"), $V("Content"), userList, User.getUserName())) this.Response.setLogInfo(1, "新建成功!"); else this.Response.setLogInfo(0, "新建失败!"); }
public static void bindRoleList(DataGridAction dga) { String searchRoleName = dga.getParam("SearchRoleName"); QueryBuilder qb = new QueryBuilder("select * from ZDRole"); qb.append(" where BranchInnerCode like ?", User.getBranchInnerCode() + "%"); if (StringUtil.isNotEmpty(searchRoleName)) { qb.append(" and (RoleCode like ?", "%" + searchRoleName.trim() + "%"); qb.append(" or RoleName like ?)", "%" + searchRoleName.trim() + "%"); } qb.append(" order by AddTime desc"); dga.bindData(qb); }
public static void bindUserList(DataGridAction dga) { String searchUserName = dga.getParam("SearchUserName"); QueryBuilder qb = new QueryBuilder("select * from ZDUser"); qb.append(" where BranchInnerCode like ?", User.getBranchInnerCode() + "%"); qb.append(" and UserName <> ?", User.getUserName()); if (StringUtil.isNotEmpty(searchUserName)) { qb.append(" and (UserName like ?", "%" + searchUserName.trim() + "%"); qb.append(" or realname like ?)", "%" + searchUserName.trim() + "%"); } qb.append(" order by AddTime desc"); dga.setTotal(qb); DataTable dt = qb.executePagedDataTable(dga.getPageSize(), dga.getPageIndex()); dt.decodeColumn("Status", UserList.STATUS_MAP); dga.bindData(dt); }
public static boolean evalCondition(Treex.TreeNode parent, TemplateContext context) { LogicClause clause = (LogicClause) parent.getData(); if ((clause != null) && (StringUtil.isNotEmpty(clause.getClauseString()))) { return clause.execute(context); } Treex.TreeNodeList list = parent.getChildren(); boolean v = true; for (int i = 0; i < list.size(); ++i) { clause = (LogicClause) list.get(i).getData(); boolean isOr = clause.isOr; if ((clause == null) || (StringUtil.isEmpty(clause.getClauseString()))) { if ((isOr) && (v)) { continue; } if ((!isOr) && (!v)) { continue; } v = (v) || (evalCondition(list.get(i), context)); } } return v; }
public void writeArticle() { prepareList(); if (this.config.getType() == 1) { QueryBuilder imageQB = new QueryBuilder("select id from zccatalog where type=4 and siteid=?", CatalogUtil.getSiteID(this.config.getCatalogID())); String imageCatalogID = imageQB.executeString(); if (StringUtil.isEmpty(CatalogUtil.getSiteID(this.config.getCatalogID()))) { LogUtil.getLogger().warn("文档采集的目的栏目不存在:ID=" + this.config.getCatalogID()); return; } String sitePath = SiteUtil.getAbsolutePath(CatalogUtil.getSiteID(this.config.getCatalogID())); String imagePath = "upload/Image/" + CatalogUtil.getAlias(imageCatalogID) + "/"; RegexParser rp = this.config.getTemplate("Ref1"); RegexParser[] filters = this.config.getFilterBlocks(); this.list.moveFirst(); WebDocument doc = null; int cSuccess = 0; int cFailure = 0; int cLost = 0; boolean publishDateFlag = false; ZCArticleSet set = new ZCArticleSet(); while ((doc = this.list.next()) != null) { if (this.task.checkStop()) { return; } if (doc.getLevel() != this.config.getUrlLevels().length - 1) { continue; } int percent = (100 - this.task.getPercent()) * (cSuccess + cFailure + cLost) / this.list.size(); this.task.setPercent(this.task.getPercent() + percent); if ((doc.isTextContent()) && (doc.getContent() != null)) { String text = doc.getContentText(); rp.setText(text); if (rp.match()) { Mapx map = rp.getMapx(); Object[] ks = map.keyArray(); Object[] vs = map.valueArray(); for (int i = 0; i < map.size(); ++i) { String key = ks[i].toString(); String value = vs[i].toString(); if (!key.equalsIgnoreCase("Content")) { value = this.tagPattern.matcher(value).replaceAll(""); } value = StringUtil.htmlDecode(value); value = value.trim(); map.put(key, value); } String title = map.getString("Title"); String content = map.getString("Content"); String author = map.getString("Author"); String source = map.getString("Source"); String strDate = map.getString("PublishDate"); Date publishDate = doc.getLastmodifiedDate(); if ((StringUtil.isNotEmpty(strDate)) && (StringUtil.isNotEmpty(this.config.getPublishDateFormat()))) { try { strDate = DateUtil.convertChineseNumber(strDate); publishDate = DateUtil.parse(strDate, this.config.getPublishDateFormat()); } catch (Exception e) { this.task.addError("日期" + strDate + "不符合指定格式" + doc.getUrl()); } publishDateFlag = true; } if (publishDate.getTime() > System.currentTimeMillis()) { publishDate = new Date(); } ArticleAPI api = new ArticleAPI(); try { ZCArticleSchema article = new ZCArticleSchema(); if (StringUtil.isNotEmpty(title)) { article.setTitle(title); } else { ++cLost; break label1209: } if (StringUtil.isNotEmpty(content)) { content = content.trim(); while (rp.match()) { String html = rp.getMapx().getString("Content"); content = content + html; } if (this.config.isCleanLinkFlag()) { content = this.framePattern.matcher(content).replaceAll(""); content = this.stylePattern.matcher(content).replaceAll(""); content = this.scriptPattern.matcher(content).replaceAll(""); content = this.linkPattern.matcher(content).replaceAll("$1"); } if (filters != null) { for (int k = 0; k < filters.length; ++k) { content = filters[k].replace(content, ""); } } String str = dealImage(content, doc.getUrl(), sitePath, imagePath, imageCatalogID); article.setContent(str); } else { ++cLost; break label1209: } if (StringUtil.isNotEmpty(author)) { article.setAuthor(author); } if (StringUtil.isNotEmpty(source)) { article.setReferName(source); } article.setReferURL(doc.getUrl()); article.setPublishDate(publishDate); article.setCatalogID(this.config.getCatalogID()); article.setBranchInnerCode("0001"); article.setProp2("FromWeb"); if (ExtendManager.hasAction("FromWeb.BeforeSave")) { ExtendManager.executeAll("FromWeb.BeforeSave", new Object[] { article }); } Date date = (Date)new QueryBuilder( "select PublishDate from ZCArticle where ReferURL=? and CatalogID=?", doc.getUrl(), this.config.getCatalogID()).executeOneValue(); if (date != null) { if (date.getTime() < doc.getLastDownloadTime()) { QueryBuilder qb = new QueryBuilder( "update ZCArticle set Title=?,Content=? where CatalogID=? and ReferURL=?"); qb.add(article.getTitle()); qb.add(article.getContent()); qb.add(this.config.getCatalogID()); qb.add(doc.getUrl()); qb.executeNoQuery(); } ++cSuccess; } else { api.setSchema(article); set.add(article); if (api.insert() > 0L) ++cSuccess; else ++cFailure; } } catch (Exception e) { ++cFailure; e.printStackTrace(); } } else { LogUtil.getLogger().info("未能匹配" + doc.getUrl()); this.task.addError("未能匹配" + doc.getUrl()); ++cLost; } label1209: this.task.setCurrentInfo("正在转换文档, <font class='green'>" + cSuccess + "</font> 个成功, <font class='red'>" + cFailure + "</font> 个失败, <font class='green'>" + cLost + "</font> 个未匹配"); } }
public static SearchResult advanceSearch(Mapx map) { SearchParameters sps = new SearchParameters(); String site = map.getString("site"); String id = map.getString("id"); String startDate = map.getString("startdate"); String endDate = map.getString("enddate"); String catalog = map.getString("catalog"); String author = map.getString("author"); String title = map.getString("title"); String content = map.getString("content"); String keyword = map.getString("keyword"); String query = map.getString("query"); if (StringUtil.isEmpty(keyword)) { keyword = query; } String orderField = map.getString("orderfield"); String descFlag = map.getString("descflag"); String page = map.getString("page"); String size = map.getString("size"); if (StringUtil.isEmpty(id)) { id = SearchAPI.getIndexIDBySiteID(site); } if ((StringUtil.isNotEmpty(startDate)) && (StringUtil.isEmpty(endDate))) { endDate = "2099-01-01"; } if ((StringUtil.isNotEmpty(endDate)) && (StringUtil.isEmpty(startDate))) { startDate = "1900-01-01"; } if (StringUtil.isNotEmpty(startDate)) { sps.setDateRange("PublishDate", startDate, endDate); } if (StringUtil.isNotEmpty(catalog)) { sps.addLeftLikeField("CatalogInnerCode", catalog, true); } if (StringUtil.isNotEmpty(title)) { sps.addFulltextField("Title", title); } if (StringUtil.isNotEmpty(content)) { sps.addFulltextField("Content", content); } if (StringUtil.isNotEmpty(keyword)) { sps.addFulltextField("Title", keyword, false); sps.addFulltextField("Content", keyword, false); sps.addFulltextField("_Keyword", keyword, true); } if (StringUtil.isNotEmpty(orderField)) { boolean isDesc = "true".equals(descFlag); sps.setSortField(orderField, 3, isDesc); } if (StringUtil.isNotEmpty(author)) { sps.addEqualField("Author", author); } if (StringUtil.isNotEmpty(page)) { sps.setPageIndex(Integer.parseInt(page) - 1); } if (StringUtil.isNotEmpty(size)) { sps.setPageSize(Integer.parseInt(size)); } if (StringUtil.isEmpty(id)) { SearchResult sr = new SearchResult(); sr.Data = new DataTable(); return sr; } sps.setIndexID(Long.parseLong(id)); return ArticleIndexer.search(sps); }