Hallo,
kann jemand dieses kurze C Programm vielleicht in ein LotusScript Progrämmchen/
Agenten übersetzen?
Hintergrund: Sync-Problem mit einem Sony Ericsson wahrscheinlich auf Grund
defekter Kalendereinträge ... Code und Idee ist aus Notes.net.
Workflow:
-> Meetings-Fodler druchlaufen
-> Überprüfen auf fehlenden oder zero-sized Body
-> Diesen dann reparieren und einen Nootzitext einfügen (FIXSync)
-> während des Laufen Treffer anzeigen
Leider habe ich keinen C-Compiler :-(
Vielen Dank im Voraus!
#include <stdlib.h>
#include <stdio.h>
#include <lncppapi.h>
void main( int argc, char *argv[] )
{
LNNotesSession session; // create session object on stack
LNDatabase db; // Create LNDatabase object
LNViewFolder view; // Create LNViewFolder object
LNVFEntry entry; // Working entry
char *call= "None"; // Current call
int count;
int c;
int fix = 0;
if (argc == 2 && !strcmp(argv[1], "-fix"))
fix = 1;
LNSetThrowAllErrors(TRUE);
try
{
call = "Init";
session.Init();
call = "GetDatabase";
session.GetDatabase("c:\\Lotus\\Notes\\Data\\<your database here>.nsf", &db);
call = "Database Open";
db.Open();
call = "GetViewFolder";
db.GetViewFolder("Meetings", &view);
call = "View Open";
view.Open();
call = "View GetEntryCount";
count = view.GetEntryCount();
if (count != 0)
{
call = "GotoFirst";
view.GotoFirst(&entry);
for (c = 0; c < count; ++c)
{
LNDocument doc;
LNText text;
call = "Entry GetDocument";
entry.GetDocument(&doc);
call = "Document Open";
doc.Open();
call = "Document HasItem";
if (!doc.HasItem("Body") || doc.GetItemType("Body") != LNITEMTYPE_RICHTEXT)
{
LNString str;
call = "Document GetItem Subject";
doc.GetItem("Subject", &text);
call = "Text GetText";
text.GetText(&str);
printf("Found missing body item %d \"%s\"", c, (const char *)str);
if (fix)
{
LNRichText rtext;
call = "rtext SetValue";
rtext.SetValue("FIXSYNC1");
call = "CreateItem";
doc.CreateItem("Body", rtext, LNITEMFLAGS_AUTO_SUMMARY, LNITEMOPTION_DELETE_APPEND);
printf(" FIXED");
}
printf("\n");
}
else if (doc.HasItem("Body") && doc.GetItemType("Body") == LNITEMTYPE_RICHTEXT)
{
LNRichText rtext;
doc.GetItem("Body", &rtext);
if (rtext.GetValueSize() == 0)
{
LNString str;
call = "Document GetItem Subject";
doc.GetItem("Subject", &text);
call = "Text GetText";
text.GetText(&str);
printf("Found empty body item %d \"%s\"", c, (const char *)str);
if (fix)
{
rtext.SetValue("FIXSYNC2");
printf(" FIXED");
}
printf("\n");
}
}
if (fix)
{
call = "Document Save";
doc.Save();
}
call = "Document close";
doc.Close();
call = "View GotoNext";
view.GotoNext(&entry);
}
}
call = "View Close";
view.Close();
call = "Database close";
db.Close();
call = "Session term";
session.Term();
}
catch(LNSTATUS error)
{
char errorBuf[LNERROR_MESSAGE_LENGTH];
LNGetErrorMessage(error, errorBuf);
printf("Error: [%s] %s\n", call, errorBuf);
}
}