FORUM PLAN UPDATE
Date revision: This forum will remain open to new posts and responses until December 1, 2018. (After that date, you will still be able to view and search the forum.) Also, we're taking a second look at the best place to host future conversation. For now, keep using this forum, and stay tuned for more news.


May 17, 2017, 3:06 PM
82 Posts

Here's a sample to get you started ...

  • Category: Domino Designer
  • Platform: All Platforms
  • Release: 9.0.1
  • Role: Developer
  • Tags: agent,java,json
  • Replies: 2
import lotus.domino.*;
import java.net.URLEncoder;
import java.io.UnsupportedEncodingException;
import org.json.JSONObject;
import org.json.JSONException;

import java.util.*;


public class JavaAgent extends AgentBase {
        JSONObject MESSAGE_SELECTION = null;
        String jsonName="";
        public void NotesMain() {
                try {
                        Session session = getSession();
                        AgentContext agentContext = session.getAgentContext();
                        Document doc = agentContext.getDocumentContext();  //incoming mail message
                        //Document doc = agentContext.getUnprocessedDocuments().getFirstDocument();  //used for debug
                        removeItems(doc);
                        if (doc.getItemValueString("Subject").equals("")){
                                doc.replaceItemValue("Subject", "**NO DEFECT TITLE**");
                        }
                        doc.replaceItemValue("Form", "Defect");
                        doc.replaceItemValue("Status",        "Needs Triage");
                        Vector defectID = session.evaluate("@Unique");
                        doc.replaceItemValue("DefectID",defectID.toString().replaceAll("[^A-Za-z0-9 ]", ""));
                        Item readbody = doc.getFirstItem("Body");
                        String bodyText = scrubText(readbody.getText().replaceAll("[\n]",""));
                        String jsonText = "";
                        int  defInfoPosStart, defInfoPosEnd ;
                        defInfoPosStart = bodyText.indexOf ("DefectInfoStart") + 15 ;
                        defInfoPosEnd = bodyText.indexOf ("DefectInfoEnd");        
                        jsonText = bodyText.substring (defInfoPosStart, defInfoPosEnd) ;

                        try{
                                MESSAGE_SELECTION = new JSONObject(jsonText);
                                Iterator props = MESSAGE_SELECTION.keys();
                                while (props.hasNext()){
                                        jsonName = (String)props.next();
                                        doc.replaceItemValue(jsonName, MESSAGE_SELECTION.getString(jsonName));
                                }
                                doc.computeWithForm(false,false);
                                doc.save();
                        }catch(JSONException Je){
                                Je.printStackTrace();
                        }

                } catch(Exception e) {
                        e.printStackTrace();
                }
        }

        /*
         * remove all ascii 13 char from the json string that will be passed to JSONObject constructor
         */
        public String scrubText(String jsonText){
                String returnText="";
                for (int count=0; count < jsonText.length(); count++)
                {
                        if ((int)jsonText.charAt(count)!=13){
                                returnText += jsonText.charAt(count);
                        }
                }
                return returnText;
        }

        /*
         * Strip all unnecessary items from the Note
         */
        public void removeItems(Document mailDoc){
                String[] keeperItems = {"From","INetFrom","Body","Subject","$FILE"};
                try{
                        Vector items = mailDoc.getItems();
                        for (int i=0; i<items.size(); i++) {
                                Item item = (Item)items.elementAt(i);
                                if (Arrays.asList(keeperItems).indexOf(item.getName())<0){
                                        item.remove();
                                }
                        }
                } catch(Exception e) {
                        e.printStackTrace();
                }
        }
       
        public String encodeURL(String url) {
                try {
                        return URLEncoder.encode(url, "UTF-8");
                } catch (UnsupportedEncodingException e) {
                        e.printStackTrace();
                }
                        return url;
                }

       
}

FORUM PLAN UPDATE
Date revision: This forum will remain open to new posts and responses until December 1, 2018. (After that date, you will still be able to view and search the forum.) Also, we're taking a second look at the best place to host future conversation. For now, keep using this forum, and stay tuned for more news.