Auto-generate LotusScript setter and getter properties for class variables
2012-04-24 09:49
519 查看
Here's the problem. You're using object-oriented LotusScript to create classes and objects. Like a good object-oriented LotusScript developer, you're declaring all your class variables as "Private" and then writing "Setter" and "Getter" properties to allow access to them. The truth is, most of the "Setter" and "Getter" properties that you would write offer direct read/write access to those variables anyway -- and writing them out is such a pain! You could cheat and declare the class variables as public or you could have a Lotus Notes form generate them for you.Here is the code for a button that will do just this:
Output: This is a single value Lotus Notes text field.
Now follow these steps:Create a button on the form and paste the button code below into its LotusScript Click event.
Create a new Lotus Notes document from the form and paste your class variable declarations into the Input field.
Click the button.
The "Setter" and "Getter" properties will be created in the Output field. You can then copy and paste the LotusScript below into your class definition code:
private m_MyVar1 as string private m_MyVar2 as Variant private m_MyVar3 as Integer private m_MyVar4() as stringThat will generate these:
Public Property Get MyVar1 as String MyVar1 = me.m_MyVar1 End Property Public Property Set MyVar1 as String me.m_MyVar1 = MyVar1 End Property Public Property Get MyVar2 as Variant MyVar2 = me.m_MyVar2 End Property Public Property Set MyVar2 as Variant me.m_MyVar2 = MyVar2 End Property ... and so on.To further set this up, create a Lotus Notes form in any Lotus Notes database and put two text fields in it. These text fields should be labeled as:Input: This is a multi-value Lotus Notes text field. Set the multi-value options tick boxes to use "NewLine" for both display and input.
Output: This is a single value Lotus Notes text field.
Now follow these steps:Create a button on the form and paste the button code below into its LotusScript Click event.
Create a new Lotus Notes document from the form and paste your class variable declarations into the Input field.
Click the button.
The "Setter" and "Getter" properties will be created in the Output field. You can then copy and paste the LotusScript below into your class definition code:
Button code Dim session As New NotesSession Dim ws As New NotesUIWorkspace Dim uidoc As NotesUIDocument Dim doc As NotesDocument Dim inputVar As Variant Set uidoc = ws.CurrentDocument Set doc = uidoc.document Call doc.ComputeWithForm (False, False) inputVar = doc.Input If inputVar(0) = "" Then Messagebox "No input found" Exit Sub End If %REM Assumptions are that class variables will declared thus private m_MyVar1 as string private m_MyVar2 as Variant private m_MyVar3 as Integer private m_MyVar4() as string and so on. We use the Split function to create a variant array (tempVar) of 4 members. These will be tempVar(0) = the word "Private". tempVar(1) = the variable's name tempVar(2) = the word "as" tempvar(3) = the variable's type. You need two text fields on a form: "Input" = multi-value Text field. Set the multi-value options tickboxes to use NewLine. "Output" = single value Text field %END REM Dim outputString As String Dim tempString As String Dim tempVar As Variant Dim variableName As String Dim setgetVariableName As String Dim variableType As String Dim NL As String outputString$ = "" Dim classVariablePrefix As String classVariablePrefix$ = "m_" NL$ = Chr$(13) & Chr$(10) ' True for Windoze only. Should change for Mac or Linux clients. Forall inputLine In inputVar tempVar = Split(inputLine, " ") variableName = Trim(tempVar(1)) variableType = Trim(tempVar(3)) If Instr(variableName, "(") > 0 Then ' must be an array, so need to declare the set and get as Variant variableName$ = Strleft(variableName$, "(") variableType$ = "Variant" End If If Instr(variableName$, classVariablePrefix$) > 0 Then setgetVariableName$ = Strrightback (variableName$, classVariablePrefix$) Else setgetVariableName$ = variableName$ End If outputString$ = outputString$ & "public property get " & setgetVariableName$ & " as " & variableType$ & NL$ outputString$ = outputString$ & Chr$(9) & setgetVariableName$ & " = me." & variableName$ & NL$ outputString$ = outputString$ & "End Property" & NL$ outputString$ = outputString$ & "public property set " & setgetVariableName$ & " as " & variableType$ & NL$ outputString$ = outputString$ & Chr$(9) & " me." & variableName$ & " = " & setgetVariableName$ & NL$ outputString$ = outputString$ & "End Property" & NL$ & NL$ End Forall doc.Output = outputString Call uidoc.reloadDo you have comments on this tip? Let us know.This tip was submitted to the SearchDomino.com tip library by member Mike Brown. Please let others know how useful it is via the rating scale below. Do you have a useful Lotus Notes, Domino, Workplace or WebSphere tip or code snippet to share? Submit it to our monthly tip contest and you could win a prize.
相关文章推荐
- LotusScript Class to do client or server side FTP on Win32 platform. FTP using script and wininet.dll.
- [Objective-C] class add a property and its setter and getter
- Vector class for Lotus Script
- 【实体 报错 】No serializer found for class org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer and no properties discovered to create BeanSerializer
- Let Us Fuck Up Getter And Setter (1)- Java Object Properties Copy
- Eclipse中generate getter and setter对boolean的反应
- WCF: Generate Proxy Class and Configuration file for Client
- Mybatis找不到参数错误:There is no getter for property named 'categoryId' in 'class java.lang.Integer'。
- Getter And Setter取消前缀
- Mybatis问题:There is no getter for property named 'Id' in 'class java.lang.String'
- a color class for actionscript
- Why C++ Supports both Class and Typename for Type Parameters
- Checking for Undefined, Null, and Empty Variables in JavaScript
- There is no getter for property named '**' in 'class java.lang.String
- mybatis There is no getter for property named 'xx' in 'class java.lang.String
- Creating your first Web Service provider and consumer in LotusScript and Java.
- could not find a getter for ... in class ... 异常的解决
- Installation Phases and In-Script Execution Options for Custom Actions in Windows Installer
- A simple HTTP PHP class to crawl a URL for internal and external URLs
- getter and setter In java