Manual for library “Tools”¶
In this article:
SIM.Tools CheckCondition¶
You can evaluate a string describing a condition into a boolean using an SIM.Tools.ICondition
.
SIM.Tools.Condition
class is its main implementation. It takes a string with the condition as an input parameter in the constructor. You can check the result of the condition using the property Result
.
Check the next example:
Add-Type -Path ("$PSScriptRoot\bin\debug\CheckCondition.dll")
#Here are 2 examples of use of the class SIM.Tools.Condition, with different inputs.
#Given some inputs (be sure to use simple qutations for string literals: 'text'):
$numInput = "3 * (2 + 1) = 9"
$stringInput = "'M' ! 'R'"
#We create the Condition:
$numCondition = New-Object SIM.Tools.Condition($numInput)
$stringCondition = New-Object SIM.Tools.Condition($stringInput)
#And so we can access the condition result:
$numCondition.get_Result()
$stringCondition.get_Result()
#We could also check the original condition from input:
#$numCondition.Condition
#$stringCondition.Condition
This are the accepted operators:
<
-> less than>
-> greater than=
-> equals!
-> not equalsAND
-> ‘and’ logical operatorOR
-> ‘or’ logical operatorNOT
-> ‘not’ logical operator()
-> Parentheses to modify operators preference
IMPORTANT: String literals must be enclosed by simple quotation marks: ‘literal’
SIM.Tools ResolveName¶
You can replace “keys” in a string for its corresponding “values” using a SIM.Tools.IResolvedText
and a SIM.Tools.IResolver
.
SIM.Tools.ResolvedText
class is the main implementation for IResolvedText
. It takes the string with the keys and a IResolver
as input parameters in the constructor. You can check the result using the property Text
.
For IResolver
there is an implementation for v6 and v61 taking 2 parameter:
- An open connection with a SQL DB.
- An SQL Query containing the columns that will be used as keys. The column name must match the key name. The column value will be the value we will use.
You can check the result of the replacement using the property Text
.
Check the next example:
Add-Type -Path ("$PSScriptRoot\bin\debug\ResolveName.dll")
Add-Type -Path ("$PSScriptRoot\..\SIMv61Database\bin\Debug\SIMv61Database.dll")
#Given a sample input
$input = '"<br>The software package: "{PackagingPackageName}" has been hand over to packaging factory.
<br>Manufacturer: <b>{RequestManufacturerName}</b>
<br>Product:<b>{RequestProductName}</b>
<br>Version: <b>{RequestProductVersion}</b>
<br>Architecture: <b>{HC_Architecture}</b>"'
#We obtain a connection with the corresponding table:
$connV61 = (New-Object SIMv61Database.SIMv61Database).Database.Connection
$connV61.Open()
$connV61.ChangeDatabase("SIM_HC_R003")
#We create the Resolved Text, using either connection.
#We can use different Resolvers. Here we use v6 resolver:
$inputResolvedText = New-Object SIM.Tools.ResolvedText(
$input,
(New-Object SIM.Tools.V6SqlDbResolver(
$connV61,
"SELECT * FROM PackagingJob WHERE Id=101"
))
)
#And so we can access its resolved text (use of property accessor method to expose exceptions in PS):
$inputResolvedText.get_Text()
#We could also check the original text before resolving:
#$inputResolvedText.OriginText
Error handling:
- If braces do not match on the input text, a
FormatException
will be thrown. - If a key value is not found among the columns returned by the query, or no entries are returned, an
ApplicationException
will be thrown. You can opt out of this error by adding a 3rd parameter to theResolvedText
constructor with the valuefalse
, like this:
$resolvedText = New-Object SIM.Tools.ResolvedText($input, $resolver, false)