⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 template.java

📁 使用工具jublider开发的一个聊天室实现基本功能,
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
      StringBuffer currPlaceHolder = new StringBuffer(),
                   currPart = new StringBuffer();

      while (tok.hasMoreElements()) {
          String curr = tok.nextToken();
          if (curr.equals("<")) {
              if (lt)
                  currPart.append("<");
              else
                  lt=true;
          } else if (lt && curr.equals("%")) {
              placeholder=true;
              currPlaceHolder.append("#");
              while (placeholder) {
                  curr=tok.nextToken();
                  if (curr.equals("%")) {
                      curr = tok.nextToken();
                      if (curr.equals(">")) {
                          placeholder=false;
                          lt=false;
                      } else {
                          currPlaceHolder.append("%");
                          currPlaceHolder.append(curr);
                      }
                  } else {
                      currPlaceHolder.append(curr.trim());
                  }
              }
              String cplh = currPlaceHolder.toString();
              lt=false;
              currPlaceHolder = new StringBuffer();
              if (cplh.equals("#active_users")) {
                  this.dependsOn = this.dependsOn 
                                   | Template.DEPENDS_ON_USER_COUNT;
              } else if (cplh.equals("#active_user_list")) {
                  this.dependsOn = this.dependsOn
                                   | Template.DEPENDS_ON_GROUP_LIST;
              } else if (cplh.startsWith("#users_in_group")
                         || cplh.equals("#token")) {
                  this.dependsOn = this.dependsOn 
                                   | Template.DEPENDS_ON_SESSION;
              } else if (cplh.equals("#open_groups")) {
                  this.dependsOn = this.dependsOn 
                                   | Template.DEPENDS_ON_GROUP_COUNT;
              } else if (cplh.equals("#selve")) {
                  this.dependsOn = this.dependsOn 
                                   | Template.DEPENDS_ON_SERVER_CONFIG;
              } else if (cplh.startsWith("#config")) {
              	  // any kind of <% #config.XX %> property
              	  this.dependsOn = this.dependsOn 
                               | Template.DEPENDS_ON_SERVER_CONFIG;
              }
              if (cplh.toLowerCase().equals("#version")) {
                  currPart.append(Server.getVersion());
              } else {
                  t.addElement(currPart.toString());
                  t.addElement(cplh);
                  currPart = new StringBuffer();
              }
          } else if (lt) {
              currPart.append("<");
              currPart.append(curr);
              lt = false;
          } else {
              currPart.append(curr);
          }
      }
      if (currPart.length()>0) {
          t.addElement(currPart.toString());
      }
      if (currPlaceHolder.length()>0) {
          t.addElement(currPlaceHolder.toString());
      }
      /*
      String parts[] = raw.split("<%");
      for (int i = 0; i < parts.length; i++) {
         String sub[] = parts[i].split ("%>");
         if (sub.length == 1) {
            t.addElement(sub[0]);
            continue;
         } if (sub.length > 2) {
            StringBuffer tsb = new StringBuffer ("error parsing template ");
            tsb.append (tsName).append ("/").append (tpl.getName ());
            Server.log(this, tsb.toString (), Server.MSG_ERROR, Server.LVL_MAJOR);
            return(null);
         }
         StringBuffer tsb = new StringBuffer ("#").append (sub[0].trim ().toLowerCase ());
         t.addElement(tsb.toString ());
         t.addElement(sub[1]);
      } */
      return((String[]) t.toArray(new String[0]));
   }

    public String generateUserList (IRequest req) {
        String strg = req.getValue("user");
        Group g = null;        
        if (strg==null)
            strg = req.getValue("group");
        else {
            User u = UserManager.mgr.getUserByName(strg);
            if (u==null)
                return "no such user: " + strg;
        }
        MessageState msgState = new MessageState(null);
        if (strg==null) {
            strg = req.getCookie();
            if (strg == null)
                return "no cookie to get a user for";
            User u = UserManager.mgr.getUserByCookie(strg);
            if (u == null)
                return "no user to generate userlist for";
            msgState.sender = u;
            g = u.getGroup();
        }
        if (g==null) {
            g = GroupManager.mgr.getGroup(strg);
        }
        if (g==null)
            return ("unable to determine group");
        msgState.message = generateUserList (msgState, g);
        return MessageRenderer.renderTemplate(msgState, ts.getMessageTemplate("list.users"));
    }

    public String generateUserList (MessageState msgState, Group cg) {
        msgState.sourceGroup=cg;
        msgState.targetGroup=cg;
        return ((AbstractCommand) CommandSet.getCommandSet().getCommand("/wc")).generateUserList(msgState, true, ts);
    }
    
    public String generateUserList () {
        CommandSet cs = CommandSet.getCommandSet();
        MessageState msgState = new MessageState(null);
        msgState.useRenderCache = false;
        UserManager umgr = UserManager.mgr;
        StringBuffer sb = new StringBuffer();
        Group[] grps = GroupManager.mgr.currentGroupList();
        for (int i = 0; i < grps.length; i++) {
            Group g = grps[i];
            if (g.size() < 1 || !g.isValid())
                continue;
            msgState.message = generateUserList(msgState, g); 
            sb.append (MessageRenderer.renderTemplate(msgState, ts.getMessageTemplate("list.users")));
        }
        return sb.toString();
    }

   /* INTERFACE RELOADABLE */
   public long lastModified () {
      return lastModified;
   }

   public void changed () {
      try {
         parts = parseFile(template);
         Server.log (this, "reload: reloaded template", Server.MSG_STATE, Server.LVL_MINOR);
         lastModified = template.lastModified ();
      } catch (Exception e) {
         Server.debug (this, "reload: ", e, Server.MSG_ERROR, Server.LVL_MAJOR);
      }
   }

	public void removed () {
		ts.removeTemplate(this);
		tplPresent=false;
	}

	public boolean filePresent () {
		return tplPresent;
	}
	public void created() {
		changed();
		ts.addTemplate(this);
		tplPresent=true;
	}

   public File getFile () {
      return template;
   }

    public String getEtag() {
        return eTag;
    }
    
    private volatile String strgVal;
    public String toString() {
        if (strgVal==null) {
            StringBuffer sb = new StringBuffer ("[Template: ");
            sb.append (tsName);
            sb.append ("/");
            sb.append (name);
            sb.append ("]");
            strgVal = sb.toString();
        }
        return strgVal;
    }

    /**
     * @return
     */
    public boolean notCacheable() {
        if ((dependsOn & (DEPENDS_ON_SESSION 
                        | DEPENDS_ON_GROUP_LIST)) != 0)
            return true;
        return false;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -