Hi,

You can do this with normal filters as well, even if it will be a little
bit slower.

I like the Service functionality, and would create a simple
Display-only-form with two fields Dirty and Clean and two filters:

FLTR 1:
  Run If: ('Dirty' LIKE "[A-Za-z 0-9.,\?""!#$%^&*()_=+/;:<>|}{[`~-]%" OR
'Dirty' LIKE "]%")
  Set-Fields: Clean = $Clean$ + LEFTC($Dirty$, 1)

FLTR 2:
  Run If: ('Dirty' LIKE "_%")
  Set-Fields: Dirty = SUBSTRC($Dirty$, 1)
  Goto: 1

Just call your Service with Dirty as input and Clean as output.

        Best Regards - Misi, RRR AB, http://www.rrr.se (ARSList MVP 2011)

Products from RRR Scandinavia (Best R.O.I. Award at WWRUG10/11):
* RRR|License - Not enough Remedy licenses? Save money by optimizing.
* RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs.
Find these products, and many free tools and utilities, at http://rrr.se.

> Thank you Axton!  We'll give it a go.
>
>
>
> From: Action Request System discussion list(ARSList)
> [mailto:arslist@ARSLIST.ORG] On Behalf Of Axton
> Sent: Wednesday, May 16, 2012 4:01 PM
> To: arslist@ARSLIST.ORG
> Subject: Re: Cleaning Special Characters from a Character Field
>
>
>
> ** Here is a very simple Java plugin to get you started (38 lines of
> code).
> The plugin accepts 2 parameters; a regex and a value, and returns
> true/false
> on whether the string conforms to the regex.  You can extend or modify
> this
> to perform a conversion instead of doing a comparison.
>
>
>
> import java.util.ArrayList;
>
> import java.util.List;
>
> import java.util.regex.Matcher;
>
> import java.util.regex.Pattern;
>
> import java.util.regex.PatternSyntaxException;
>
> import com.bmc.arsys.api.ARException;
>
> import com.bmc.arsys.api.Value;
>
> import com.bmc.arsys.pluginsvr.plugins.ARFilterAPIPlugin;
>
> import com.bmc.arsys.pluginsvr.plugins.ARPluginContext;
>
> public class Regex extends ARFilterAPIPlugin {
>
>             /**
>
>             * @param context ARPluginContext provided by the plugin
> server.
>
>             * @param arg1 Input parameters:
>
>             *                                  1 - Regular Expression
> conforming to java.util.regex
>
>             *                                  2 - String to evaluate
>
>             * @return Boolean, does the string conform to the regular
> expression
>
>             *                                  0 - False
>
>             *                                  1 - True
>
>             * @see java.util.regex.Pattern
>
>             * @exception ARException handled by plugin server
>
>             * @since 1.0
>
>             */
>
>             public List<Value> filterAPICall(ARPluginContext context,
> List<Value> arg1)
>
>                                     throws ARException {
>
>                         // Create List of Values to hold response
>
>                         List<Value> results = new ArrayList<Value>();
>
>                         context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO,
> "Regex Plugin Called with parameters:" + arg1.get(0).getValue());
>
>                         context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO, "
> Pattern: " + arg1.get(0).getValue());
>
>                         context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO, "
> Value:   " + arg1.get(1).getValue());
>
>                         // set up the pattern
>
>                         Pattern pattern = null;
>
>                         try {
>
>                                     pattern =
> Pattern.compile(arg1.get(0).getValue().toString());
>
>                         } catch (PatternSyntaxException e) {
>
>
> context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO,
> "PatternSyntaxException at " + e.getIndex());
>
>
> context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO,
> "Pattern:     " + e.getPattern());
>
>
> context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO,
> "Description: " + e.getDescription());
>
>
> context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO,
> "Message:     " + e.getMessage());
>
>                                     throw e;
>
>                         }
>
>                         // set up the value
>
>                         Matcher value =
> pattern.matcher(arg1.get(1).getValue().toString());
>
>                         // test the value against the pattern and get the
> result
>
>                         boolean b = value.matches();
>
>                         int result = 0;
>
>                         if (b == false)
>
>                                     result = 0;
>
>                         if (b == true)
>
>                                     result = 1;
>
>                         context.logMessage(context.getPluginInfo(),
> com.bmc.arsys.pluginsvr.plugins.ARPluginContext.PLUGIN_LOG_LEVEL_INFO, "
> Result:   " + result);
>
>                         results.add(new Value(result));
>
>                         return results;
>
>             }
>
> }
>
>
>
>
>
>
>
> On Wed, May 16, 2012 at 2:10 PM, Jeff Lockemy (QMX Support Services)
> <jlock...@gmail.com> wrote:
>
> **
>
> Thanks for the input guys.
>
>
>
> In reference to Axton's suggestion - I'm certainly not a Java guy, but
> might
> be able to find some internal resources to tap into on that front.  In the
> meantime, Jason's suggestion of a VB or batch file script might be good
> quick and dirty solution to buy us more time to implement something more
> elegant.  Thanks again!
>
>
>
> Cheers,
>
> Jeff
>
>
>
>
>
> From: Action Request System discussion list(ARSList)
> [mailto:arslist@ARSLIST.ORG] On Behalf Of Jason Miller
> Sent: Wednesday, May 16, 2012 2:58 PM
> To: arslist@ARSLIST.ORG
> Subject: Re: Cleaning Special Characters from a Character Field
>
>
>
> ** I agree.  I haven't had a chance to write a plugin yet but we have a
> few
> cases where we built DB functions or server side scripts (.vbs, .bat) that
> we call from a Filter using Direct SQL or Run Process.  It isn't as
> elegant
> as what Axton describes but is more or less the same concept; off load the
> works to an external process on the server to do the work and give the
> result back to Remedy.
>
>
>
> Jason
>
> On Wed, May 16, 2012 at 11:41 AM, Axton <axton.gr...@gmail.com> wrote:
>
> ** I would not use client side technologies for data validation or
> sanitization; at some point someone or something will bypass it (api, web
> service, import, workflow, etc.).  I wrote a Java plugin that uses the
> java
> regex capabilities to do something similar.  It relatively simple to write
> and you can pass the regex parameters to the plugin; just figure out what
> you want to give to the plugin and what you want to get back, then fill in
> the blanks with the Java.
>
>
>
> http://docs.oracle.com/javase/tutorial/essential/regex/
>
> http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
>
> http://docs.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html
>
> The following classes should have all you need:
>
> java.util.regex.Pattern
>
> java.util.regex.Matcher
>
>
>
> Axton Grams
>
>
>
> On Wed, May 16, 2012 at 11:49 AM, Jeff Lockemy (QMX Support Services)
> <jlock...@gmail.com> wrote:
>
> **
>
> Good Day Listers,
>
> I've been going round and round on this and I hope that someone has some
> suggestions.
>
> I need to strip out special/non-standard characters in a character field
> before passing it to a web service.  I was thinking that running some
> JavaScript when the user submits the contents via the Mid-Tier might be a
> decent approach.  Not really knowing JavaScript, I dug around and found a
> "removeSpecialChars" function on the web that I was trying to adapt, but I
> haven't had much luck.
>
> Based on examples that I found on the ARSList and BMC Community, I put the
> function in the Web Footer Content of the form:
>
> <html>
>
> <script>
>
> function removeSpecialChars(strVal)
>
> {
>
> strVal = strVal.replace(/[^A-Za-z 0-9
> \.,\?""!#\$%\^&\*\(\)-_=\+;:<>\/\\\|\}\{\[\]`~]*/g, '') ;
>
> }
>
> </script>
>
> <body>
>
> </body>
>
> </html>
>
>
>
> Then I tried several different Active Link Run Process commands to run the
> function on submit or modify:
>
> javascript:window.F(536870913).S(removeSpecialChars($Character Field$));
>
> javascript:window.F(536870913).S(new CharType(removeSpecialChars
> ("arid536870913").value));
>
> However, when I submit or modify the field contents, I always get the
> following error:
>
> Caught exception: Object doesn't support property or method 'hasMessages'
>
> Now I'm wondering if JavaScript is really the best way to approach this.
> If
> JavaScript is a good approach, then can anyone see what I am doing wrong
> here?  If it isn't, any suggestions of a better way?
>
> Thanks in advance.
>
> Respectfully,
>
> Jeff
>
>
>
>
>
> _attend WWRUG12 www.wwrug.com ARSlist: "Where the Answers Are"_
>
>
>
> _attend WWRUG12 www.wwrug.com ARSlist: "Where the Answers Are"_
>
>
>
> _attend WWRUG12 www.wwrug.com ARSlist: "Where the Answers Are"_
>
> _attend WWRUG12 www.wwrug.com ARSlist: "Where the Answers Are"_
>
>
>
> _attend WWRUG12 www.wwrug.com ARSlist: "Where the Answers Are"_
>
>
> _______________________________________________________________________________
> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
> attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
attend wwrug12 www.wwrug12.com ARSList: "Where the Answers Are"

Reply via email to