EzDevInfo.com

lotus

A complete web framework for Ruby Lotus - A complete web framework for Ruby lotus, a complete web framework for ruby

Best practices for version control for Lotus Notes/Domino development

Please share how you do version control for Lotus Notes/Domino development.

I want to put in our SVN repository all the scripts, views, custom forms, script libraries, etc.

Semi-automated methods are accepted as well (i.e. if I find a way to get all the event scripts for a form in one file, and to be able to place it back in Notes Designer as a whole file).


Source: (StackOverflow)

Call to getEmbeddedObjects(); (Domino Server API) returns wrong results

The Domino server API getEmbeddedObjects(); returns the wrong result (zero) when a mail containing an attachment (as embedded object) is sent from the script. Though an attachment is sent as an EmbeddedOBject, getEmbeddedObjects(); returns ZERO. The mail type is NOT MIME.

This is a Java application. Is there is any workaround for this problem?

I take the body from the document. If the body is of richtextitem, I call the getEmbeddedObjects() which returns zero though an attachment is present as embedded object.


Source: (StackOverflow)

Advertisements

Flying Saucer in Lotus Notes

I was trying to convert simple XHTML-files to PDF, and used Flying Saucer and iText to do so. It worked without problems in Java, however, when I tried to make a Lotus Notes agent with the same code, I got an exception I am unsure how to deal with.

The code:

import lotus.domino.*;
import java.io.*;
import com.lowagie.text.DocumentException;
import org.xhtmlrenderer.pdf.ITextRenderer; 
import org.xhtmlrenderer.util.XRLog;
import java.util.*;

public class JavaAgent extends AgentBase {

