private PortletApplicationDefinition parsePortlets( String modulePath, PortalDeployDefinition define, String moduleName) throws FileNotFoundException, IOException { FileInputStream input = null; try { File f = new File(modulePath + "/portalspec/portlet.xml"); if (!f.exists()) return null; input = new FileInputStream(f); PortletApplicationDefinition pad = (PortletApplicationDefinition) PortalServiceUtil.getPortletAppDescriptorService().read(moduleName, input); List<PortletDefinition> pList = pad.getPortlets(); Iterator<PortletDefinition> pit = pList.iterator(); while (pit.hasNext()) { PortletDefinition p = pit.next(); ContainerRuntimeOption cr = new ContainerRuntimeOption(); cr.setName(ContainerRuntimeOption.MODULE); cr.addValue(moduleName); p.getContainerRuntimeOptions().add(cr); } return pad; } finally { if (input != null) try { input.close(); } catch (IOException e) { LfwLogger.error(e.getMessage(), e); } } }
/** * 初始化用户信息 * * @param sbean * @throws PortalServiceException */ public void initUser(LfwSessionBean sbean) throws PortalServiceException { String groupId = sbean.getPk_unit(); String userId = sbean.getPk_user(); Integer userType = ((PtSessionBean) sbean).getUserType(); IPtPortalPageQryService ppq = NCLocator.getInstance().lookup(IPtPortalPageQryService.class); PtPageVO[] currPages = new PtPageVO[0]; if (userType.equals(IUserVO.USERTYPE_GROUP)) { currPages = ppq.getGroupsPage(groupId); /** 过滤掉非用户类型Page */ currPages = PortalPageDataWrap.filterPagesByUserType(currPages, userType); } else { currPages = PortalServiceUtil.getPageQryService().getPageByLevel(userType); } PtPageVO[] userPages = ppq.getUserPages(userId); /** 对比是否有新增加 */ PtPageVO[] newPages = PortalPageDataWrap.checkNews(userPages, currPages); /** 生成缓存对象 */ List<Page> userPageList = PortalPageDataWrap.praseUserPages(userPages); /** 有页面 */ if (newPages != null && newPages.length > 0) { /** 追加到缓存对象 */ userPageList.addAll(PortalPageDataWrap.praseUserPages(newPages)); /** 追加到数据库中 */ IPtPortalPageService pageService = NCLocator.getInstance().lookup(IPtPortalPageService.class); pageService.addUserNewPages(userId, groupId, newPages); } /** 转换为用户缓存 */ Map<String, Page> userPagesCache = PortalPageDataWrap.praseUserPages(userPageList.toArray(new Page[0])); PortalCacheManager.getUserPageCache().clear(); PortalCacheManager.getUserPageCache().putAll(userPagesCache); }
@Override public PortalDeployDefinition parseModule(String modulePath) { LfwLogger.info("Parsing modules in directory '" + modulePath + "'"); try { PortalDeployDefinition define = new PortalDeployDefinition(); PortalModule pm = parsePortalModule(modulePath); String moduleName = pm.getModule(); define.setModule(moduleName); define.setPortalModule(pm); /*Portal*/ PortletApplicationDefinition pad = parsePortlets(modulePath, define, moduleName); define.setPortletDefineModule(pad); /* 加入Portal页面 */ Page[] pages = PmlUtil.getPages(modulePath + "/portalspec/pml"); if (pages != null) { define.setPages(pages); } /*Portlet分组信息*/ Reader displayins = null; try { File f = new File(modulePath + "/portalspec/display.xml"); if (f.exists()) { String xmlText = FileUtils.readFileToString(f, "UTF-8"); displayins = new StringReader(xmlText); Display display = XmlUtil.readDisplay(displayins); if (display != null) define.setDisplay(display); } } catch (JAXBException e) { LfwLogger.error(e.getMessage(), e); } catch (FileNotFoundException e) { LfwLogger.error(e.getMessage(), e); } finally { IOUtils.closeQuietly(displayins); } /*Portal插件*/ PtPlugin plugin = PluginDefParser.reader(modulePath + "/portalspec/plugin.xml"); define.setPlugin(plugin); // /*skin信息*/ // PtSkinVo[] ptSkinVo = parseSkinVo(modulePath,moduleName); // define.setPtSkinVo(ptSkinVo); /*将模块的实际路径放入缓存中*/ IPtPortletRegistryService portletReg = PortalServiceUtil.getPortletRegistryService(); File moduleDir = new File(modulePath); String moduleFolder = moduleDir.getName(); portletReg.addModuleFolder(moduleName, moduleFolder); return define; } catch (Throwable e) { LfwLogger.error("error occurred while parsing module:" + modulePath, e); return null; } }
@Action public void doPost() throws ServletException, IOException, PortalServiceException { response.setCharacterEncoding("utf-8"); response.setContentType("text/html"); PrintWriter out = response.getWriter(); String pk_group = request.getParameter("pk_group"); PtPageVO[] pages = new PtPageVO[] {}; pages = PortalServiceUtil.getPageQryService().getPageByGroup(pk_group); Document doc = buildXml(pages); XMLUtil.printDOMTree(out, doc, 0, "UTF-8"); out.println(); }
@Override public void onDataLoad(DataLoadEvent se) { WebSession ses = getGlobalContext().getWebSession(); String cmd = (String) ses.getAttribute("cmd"); String pk_message = (String) ses.getAttribute("pk_message"); LfwWidget widget = getGlobalContext().getPageMeta().getWidget("main"); Dataset ds = widget.getViewModels().getDataset("msgds"); /** 初始化数据集 */ ds.setCurrentKey(Dataset.MASTER_KEY); Row row = ds.getEmptyRow(); ds.addRow(row); ds.setSelectedIndex(ds.getRowIndex(row)); ds.setEnabled(true); /** 撰写 */ if (cmd.equals("compose")) { return; } PtMessageVO vo = null; try { vo = PortalServiceUtil.getMessageQryService().getMessageByPK(pk_message); } catch (PortalServiceException e) { LfwLogger.error(e.getMessage(), e); } if (vo == null || vo.getPk_message() == null) return; /** 转发 */ if (cmd.equals("fwd")) { row.setString(ds.nameToIndex("title"), "转发:" + vo.getTitle()); row.setString(ds.nameToIndex("content"), vo.doGetContent()); } /** 回复 */ if (cmd.equals("reply")) { if (!MCConstant.PERSON_MESSAGE.equals(vo.getSystemcode())) throw new LfwRuntimeException("无法回复非私人信息!"); row.setString(ds.nameToIndex("title"), "回复:" + vo.getTitle()); row.setString(ds.nameToIndex("pk_user"), vo.getPk_sender()); row.setString(ds.nameToIndex("username"), vo.getSendername()); } }
/** * 初始化相关环境信息 * * @throws BusinessException */ private void initCtx() throws BusinessException { ServletContext ctx = getCtx(); // Initialize // WebApplicationContext springContext = // WebApplicationContextUtils.getWebApplicationContext(ctx); // SpringUtil.setContext(springContext); // PortalContextImpl portalCtx = new PortalContextImpl(); // ctx.setAttribute(WebKeys.PORTALCTX, portalCtx); // 设置产品多语资源目录 ctx.setAttribute(WebConstant.MULTILANGE_PRODUCT_CODE, "portal"); String domain = PortalServiceUtil.getConfigRegistryService().get(APP_DOMAIN); if (domain != null && !domain.trim().equals("")) ctx.setAttribute(WebConstant.DOMAIN_KEY, domain); // 设置system.properties中配置的服务地址地址,ca登陆等需要 gd 2007-11-29 // // LfwRuntimeEnvironment.setServerAddr(PortalServiceUtil.getConfigRegistryService().get(SERVER_ADDR)); }