Friday, March 25, 2011

PeopleCode Help Bits 3

If you need to Validate Email Address Fields for Strange inputs, here is the one that helps.

method ValidateEmailAddress
   /+ &email as String +/
   /+ Returns String +/
   Local number &nReason, &k;
   /*Check for Strange Chars.~ ! @ # $ % ^ & * ( )  + { } | <   > ? : " /  `  =    ;  ' ,  [   ]   \*/
   Local array of string &astrEmailChecker = %This.buildCheckArray();
   For &k = 1 To &astrEmailChecker.Len;
      If Find(&email, &astrEmailChecker [&k]) = 0 Then
         Return &astrEmailChecker [&k];
      End-If;
   End-For; 
   /*check for numbers in the predomain string e.g predomain@domain.com*/
   Local number &nATPos = Find("@", &email);
   Local string &sEmlPre@ = Substring(&email, 1, &nATPos - 1); 
   /*Check for all numbers*/
   If IsDigits(&sEmlPre@) Then
      /* do error processing */
      Return "Digits in email before @ sign."
   Else
      /* do processing */
   End-If;
   /*check for Dot*/
   Local string &sEmailDomain = Substring(&email, &nATPos + 1, Len(&email));
   Local number &nPeriodPos = Find(".", &sEmailDomain, 2);
   Local string &sEmlPost@ = Substring(&sEmailDomain, 1, &nPeriodPos - 1);
   If &nATPos = 0 Then
      Return "Email do not contain @ sign in the email.";
   End-If;
   If &nATPos = 0 Or
         &nPeriodPos = 0 Then
      Return "Email do not contain . after @ sign in the email.";
   End-If;
   If IsDigits(&sEmlPost@) Then
      /* do error processing */
      Return "Digits in email after @ sign and before dot.";
   Else
      /* do processing */
   End-If;
   Return "OK";
end-method;
method buildCheckArray
   /+ Returns Array of String +/
   Local array of string &astrEmail = CreateArrayRept("", 0);
   &astrEmail.Push("~");
   &astrEmail.Push("!");
   &astrEmail.Push("@");
   &astrEmail.Push("#");
   &astrEmail.Push("$");
   &astrEmail.Push("%");
   &astrEmail.Push("^");
   &astrEmail.Push("&");
   &astrEmail.Push("*");
   &astrEmail.Push("(");
   &astrEmail.Push(")");
   &astrEmail.Push("+");
   &astrEmail.Push("{");
   &astrEmail.Push("}");
   &astrEmail.Push("|");
   &astrEmail.Push("<");
   &astrEmail.Push(">");
   &astrEmail.Push("?");
   &astrEmail.Push(":");
   &astrEmail.Push("""");
   &astrEmail.Push("/");
   &astrEmail.Push("`");
   &astrEmail.Push("=");
   &astrEmail.Push(";");
   &astrEmail.Push("'");
   &astrEmail.Push(",");
   &astrEmail.Push("[");
   &astrEmail.Push("]");
   &astrEmail.Push("\");
   Return &astrEmail;
end-method;