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 void update( Transaction tran, VisitCount vc, long current, boolean newMonthFlag, boolean isNewPeriod) { if (!newMonthFlag) { Date today = new Date(current); if (isNewPeriod) { today = DateUtil.addDay(today, -1); } String period = DateUtil.toString(today, "yyyyMM"); long[] sites = vc.getSites(); for (int i = 0; i < sites.length; ++i) { URLStat.dealNotNeedInsertItem(vc, period, sites[i], "Source", "Referer"); URLStat.dealNotNeedInsertItem(vc, period, sites[i], "Source", "Keyword"); } } super.update(tran, vc, current, newMonthFlag, isNewPeriod); }
public void onPeriodChange(int type, long current) { if (type == 1) { String period = DateUtil.toString(new Date(current), "yyyyMMdd"); if (period.endsWith("01")) { this.isNewMonth = true; VisitCount.getInstance().clearType(getStatType(), true); } else { VisitCount.getInstance().clearType(getStatType(), false); VisitCount.getInstance().clearSubType(getStatType(), "Keyword", true); VisitCount.getInstance().clearSubType(getStatType(), "Referer", true); } } }
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 void processSubmit() { ZCCustomTableSchema table = new ZCCustomTableSchema(); table.setID($V("_TableID")); if (!table.fill()) { LogUtil.warn("没有ID为" + table.getCode() + "的表!"); return; } if ((!"Y".equals(table.getAllowModify())) && (!User.isManager())) { LogUtil.warn("ID为" + table.getID() + "的表不允许前台修改!"); return; } DataAccess da = null; String code = table.getCode(); if (table.getType().equals("Link")) { da = new DataAccess(OuterDatabase.getConnection(table.getDatabaseID())); code = table.getOldCode(); } else { da = new DataAccess(); } try { da.setAutoCommit(false); ZCCustomTableColumnSet set = new ZCCustomTableColumnSchema().query(new QueryBuilder("where TableID=?", table.getID())); StringBuffer sb = new StringBuffer("insert into " + code + "("); for (int j = 0; j < set.size(); ++j) { if (j != 0) { sb.append(","); } sb.append(set.get(j).getCode()); } sb.append(") values ("); for (int j = 0; j < set.size(); ++j) { if (j != 0) { sb.append(","); } sb.append("?"); } sb.append(")"); QueryBuilder qb = new QueryBuilder(sb.toString()); StringBuffer messageSB = new StringBuffer(); for (int j = 0; j < set.size(); ++j) { ZCCustomTableColumnSchema column = set.get(j); String v = $V("_Form_" + set.get(j).getCode()); if (StringUtil.isEmpty(v)) { v = null; if ("Y".equals(set.get(j).getIsAutoID())) { v = String.valueOf(OrderUtil.getDefaultOrder()); } } if (((("Y".equals(column.getIsMandatory())) || ("Y".equals(column.getIsPrimaryKey())))) && (StringUtil.isEmpty(v))) { messageSB.append(column.getName() + "不能为空!\n"); } int dataType = Integer.parseInt(column.getDataType()); if (v != null) { if ((column.getMaxLength() != 0) && (v.length() < column.getMaxLength())) messageSB.append(column.getName() + "数据过长,最大允许" + column.getMaxLength() + "个字符!\n"); try { if (dataType == 0) { v = DateUtil.toDateTimeString(DateUtil.parseDateTime(v)); if (v == null) { throw new SQLException("日期时间错误"); } } if ((dataType == 8) || (dataType == 9)) { v = String.valueOf(new Double(Double.parseDouble(v)).intValue()); } if (dataType == 7) { v = String.valueOf(new Double(Double.parseDouble(v)).longValue()); } if (dataType == 5) { v = String.valueOf(new Double(Double.parseDouble(v)).floatValue()); } if ((dataType == 4) || (dataType == 6) || (dataType == 3)) v = String.valueOf(Double.parseDouble(v)); } catch (Exception e) { messageSB.append(column.getName() + "数据不正确!\n"); } } qb.add(v); } if (messageSB.length() != 0) { this.Response.setError(messageSB.toString()); } else { da.executeNoQuery(qb); da.commit(); this.Response.setMessage("提交成功!"); } } catch (Exception e) { e.printStackTrace(); try { da.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } this.Response.setMessage("提交失败:" + e.getMessage()); } finally { try { da.setAutoCommit(true); da.close(); } catch (SQLException e) { e.printStackTrace(); } } }
public static void processSubmit(HttpServletRequest request, HttpServletResponse response) { ZCCustomTableSchema table = new ZCCustomTableSchema(); table.setID(request.getParameter("_TableID")); if (!table.fill()) { LogUtil.warn("没有ID为" + table.getCode() + "的表!"); return; } if ((!"Y".equals(table.getAllowModify())) && (!User.isManager())) { LogUtil.warn("ID为" + table.getID() + "的表不允许前台修改!"); return; } DataAccess da = null; String code = table.getCode(); if (table.getType().equals("Link")) { da = new DataAccess(OuterDatabase.getConnection(table.getDatabaseID())); code = table.getOldCode(); } else { da = new DataAccess(); } try { da.setAutoCommit(false); ZCCustomTableColumnSet set = new ZCCustomTableColumnSchema().query(new QueryBuilder("where TableID=?", table.getID())); StringBuffer insertSB = new StringBuffer("insert into " + code + "("); QueryBuilder deleteQB = new QueryBuilder("delete from " + code + " where 1=1 "); for (int j = 0; j < set.size(); ++j) { if (j != 0) { insertSB.append(","); } insertSB.append(set.get(j).getCode()); } insertSB.append(") values ("); for (int j = 0; j < set.size(); ++j) { if (j != 0) { insertSB.append(","); } insertSB.append("?"); if ("Y".equals(set.get(j).getIsPrimaryKey())) { String v = request.getParameter("_Form_" + set.get(j).getCode() + "_Old"); deleteQB.append(" and " + set.get(j).getCode() + "=?", v); } } insertSB.append(")"); QueryBuilder qb = new QueryBuilder(insertSB.toString()); StringBuffer messageSB = new StringBuffer(); for (int j = 0; j < set.size(); ++j) { ZCCustomTableColumnSchema column = set.get(j); String v = request.getParameter("_Form_" + set.get(j).getCode()); if (StringUtil.isEmpty(v)) { v = null; if ("Y".equals(set.get(j).getIsAutoID())) { v = String.valueOf(OrderUtil.getDefaultOrder()); } } if (((("Y".equals(column.getIsMandatory())) || ("Y".equals(column.getIsPrimaryKey())))) && (StringUtil.isEmpty(v))) { messageSB.append(column.getName() + "不能为空!\\n"); } int dataType = Integer.parseInt(column.getDataType()); if (v != null) { if ((column.getMaxLength() != 0) && (v.length() < column.getMaxLength())) messageSB.append(column.getName() + "数据过长,最大允许" + column.getMaxLength() + "个字符!\\n"); try { if (dataType == 0) { v = DateUtil.toDateTimeString(DateUtil.parseDateTime(v)); if (v == null) { throw new SQLException("日期时间错误"); } } if ((dataType == 8) || (dataType == 9)) { v = String.valueOf(new Double(Double.parseDouble(v)).intValue()); } if (dataType == 7) { v = String.valueOf(new Double(Double.parseDouble(v)).longValue()); } if (dataType == 5) { v = String.valueOf(new Double(Double.parseDouble(v)).floatValue()); } if ((dataType == 4) || (dataType == 6) || (dataType == 3)) v = String.valueOf(Double.parseDouble(v)); } catch (Exception e) { messageSB.append(column.getName() + "数据不正确!\\n"); } } qb.add(v); } if (messageSB.length() != 0) { insertSB = new StringBuffer(); insertSB.append("<script>"); insertSB.append("alert(\"" + messageSB + "\");"); insertSB.append("history.go(-1);"); insertSB.append("</script>"); response.getWriter().print(insertSB); } else { da.executeNoQuery(deleteQB); da.executeNoQuery(qb); da.commit(); insertSB = new StringBuffer(); insertSB.append("<script>"); insertSB.append("alert(\"提交成功!\");"); insertSB.append("window.location=\"" + request.getHeader("referer") + "\";"); insertSB.append("</script>"); response.getWriter().print(insertSB); } } catch (Exception e) { e.printStackTrace(); try { da.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } StringBuffer sb = new StringBuffer(); sb.append("<script>"); sb.append("alert(\"提交失败!\");"); sb.append("history.go(-1);"); sb.append("</script>"); try { response.getWriter().print(sb); } catch (IOException e1) { e1.printStackTrace(); } } finally { try { da.setAutoCommit(true); da.close(); } catch (SQLException e) { e.printStackTrace(); } } }