' gerador de classe.lss
' Código Lotus Script - categorizado como VB.net só pra usar o Syntax Highlight
' Exibe a lista de formulários e gera uma classe para o form escolhido
Option Public
Option Explicit
Use "lsArrayList.class"
Dim s As NotesSession
Dim db As NotesDatabase
Dim form As NotesForm
Dim classe As String
Dim form_name As String
'// @Author William Madruga
'// @Created 30/06/2009
'/* Source da classe gerado em C:\
' * É necessário importar esse source para script library depois de gerado.
' *
' * TODO:
' * 1 - Retirar o hardcode
' * 2 - Gerar a classe dentro das script libraries, sem a necessidade de importar na mão
' * 3 - Remover as aspas do source gerado
' */
Sub Initialize
Dim filename As String
Dim filenum As Integer
Set s = New NotesSession
Set db = s.CurrentDatabase
form_name = get_form
If form_name <> "" Then
Set form = db.GetForm(form_name)
fileNum = Freefile()
fileName = "C:\" + form_name + ".lss"
Call create_object_factory
Call create_class
Call create_constructor
Call create_create_method
Call create_save_method
'Call create_attributes
Call create_setters
Call create_getters
classe = classe + Chr(13) + |End Class|
' Gravando classe no sistema operacional
Open filename For Output As filenum
Write #filenum, classe
Close filenum
Else
Msgbox "Operação Cancelada"
End If
End Sub
Private Function get_form As String
Dim wk As New NotesUIWorkspace
Dim response As String
Dim forms As Arraylist
Set forms = New Arraylist("")
Forall x In db.Forms
Call forms.add(x.name)
End Forall
response = wk.Prompt (PROMPT_OKCANCELLIST, _
"Selecione o Formulário", _
"Selecione o formulário para a geração da classe.", _
"", forms.array)
If Isempty (response) Then
get_form = ""
Else
get_form = response
End If
End Function
Private Sub create_object_factory
' Fábrica de objetos da classe
classe = |Public Class | + form_name + |Factory|
classe = classe + Chr(13) + |Public Function produce|
classe = classe + Chr(13) + |Set produce = New |+ form_name +|()|
classe = classe + Chr(13) + |End Function|
classe = classe + Chr(13) + |End Class|
End Sub
Private Sub create_class
' Inicio da classe
classe = classe + Chr(13) + |Public Class | + form_name
classe = classe + Chr(13) + |Private m_session As NotesSession|
classe = classe + Chr(13) + |Private m_db As NotesDatabase|
classe = classe + Chr(13) + |Private m_doc As NotesDocument|
Call enter
End Sub
Private Sub create_constructor
classe = classe + Chr(13) + |Sub new()|
classe = classe + Chr(13) + |Set m_session = New NotesSession|
classe = classe + Chr(13) + |Set m_db = m_session.CurrentDatabase|
classe = classe + Chr(13) + |End Sub|
Call enter
End Sub
Private Sub create_attributes
Forall x In form.Fields
classe = classe + Chr(13) + |Private | + x + | as Variant |
End Forall
Call enter
End Sub
Private Sub create_setters
Forall x In form.Fields
classe = classe + Chr(13) + |Public Property Set |+ x +| As Variant|
classe = classe + Chr(13) + |m_doc.| + x + | = | + x
classe = classe + Chr(13) + |End Property|
End Forall
Call enter
End Sub
Private Sub create_getters
Forall x In form.Fields
classe = classe + Chr(13) + |Public Property Get |+ x +| As Variant|
classe = classe + Chr(13) + x + | = m_doc.| + x + |(0)|
classe = classe + Chr(13) + |End Property|
End Forall
Call enter
End Sub
Sub create_create_method
classe = classe + Chr(13) + |Public Sub create()|
classe = classe + Chr(13) + |Set m_doc = m_db.CreateDocument|
classe = classe + Chr(13) + |with m_doc|
classe = classe + Chr(13) + |.form = "| + form_name + |"|
classe = classe + Chr(13) + |.docid = m_doc.universalID|
classe = classe + Chr(13) + |End With|
classe = classe + Chr(13) + |End Sub|
Call enter
End Sub
Sub create_save_method
classe = classe + Chr(13) + |Public Sub save()|
classe = classe + Chr(13) + |Call m_doc.save(true,false)|
classe = classe + Chr(13) + |End Sub|
Call enter
End Sub
Private Sub enter
classe = classe + Chr(13)
classe = classe + Chr(13)
End Sub