summaryrefslogtreecommitdiffstats
path: root/pki/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java
diff options
context:
space:
mode:
Diffstat (limited to 'pki/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java')
-rw-r--r--pki/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java250
1 files changed, 0 insertions, 250 deletions
diff --git a/pki/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java b/pki/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java
deleted file mode 100644
index a057484cf..000000000
--- a/pki/base/common/src/com/netscape/cmscore/notification/EmailFormProcessor.java
+++ /dev/null
@@ -1,250 +0,0 @@
-// --- BEGIN COPYRIGHT BLOCK ---
-// This program is free software; you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation; version 2 of the License.
-//
-// This program is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License along
-// with this program; if not, write to the Free Software Foundation, Inc.,
-// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-//
-// (C) 2007 Red Hat, Inc.
-// All rights reserved.
-// --- END COPYRIGHT BLOCK ---
-package com.netscape.cmscore.notification;
-
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.StringTokenizer;
-import java.util.Vector;
-
-import com.netscape.certsrv.apps.CMS;
-import com.netscape.certsrv.logging.ILogger;
-import com.netscape.certsrv.notification.IEmailFormProcessor;
-
-/**
- * formulates the final email. Escape character '\' is understood.
- * '$' is used preceeding a token name. A token name should not be a
- * substring of any other token name
- * <p>
- *
- * @author cfu
- * @version $Revision$, $Date$
- */
-public class EmailFormProcessor implements IEmailFormProcessor {
-
- protected final static String TOK_PREFIX = "$";
- protected final static String TOK_ESC = "\\";
- protected final static char TOK_END = ' ';
- protected final static String TOK_VALUE_UNKNOWN = "VALUE UNKNOWN";
- protected final static String TOK_TOKEN_UNKNOWN = "UNKNOWN TOKEN:";
- protected ILogger mLogger = CMS.getLogger();
-
- // stores all the available token keys; added so that we can
- // parse strings to replace unresolvable token keys and replace
- // them by the words "VALUE UNKNOWN"
- protected static String[] token_keys = {
- TOKEN_ID,
- TOKEN_SERIAL_NUM,
- TOKEN_HTTP_HOST,
- TOKEN_HTTP_PORT,
- TOKEN_ISSUER_DN,
- TOKEN_SUBJECT_DN,
- TOKEN_REQUESTOR_EMAIL,
- TOKEN_CERT_TYPE,
- TOKEN_REQUEST_TYPE,
- TOKEN_STATUS,
- TOKEN_NOT_AFTER,
- TOKEN_NOT_BEFORE,
- TOKEN_SENDER_EMAIL,
- TOKEN_RECIPIENT_EMAIL,
- TOKEN_SUMMARY_ITEM_LIST,
- TOKEN_SUMMARY_TOTAL_NUM,
- TOKEN_SUMMARY_SUCCESS_NUM,
- TOKEN_SUMMARY_FAILURE_NUM,
- TOKEN_EXECUTION_TIME
- };
-
- // stores the eventual content of the email
- Vector<String> mContent = new Vector<String>();
- Hashtable<String, Object> mTok2vals = null;
-
- public EmailFormProcessor() {
- }
-
- /*
- * takes the form template, parse and replace all $tokens with the
- * right values. It handles escape character '\'
- * @param form The locale specific form template,
- * @param tok2vals a hashtable containing one to one mapping
- * from $tokens used by the admins in the form template to the real
- * values corresponding to the $tokens
- * @return mail content
- */
- public String getEmailContent(String form,
- Hashtable<String, Object> tok2vals) {
- mTok2vals = tok2vals;
-
- if (form == null) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_NOTIFY_TEMPLATE_NULL"));
- return null;
- }
-
- if (mTok2vals == null) {
- log(ILogger.LL_FAILURE, CMS.getLogMessage("CMSCORE_NOTIFY_TOKEN_NULL"));
- return null;
- }
-
- /**
- * first, take care of the escape characters '\'
- */
- StringTokenizer es = new StringTokenizer(form, TOK_ESC);
-
- if (es.hasMoreTokens() && !form.startsWith(TOK_ESC)) {
- dollarProcess(es.nextToken());
- }
-
- // rest of them start with '\'
- while (es.hasMoreTokens()) {
- String t = es.nextToken();
-
- // put first character (escaped char) in mContent
- char c = t.charAt(0);
-
- Character ch = Character.valueOf(c);
-
- mContent.add(ch.toString());
-
- // process the rest for $tokens
- String r = t.substring(1);
-
- dollarProcess(r);
- }
-
- return formContent(mContent);
- }
-
- private void dollarProcess(String sub) {
- StringTokenizer st = new StringTokenizer(sub, TOK_PREFIX);
-
- // if first token is not a $token, put in mContent as is
- if (st.hasMoreTokens() && !sub.startsWith(TOK_PREFIX)) {
- String a = st.nextToken();
-
- mContent.add(a);
- }
-
- /*
- * all of the string tokens below begin with a '$'
- * match it one by one with the mTok2vals table
- */
- while (st.hasMoreTokens()) {
- String t = st.nextToken();
-
- /*
- * We don't know when a token ends. Compare with every
- * token in the table for the first match. Which means, a
- * token name should not be a substring of any token name
- */
- boolean matched = false;
- String tok = null;
-
- for (Enumeration<String> e = mTok2vals.keys(); e.hasMoreElements();) {
- // get key
- tok = (String) e.nextElement();
-
- // compare key with $token
- if (t.startsWith(tok)) {
- // match, put val in mContent
- Object o = mTok2vals.get(tok);
-
- if (o != null) {
- String s = (String) o;
-
- if (!s.equals("")) {
- mContent.add(s);
- } else {
- break;
- }
- } else { // no value, bail out
- break;
- }
-
- // now, put the rest of the non-token string in mContent
- if (t.length() != tok.length()) {
- mContent.add(t.substring(tok.length()));
- }
-
- matched = true;
-
- // replaced! bail out.
- break;
- }
- }
-
- if (!matched) {
- boolean keyFound = false;
-
- // no match, put the token back, as is
- // -- for bug 382162, don't remove the following line, in
- // case John changes his mind for the better
- // mContent.add(TOK_PREFIX+t);
-
- for (int i = 0; i < token_keys.length; i++) {
- if (t.startsWith(token_keys[i])) {
- // match, replace it with the TOK_VALUE_UNKNOWN
- mContent.add(TOK_VALUE_UNKNOWN);
-
- // now, put the rest of the non-token string
- // in mContent
- if (t.length() != token_keys[i].length()) {
- mContent.add(t.substring(token_keys[i].length()));
- }
- keyFound = true;
- break;
- }
- // keep looking
- }
- if (keyFound == false) {
- mContent.add(TOK_TOKEN_UNKNOWN + TOK_PREFIX + t);
- }
- }
- }
- }
-
- /**
- * takes a vector of strings and concatenate them
- */
- public String formContent(Vector<String> vec) {
- String content = null;
-
- Enumeration<String> e = vec.elements();
-
- // initialize content with first element
- if (e.hasMoreElements()) {
- content = e.nextElement();
- }
-
- while (e.hasMoreElements()) {
- String v = e.nextElement();
-
- content += v;
- }
-
- return content;
- }
-
- /**
- * logs an entry in the log file.
- */
- public void log(int level, String msg) {
- if (mLogger == null)
- return;
- mLogger.log(ILogger.EV_SYSTEM, null, ILogger.S_OTHER,
- level, "EmailFormProcessor: " + msg);
- }
-}