    public void NotesMain() {

      try {
        Session session = getSession();
        AgentContext agentContext = session.getAgentContext();
        String received = agentContext.getDocumentContext().
             getItemValueString("Query_String");
        String[] split;
        split = received.split("&");
        String url = split[1];
        split = url.split("/");
        String outputFile = split[split.length-1];
        String direc = session.getEnvironmentString("Directory", true);
        outputFile = direc + "\\" + outputFile + ".pdf"; 
        OutputStream os = new FileOutputStream(outputFile);
        ITextRenderer renderer = new ITextRenderer();
        renderer.setDocument(url);
        renderer.layout();
        renderer.createPDF(os);
        os.close();
        System.exit(0);

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

This yields the following:

09-05-2011 13:33:29 HTTP JVM: Could not initialize configuration for Flying Saucer library. Message is: Can't find resource for bundle java.util.PropertyResourceBundle, key access_properties_not_allowed

09-05-2011 13:33:29 HTTP JVM: java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key access_properties_not_allowed

09-05-2011 13:33:29 HTTP JVM: at java.util.MissingResourceException.(MissingResourceException.java:50)

09-05-2011 13:33:29 HTTP JVM: at java.util.ResourceBundle.getObject(ResourceBundle.java:400)

09-05-2011 13:33:29 HTTP JVM: at java.util.ResourceBundle.getString(ResourceBundle.java:421)

09-05-2011 13:33:29 HTTP JVM: at lotus.notes.JavaString.getString(Unknown Source)

09-05-2011 13:33:29 HTTP JVM: at lotus.notes.AgentSecurityManager.checkPropertiesAccess(Unknown Source)

09-05-2011 13:33:30 HTTP JVM: at java.lang.System.getProperties(System.java:323)

09-05-2011 13:33:30 HTTP JVM: at org.xhtmlrenderer.util.Configuration.loadSystemProperties(Configuration.java:419)

09-05-2011 13:33:30 HTTP JVM: at org.xhtmlrenderer.util.Configuration.(Configuration.java:147)

09-05-2011 13:33:30 HTTP JVM: at org.xhtmlrenderer.util.Configuration.instance(Configuration.java:742)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.util.Configuration.valueFor(Configuration.java:463)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.util.Configuration.isTrue(Configuration.java:709)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.util.XRLog.init(XRLog.java:250)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.util.XRLog.log(XRLog.java:203)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.util.XRLog.render(XRLog.java:194)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.util.XRLog.render(XRLog.java:190)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.layout.SharedContext.(SharedContext.java:107)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.pdf.ITextRenderer.(ITextRenderer.java:111)

09-05-2011 13:33:31 HTTP JVM: at org.xhtmlrenderer.pdf.ITextRenderer.(ITextRenderer.java:102)

09-05-2011 13:33:31 HTTP JVM: at JavaAgent.NotesMain(Unknown Source)

09-05-2011 13:33:31 HTTP JVM: at lotus.domino.AgentBase.runNotes(Unknown Source)

09-05-2011 13:33:31 HTTP JVM: at lotus.domino.NotesThread.run(Unknown Source)

The offending line is

ITextRenderer renderer = new ITextRenderer();

Googling "access_properties_not_allowed" gives literally nothing.


Source: (StackOverflow)

What's wrong with Lotus Notes / Lotus Domino

I have a client who is using Lotus Domino for their web application/server platform. The client has two "web developers" who are more comfortable with Lotus Domino than more mainstream tools and technologies and are not enthusiastic about making a switch. I have been asked to provide an assessment of why it may be prudent to migrate to a different web application platform.

I would be particularly interested in understanding deficiencies related to the platform as I have very little knowledge of Domino but am very familiar with other platforms.

In addition to the fact that Apache has over 70% of web server market, IIS over 21%, and Lotus almost 0%, what other reasons would you give for moving away from this platform?

Thank you for your help!


Source: (StackOverflow)

How to make automated notification using Lotus Script

I know that using Lotus Script you can make an notification (auto email), ONLY If you have some control that will be triggered manually (like a button etc etc..).

What I want is to trigger the notification automatically (with out human intervention). Let's say for example I have a lotus document that have a date field (value is TODAY), after 15 days I want the Lotus app to send a notification that the document is already 15 days old.

Thanks for any response!


Source: (StackOverflow)

Mercurial Setup for Lotus Domino Designer 8.5.3

Working on getting the Mercurial Source Control installed and working with Lotus Domino Designer 8.5.3.

Been using Declan's powerpoint from Lotusphere 2012 "AD102: Source Control For The IBM Lotus Domino Developer" as a guide.

What I've done so far is:

  1. Install 8.5.3 Client and Designer via the CI1LPEN.exe install file
  2. Enabled Eclipse plug-in install from designer preferences
  3. Did a File, Application, Install of 1.6.0 MercurialEclipse and 1.4.3 Mercurial Binaries from http://cbes.javaforge.com/update
  4. Verfied they are installed by going to File, Application, Application Management and seeing them listed
  5. Closed Domino designer and client. Restarted.
  6. When I open an application in Designer and alternate click on it's title, the "Team Development" option is not listed. So not able to "Set Up Source Control for this Application.."

Are there any other prerequesites that need to be installed for this to work, or should I should be selecting different install packages?


Source: (StackOverflow)

Upgrading Lotus Domino from 8.5.2 to 8.5.3, custom template broken

I have a custom template that is deployed on Domino servers and used by customers for their mail boxes. The hierarchy is like this:

StdRMail85
  |
Custom Template
  |
User Mailfile

This template has worked since version Lotus Notes/Domino 6.5 through 8.5.2, with some modifications as updates were made to the Lotus products. I have upgraded my Domino server and Notes client to 8.5.3 and the hierarchy for the template has been broken.

When loading the initial template form from the calendar view and following through the debugger in pre-8.5.3 the uidoc.Document.ParentDatabase has a file path of

mail\mailfile.nsf.  

That mail file has a master that is the template that I've built. My template inherits from the StdRMail85. In 8.5.3 the uidoc.Document.ParentDatabase filepath is

C:\Documents and Settings\Administrator\Local Settings\Temp\notesA3700A\~editclp.ncf

I can add my template as a master to the mail file and refresh and or replace the design fine from the workspace. The integration point is a button in the calendar view. When that button is selected I load a saved form that contains user configuration data. The UIDOC for this form is the one that has a document.parentDatabase pointing to the editclp file and not the mail file in 8.5.3.

I have also noticed that after refreshing the template something seems to have a lock on the template as I cannot refresh it again or view the properties of it.

I applied the fix pack upgrade but, it was to no avail. Nothing has changed code wise or configuration wise in the template from 8.5.2 so I'm kind of at a loss. Any ideas?

Thanks in advance


Source: (StackOverflow)

Insert images / files inside Notes document using lotus.domino

I am trying to insert some inline image and inline attachment inside Notes document, using Rich Text format by lotus.domino package Java API, and send it.

The code of inserting is as below.

// Insertion by RichTextItem.embedObject()

RichTextItem rti = (RichTextItem) doc.getFirstItem("Body");
RichTextNavigator rtnav;
rtnav = rti.createNavigator();
rtnav.findFirstElement( .../*Somewhere inside document*/ );
rti.beginInsert(rtnav);
rti.embedObject(EmbeddedObject.EMBED_ATTACHMENT,null, "C:\\TEMP\\abc.jpg", "InlineImageOrAttachment"); // insert file which is jpg/png/pdf/doc...etc
rti.endInsert();

Right now I have got: enter image description here

What I want to have is: enter image description here

Thanks in advance.


Source: (StackOverflow)

Extract Lotus Notes Document's complete ACL from Java

I'm trying to find a way to save the complete user list access privileges for a specific lotus notes document.

I know I can get database-level ACL's from catalog.nsf, but not document-level access. Also the Author field of the document -I believe- won't list read-only access users.

Does anyone know how to obtain the complete ACL of every user for a specific document?

Any help is appreciated, thanks!

Edit: spelling.


Source: (StackOverflow)

Using folders to keep images neat and organized

So I'm used to this kind of sorting my source files, but I can't seem to be able to find a solution to this problem in Xpages. It would be great if I can store my images like for example: UI images in "ui", layout images in "layout" and so on... Is this possible? Or maybe some kind of workaround?

Thank you!


Source: (StackOverflow)

Link to a Lotus Notes email from a web app

I have a web app that can bring up a series of cases. Sometimes, a user may want to connect a case with a particular email in Lotus Notes. I use the term 'connect' loosely -- I'm not sure exactly what I want because I don't know all of my options, but I'm looking for some way to say "this case right here goes with that email over there."

I need a way to create that relationship, even if it's as simple as providing a hyperlink in the web app which opens the email in Lotus Notes. Is it possible to create such a link? How about if I wanted the web app to be able to pull up the content (message body, sender, recipients) of that email?


Source: (StackOverflow)

Using Java API to read Lotus Notes documents

I am using the Lotus Notes 6.5.1 Java API to read an .nsf file. Every document in the .nsf file has multiple document history. While traversing through the documents in the .nsf file using the Lotus Notes Java API I am getting all the document versions as separate documents.

How do I ensure only the latest version of each document is retrieved by Lotus Notes? Is there a way to uniquely identify a document and all its version history as its children?


Source: (StackOverflow)

API to integrate with Domino

I am a relatively newbie to Lotus/Domino world and have been tasked with the following Domino task.

Access user's Domino mailbox (from a middleware server) and delete certain malicious emails from the same.

Additional Background - There is a external security tool/process that analyzes all incoming email and can flag the email as malicious. In the event it is flagged as malicious then I want to delete this email from the respective user's inbox.

The Domino server deployed in my environment is - Lotus/Domino 9

My solution would be deployed on its own middleware server (Linux based) and will receive incoming notifications as to what emails need to be deleted.

I want to preferably implement this functionality using Java

I researched and found the potential options for me for accessing the user's inbox on Domino server

  1. I saw that there is a C/C++ API toolkit for Domino - https://www.ibm.com/developerworks/lotus/documentation/capi/. The C API though looks quite complicated to me on first glance. Also I would need to install the Notes client (on my middleware server) so that I could invoke the C API remotely?
  2. Is there a Java API that I could use to connect/access Domino? I found a couple of relevant resources - http://www-01.ibm.com/support/knowledgecenter/SSVRGU_9.0.1/com.ibm.designer.domino.main.doc/H_10_NOTES_CLASSES_ATOZ_JAVA.html and www-10.lotus.com/ldd/ddwiki.nsf/xpViewCategories.xsp?lookupName=API%20Documentation which seems to indicate there is some Java/REST API interface however I am not sure if I can use this to access inbox/mailbox data. It seems to indicate "Calendar" data but nothing about email/mailbox data as such.
  3. I came across the OpenNTF Domino API project (www.openntf.org/main.nsf/project.xsp?r=project/OpenNTF%20Domino%20API) while researching and that seems to have a Java API. Should I be using this?

What is the best way to access Domino from an external server standpoint? Am I stuck with the "C/C++" API or is there a relatively (easier to understand and use) REST/Java API that I could leverage? Also will I have to have the Notes client installed on my middleware server so that I can invoke the API (C/C++ or Java)?

Thanks,


Source: (StackOverflow)

XPages - error copying extension library controls

I have copied some code from one custom control to a new custom control. The code I copied contains some xe extension library and now all of these xe components show error messages saying that prefix xe is not bound (The prefix "xe" for element "xe:djContentPane" is not bound). Is there any way of solving this problem?


Source: (StackOverflow)

send appointment invitation to lotus notes 8.5 clients via c#

i am using Interop.Domino.dll and able to send mail via c# code to lotus notes 8.5 users. now i want to send appointment invations to users via c# code.

here is my code.

   oNotesDocument.ReplaceItemValue("Form", "Appointment");

                oNotesDocument.ReplaceItemValue("AppointmentType", "3");  //  meeting



                oNotesDocument.ReplaceItemValue("Subject", "Deneme Toplantı");
                oNotesDocument.ReplaceItemValue("CALENDARDATETIME", StartDate);
                oNotesDocument.ReplaceItemValue("StartDateTime", StartDate);
                oNotesDocument.ReplaceItemValue("EndDateTime", EndDate);
                oNotesDocument.ReplaceItemValue("StartDate", StartDate);

                //oNotesDocument.ReplaceItemValue("MeetingType", "1");
                oNotesDocument.ReplaceItemValue("Required", "xx\\xx.xx");


                oNotesDocument.ReplaceItemValue("SendTo", "xx@xx.com");
                oNotesDocument.ReplaceItemValue("From", "xx@xx.com");
                oNotesDocument.ReplaceItemValue("Principal", "pr.incipal");
                oNotesDocument.ReplaceItemValue("Chair", "erdem.tomus"); 
                oNotesDocument.ReplaceItemValue("Location", "location test");


                oNotesDocument.ReplaceItemValue("Body", an invitation");
                oNotesDocument.ComputeWithForm(true, false);

                oItemValue = oNotesDocument.GetItemValue("SendTo");
                //Send the email
                oNotesDocument.Send(false, ref oItemValue);

i am able to send invitation but i wasn'T able to fill the attendees on who part of a lotus notes appointment form. will appreciate help on this. Infact i need ReplaceItemValue on who property but it didn't work like that. Thanks


Source: (StackOverflow)