However, recently I found out that PeopleSoft has delivered few utility application classes in their diagnostic plug-in application packages.
The main class we are interesting here is StringBuffer Class which provides basic functionality to work with a large amount of string concatenation operations within PeopleCode.
The StringBuffer class is not as comprehensive as StringBuilder class in Java or C#.net but it is good enough to do the string operations you want.
Here is the class definition (note: the image is an indication only)
class StringBuffer method StringBuffer(&InitialValue As string, &MaxSize As integer); method Append(&New As string); method Reset(); property string Value get set; property integer Length readonly; private instance array of string &Pieces; instance integer &MaxLength; end-class; method StringBuffer /+ &InitialValue as String, +/ /+ &MaxSize as Integer +/ &Pieces = CreateArray(&InitialValue); &MaxLength = &MaxSize; &Length = 0; end-method; method Reset &Pieces = CreateArrayRept("", 0); &Length = 0; end-method; method Append /+ &New as String +/ Local integer &TempLength = &Length + Len(&New); If &Length > &MaxLength Then throw CreateException(210, 44, "Message Not Found", String(&MaxLength)); End-If; &Length = &TempLength; &Pieces.Push(&New); end-method; get Value /+ Returns String +/ Local string &Temp = &Pieces.Join("", "", "", &Length); /* collapse array now */ &Pieces = CreateArrayRept("", 0); &Pieces.Push(&Temp); /* start out with this combo string */ Return &Temp; end-get; set Value /+ &NewValue as String +/ /* Ditch our current value */ %This.Reset(); &Pieces.Push(&NewValue); end-set;
The StringBuffer class is a simple (but useful) class which has
- two private instances - a string array (&Pieces) and an integer variable (&MaxLength);
- two properties - a read-write string property (Value) and read-only integer property (Length)
- 2 methods plus constructor method.
The operation inside the class is self explanatory. The Append method can be used to add strings to the end of a string represented by the current StringBuffer. The following example initializes a StringBuffer to "Hello this is my first string!" and then appends some text to the end of the object. The &MaxSize in the constructor must specify a non-negative integer value
Before you can use this class in your PeopleCode program, you must import it into your program, using an import statement. The application package PT_DIAGNOSTICS contains the StringBuffer class. The import statement should be as follows:
import PT_DIAGNOSTICS:*;
Lets see an example;
try Local PT_DIAGNOSTICS:StringBuffer &MyStringBuffer = create PT_DIAGNOSTICS:StringBuffer("Hello this is my first string!", 1); &MyStringBuffer.Append(" This is really good."); catch Exception &c1 WinMessage(&c1.ToString(), 0); end-try; /* to get the value of string use &MyStringBuffer.Value */ WinMessage(&MyStringBuffer.Value, 0);
Even though StringBuffer class provides basic functionality to manipulate strings, it comes in handy if you are dealing with files in PeopleCode for example;
While &file.ReadLine(&line) &S.Append(&line); &S.Append(&separator);
0 comments :
Post a Comment