Option Public Option Compare Nocase Uselsx "*javacon" Use "UnreadMarks" %INCLUDE "lsconst.lss" Dim UnreadNoteIDs() As String Dim xml_out As NotesStream Sub Initialize Print "Content-Type:text/xml" Print "Expires:-1" On Error Goto Handler Dim session As New NotesSession Dim context As NotesDocument Set context = session.DocumentContext Dim WebDbName Dim Hostname Dim qView Dim qCount Dim qStart Dim RestrictToCategory Dim ReturnUnread Hostname = Evaluate({"http://www.YOURDOMAINHERE.com"}) WebDbName = Evaluate ( {@WebDbName} ) qView = Evaluate( {@Middle(@LowerCase("} + context.Query_String(0) + {"); "&view="; "&")} ) If Trim(qView(0)) = "" Then Exit Sub ' No View defined, can not continue... qStart = Evaluate( {@Middle(@LowerCase("} + context.Query_String(0) + {"); "&start="; "&")} ) If Trim(qStart(0)) <> "" Then qStart(0) = "&start=" + qStart(0) qCount = Evaluate( {@Middle(@LowerCase("} + context.Query_String(0) + {"); "&count="; "&")} ) If Trim(qCount(0)) <> "" Then qCount(0) = "&count=" + qCount(0) RestrictToCategory = Evaluate( {@Middle(@LowerCase("} + context.Query_String(0) + {"); "&restricttocategory="; "&")} ) If Trim(RestrictToCategory(0)) <> "" Then RestrictToCategory(0) = "&RestrictToCategory=" + RestrictToCategory(0) ReturnUnread = Evaluate( {@Middle(@LowerCase("} + context.Query_String(0) + {"); "&returnunread="; "&")} ) If ReturnUnread(0) = "" Then ReturnUnread(0) = "1" End If Dim XMLFile As String Dim XML_URL As String XML_URL = HostName(0) + "/" + WebDbName(0) + "/" + qView(0) + "?ReadViewEntries" + RestrictToCategory(0) + qStart(0) + qCount(0) XMLFile = HTTPRequest(XML_URL) If ReturnUnread(0) = "1" Then Dim db As NotesDatabase Set db = session.CurrentDatabase Dim UnreadMarks As New NotesUnreadMarks(db, session.UserName) Redim UnreadNoteIDs(UnreadMarks.UnreadNotes.Count) As String Dim index As Integer index = 0 NoteID = UnreadMarks.UnreadNotes.GetFirstNoteID() While Not NoteID = "" UnreadNoteIDs(index) = NoteID index = index + 1 NoteID = UnreadMarks.UnreadNotes.GetNextNoteID(NoteID) Wend Dim saxParser As NotesSAXParser Dim xml_in As NotesStream Set xml_in=session.CreateStream xml_in.WriteText(XMLFile) xml_in.Position = 0 Set xml_out=session.CreateStream xml_out.Truncate Set saxParser=session.CreateSAXParser(xml_in, xml_out) On Event SAX_StartElement From saxParser Call SAXStartElement On Event SAX_Characters From saxParser Call SAXCharacters On Event SAX_EndElement From saxParser Call SAXEndElement On Event SAX_Error From saxParser Call SAXError On Event SAX_Warning From saxParser Call SAXError On Event SAX_FatalError From saxParser Call SAXError saxParser.Process ' initiate parsing ' read Results into Text xml_out.Position = 0 XMLFile = xml_out.ReadText() End If Print XMLFile Exit Sub Handler: Print "An error occoured on line #" + Str$(Erl) + " Error#" + Str$(Err) + " :: " + Error$(Err) + "" Exit Sub End Sub Sub SAXStartElement (Source As Notessaxparser,Byval elementname As String, Attributes As NotesSaxAttributeList) Dim i As Integer Call xml_out.WriteText("<" + elementname) If Attributes.Length > 0 Then Dim attrname As String Dim attrval As String For i = 1 To Attributes.Length attrname = Attributes.GetName(i) attrval = Attributes.GetValue(attrname) Call xml_out.WriteText(" " + attrname+{="} + attrval + {"}) If attrname = "noteid" Then If Arraygetindex(UnreadNoteIDs, attrval) > -1 Then Call xml_out.WriteText({ unread="1" }) End If End If Next End If Call xml_out.WriteText(">") End Sub Sub SAXCharacters (Source As Notessaxparser, Byval Characters As String, Count As Long) Call xml_out.WriteText(Characters) End Sub Sub SAXEndElement (Source As Notessaxparser, Byval ElementName As String) Call xml_out.WriteText("") End Sub Sub SAXError (Source As Notessaxparser, Exception As NotesSaxException ) Print "SAXError - "+Exception.Message End Sub Function HTTPRequest(URL As String) As String Dim session As JAVASESSION Set session = New JAVASESSION() Dim javanetURL As JAVACLASS ' get Class Set javanetURL = session.GetClass("java.net.URL") Dim netURL As JAVAOBJECT ' get object Set netURL = javanetURL.CreateObject("(Ljava/lang/String;)V", URL) Dim javanetURLConnection As JAVACLASS Set javanetURLConnection = session.GetClass("java.net.URLConnection") Dim netURLConnection As JAVAOBJECT Set netURLConnection = netURL.openConnection() ' open connection Dim javaioInputStreamReader As JAVACLASS Set javaioInputStreamReader = session.GetClass("java.io.InputStreamReader") Dim ioInputStreamReader As JAVAOBJECT Set ioInputStreamReader = javaioInputStreamReader.CreateObject("(Ljava/io/InputStream;)V", netURLConnection.getInputStream()) Dim javaioBufferedReader As JAVACLASS Set javaioBufferedReader = session.GetClass("java.io.BufferedReader") Dim ioBufferedReader As JAVAOBJECT Set ioBufferedReader = javaioBufferedReader.CreateObject("(Ljava/io/Reader;)V",ioInputStreamReader) Dim XMLData As String Dim ReadData As String XMLData = "" ReadData = ioBufferedReader.readLine() While Trim(ReadData) <> "" XMLData = XMLData + ReadData ReadData = ioBufferedReader.readLine() Wend HTTPRequest = XMLData End Function