package guang.crawler.controller.webservice; import guang.crawler.centerConfig.CenterConfig; import guang.crawler.centerConfig.siteManagers.SiteManagerInfo; import guang.crawler.centerConfig.sitesConfig.SiteInfo; import guang.crawler.commons.service.SiteManagerService; import guang.crawler.commons.service.SiteStatus; import guang.crawler.commons.service.WebGatherNodeBean; import guang.crawler.controller.ControllerWorkThread; import javax.jws.WebService; /** * 该类实现了对站点管理器进行管理的服务,详情查看接口了解内容. * * @author sun * */ @WebService(targetNamespace = "http://guang.crawler.controller.webservice/", portName = "SiteManagerService", serviceName = "SiteManagerService", endpointInterface = "guang.crawler.commons.service.SiteManagerService") public class SiteManagerServiceImp implements SiteManagerService { @Override public boolean add(final WebGatherNodeBean site) { try { SiteInfo siteInfo = CenterConfig.me() .getSitesConfigInfo() .getSitesInfo() .registSite(site.getId() .toString()); if (siteInfo != null) { siteInfo.setWebGatherNodeInfo(site, false); siteInfo.update(); ControllerWorkThread.me() .forceReschedue(); return true; } else { return false; } } catch (Exception e) { return false; } } @Override public boolean delete(final Long siteID) { try { SiteInfo siteInfo = CenterConfig.me() .getSitesConfigInfo() .getSitesInfo() .getSite(siteID.toString()); if (siteInfo == null) { return true; } // 先将其设置为不可用的状态 siteInfo.setEnabled(false); // 然后解除其关联关系 if (siteInfo.isHandled()) { SiteManagerInfo siteManagerInfo = CenterConfig.me() .getSiteManagersConfigInfo() .getOnlineSiteManagers() .getSiteManagerInfo(siteInfo.getSiteManagerId()); if (siteManagerInfo.getSiteToHandle() .equals(siteInfo.getSiteId())) { siteManagerInfo.setDispatched(false, false); siteManagerInfo.setSiteToHandle("", false); siteManagerInfo.update(); } } // 最后,删除该节点 siteInfo.delete(null); // 重新调度 ControllerWorkThread.me() .forceReschedue(); return true; } catch (Exception e) { return false; } } @Override public boolean disable(final Long siteID) { try { SiteInfo siteInfo = CenterConfig.me() .getSitesConfigInfo() .getSitesInfo() .getSite(siteID.toString()); if (siteInfo == null) { return false; } siteInfo.setEnabled(false); ControllerWorkThread.me() .forceReschedue(); return true; } catch (Exception e) { return false; } } @Override public boolean enable(final Long siteID) { try { SiteInfo siteInfo = CenterConfig.me() .getSitesConfigInfo() .getSitesInfo() .getSite(siteID.toString()); if (siteInfo == null) { return false; } siteInfo.setFinished(false, false); siteInfo.setEnabled(true); ControllerWorkThread.me() .forceReschedue(); return true; } catch (Exception e) { return false; } } @Override public SiteStatus status(final Long siteID) { try { SiteInfo siteInfo = CenterConfig.me() .getSitesConfigInfo() .getSitesInfo() .getSite(siteID.toString()); if (siteInfo == null) { return SiteStatus.notexist; } else if (siteInfo.isEnabled() && !siteInfo.isHandled()) { return SiteStatus.enabled; } else if (siteInfo.isEnabled() && siteInfo.isHandled()) { return SiteStatus.running; } else { return SiteStatus.disabled; } } catch (Exception e) { return SiteStatus.error; } } @Override public boolean update(final WebGatherNodeBean site) { try { SiteInfo siteInfo = CenterConfig.me() .getSitesConfigInfo() .getSitesInfo() .getSite(site.getId() .toString()); if (siteInfo == null) { return false; } siteInfo.setWebGatherNodeInfo(site, false); siteInfo.update(); return true; } catch (Exception e) { return false; } } }