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;
                }

       
}