This agent was created to find duplicate folders in a Domino.doc application. It can be also be customized to find other duplicate design elements or duplicate folders. Once the final duplicates have been gathered. It is included in a notification e-mail to the database designer/project manager or appropriate person. 
 
Option Public 
Option Declare 
 
Sub Initialize 
	Dim Session As New NotesSession 
	Dim DB As NotesDatabase 
	Dim View As NotesView 
	 
	Dim dCount As Long				' count of dString 
	Dim tCount As Long				' count of tString 
	Dim cCount As Long				' count of cString 
	Dim ctoggle As Integer 
	Dim jCount As Long				' count of all cString that exist so far in compare loop 
	Dim tString List As String		' tString is a list of all the folders 
	Dim cString List As String		' cString is a list of the folders being compared 
	Dim dString List As String		' dString is a list of all the folders that are duplicates 
	Dim temp As String 
	Dim bodyCount  As Long 
	 
	' maildoc dims 
	Dim maildoc As NotesDocument 
	Dim Body As NotesRichTextItem 
	 
	Set db = Session.CurrentDatabase 
	dCount = 0 
	tCount = 0 
	 
	Forall v In db.Views 
		If v.IsFolder Then 
			tString(Str(tCount)) = v.Name 
			tCount = tCount + 1 
		End If	 
	End Forall 
	If tCount = 0 Then 
		Exit Sub 
	End If 
	 
	cCount=0 
	' Cycle through each value and see it it matches a value in cString.  
	' If so put it in dString, else add it to cString 
	Forall i In tString 
		' Cycle through all elements of tString list and compare to growing cString		 
		' skipping first tstring(0) because nothing is in compare list yet 
		If cCount=0 Then 
			' Set first item of folder list to the compare list	 
			temp = tString(Str(cCount)) 
			cString(Str(cCount)) = temp 
			Goto Skip 
		End If 
		jCount = 0 
		Forall j In cString 
			' For each element of tString sycle through current list of cString 
			temp = tString(Str(cCount)) 
			If cString(Str(jCount)) = temp Then 
				dString(Str(dCount)) = temp 
				dCount = dCount + 1 
				Goto Skip 
			Else 
				ctoggle = False 
			End If 
			 
			jCount = jCount + 1	 
		End Forall 
		If ctoggle= False Then 
			cString(Str(cCount )) = temp 
		End If 
Skip: 
		cCount = cCount + 1 
	End Forall 
	If dCount=0 Then 
		Exit Sub 
	End If 
	' Mail document with list of dString 
	Set maildoc = New NotesDocument( db ) 
	maildoc.Form = "Memo" 
	maildoc.Subject = "Duplicate Folder Alert  - " & db.Title 
	Set Body = New NotesRichTextItem ( maildoc, "Body" ) 
	Call Body.AppendText _ 
	( "The following folders are all duplicates in this database. ") 
	Call Body.AddNewLine( 1 ) 
	bodyCount=0	 
	Do 	 
		Call Body.AppendText _ 
		( dString(Str(bodyCount)) ) 
		Call Body.AddNewLIne(1) 
		bodyCount = bodyCount + 1 
	Loop Until bodyCount >= dCount	 
	' Call Body.AppendDocLink( db, db.Title ) Use doclink if had been Notes mail 
	Call Body.AddNewLIne(1)	 
	Call Body.AppendText _ 
	( db.server & " - " & db.filepath ) 
	maildoc.From = "somefromname" 
	maildoc.Principal = "somefromname" 
	Call maildoc.Send( False, "sometoname" ) 
End Sub
  
previous page
 
  |