Skip to content

Commit

Permalink
Added HARMONYCORE_CUSTOM_FIELD_PARAM expression and expansion tokens
Browse files Browse the repository at this point in the history
  • Loading branch information
SteveIves committed Apr 26, 2023
1 parent 5aabe41 commit 9f6d0b5
Show file tree
Hide file tree
Showing 7 changed files with 188 additions and 8 deletions.
Binary file modified Documentation/CodeGen.chm
Binary file not shown.
Binary file modified Documentation/CodeGen.hsmx
Binary file not shown.
96 changes: 96 additions & 0 deletions HarmonyCoreExtensions/CustomFieldParam.dbl
@@ -0,0 +1,96 @@
;;*****************************************************************************
;;
;; Title: CustomFieldParam.dbl
;;
;; Type: Class
;;
;; Description: A custom field loop expansion token for use with Harmony Core
;;
;; Date: 26th April 2023
;;
;; Author: Steve Ives, Synergex Professional Services Group
;; http://www.synergex.com
;;
;;*****************************************************************************
;;
;; Copyright (c) 2023, Synergex International, Inc.
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are met:
;;
;; * Redistributions of source code must retain the above copyright notice,
;; this list of conditions and the following disclaimer.
;;
;; * Redistributions in binary form must reproduce the above copyright notice,
;; this list of conditions and the following disclaimer in the documentation
;; and/or other materials provided with the distribution.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
;; POSSIBILITY OF SUCH DAMAGE.
;;
;;*****************************************************************************

import System
import System.Collections.Generic
import CodeGen.Engine
import CodeGen.RepositoryAPI

namespace HarmonyCoreExtensions

public class CustomFieldParam implements IExpansionToken

public property TokenName, String
method get
proc
mreturn "HARMONYCORE_CUSTOM_FIELD_PARAM"
endmethod
endproperty

public property Description, String
method get
proc
mreturn "An example of a custom field loop token."
endmethod
endproperty

public property Validity, TokenValidity
method get
proc
mreturn TokenValidity.FieldLoop
endmethod
endproperty

public property TokenCase, TokenCaseMode
method get
proc
mreturn TokenCaseMode.UppercaseOnly
endmethod
endproperty

public method Expand, String
tkn, @Token
template, @FileNode
loops, @IEnumerable<LoopNode>
endparams
proc
lambda doExpand(str, field)
begin
data propValue = field.GetProperty<string>(template, "HARMONYCORE_CUSTOM_FIELD_PARAM")
mreturn propValue == ^null ? "" : propValue
end
mreturn TokenExpander.ExpandFieldLoopToken(tkn, template, loops, doExpand)
endmethod

endclass

endnamespace
5 changes: 1 addition & 4 deletions HarmonyCoreExtensions/CustomFieldType.dbl
Expand Up @@ -86,10 +86,7 @@ namespace HarmonyCoreExtensions
lambda doExpand(str, field)
begin
data propValue = field.GetProperty<string>(template, "HARMONYCORE_CUSTOM_FIELD_TYPE")
if(propValue != ^null) then
mreturn propValue
else
mreturn ""
mreturn propValue == ^null ? "" : propValue
end
mreturn TokenExpander.ExpandFieldLoopToken(tkn, template, loops, doExpand)
endmethod
Expand Down
5 changes: 1 addition & 4 deletions HarmonyCoreExtensions/CustomFieldValidator.dbl
Expand Up @@ -128,10 +128,7 @@ namespace HarmonyCoreExtensions
lambda doExpand(str, field)
begin
data propValue = field.GetProperty<string>(template, "HARMONYCORE_CUSTOM_FIELD_VALIDATOR")
if(propValue != ^null) then
mreturn propValue
else
mreturn ""
mreturn propValue == ^null ? "" : propValue
end
mreturn TokenExpander.ExpandFieldLoopToken(tkn, template, loops, doExpand)
endmethod
Expand Down
2 changes: 2 additions & 0 deletions HarmonyCoreExtensions/HarmonyCoreExtensions.synproj
Expand Up @@ -72,6 +72,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="AlternateKeyEndpoints.dbl" />
<Compile Include="CustomFieldParam.dbl" />
<Compile Include="CustomFieldValidator.dbl" />
<Compile Include="DeleteEndpoint.dbl" />
<Compile Include="FieldDataType.dbl" />
Expand All @@ -82,6 +83,7 @@
<Compile Include="GetEndpoint.dbl" />
<Compile Include="GlobalEntity.dbl" />
<Compile Include="HarmonyRoles.dbl" />
<Compile Include="HasCustomFieldParam.dbl" />
<Compile Include="ParameterBridgeDataObject.dbl" />
<Compile Include="ParameterBridgeDefinition.dbl" />
<Compile Include="ParameterBridgeTypeCS.dbl" />
Expand Down
88 changes: 88 additions & 0 deletions HarmonyCoreExtensions/HasCustomFieldParam.dbl
@@ -0,0 +1,88 @@
;;*****************************************************************************
;;
;; Title: HasCustomFieldParam.dbl
;;
;; Type: Class
;;
;; Description: A custom field loop expression token for use with Harmony Core
;;
;; Date: 26th April 2023
;;
;; Author: Steve Ives, Synergex Professional Services Group
;; http://www.synergex.com
;;
;;*****************************************************************************
;;
;; Copyright (c) 2023, Synergex International, Inc.
;; All rights reserved.
;;
;; Redistribution and use in source and binary forms, with or without
;; modification, are permitted provided that the following conditions are met:
;;
;; * Redistributions of source code must retain the above copyright notice,
;; this list of conditions and the following disclaimer.
;;
;; * Redistributions in binary form must reproduce the above copyright notice,
;; this list of conditions and the following disclaimer in the documentation
;; and/or other materials provided with the distribution.
;;
;; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
;; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
;; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
;; ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
;; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
;; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
;; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
;; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
;; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
;; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
;; POSSIBILITY OF SUCH DAMAGE.
;;
;;*****************************************************************************

import System
import System.Collections.Generic
import CodeGen.Engine
import CodeGen.RepositoryAPI

namespace HarmonyCoreExtensions

public class HasCustomFieldParam implements IExpressionToken

public property TokenName, String
method get
proc
mreturn "HARMONYCORE_CUSTOM_FIELD_PARAM"
endmethod
endproperty

public property Description, String
method get
proc
mreturn "Does the field have a custom field parameter?"
endmethod
endproperty

public property Validity, TokenValidity
method get
proc
mreturn TokenValidity.FieldLoop
endmethod
endproperty

public method Evaluate, Boolean
tkn, @Token
template, @FileNode
loops, @IEnumerable<LoopNode>
endparams
proc
lambda doEvaluate(str, field, index)
begin
mreturn field.HasProperty(template, "HARMONYCORE_CUSTOM_FIELD_PARAM")
end
mreturn ExpressionEvaluator.EvaluateFieldLoopExpression(tkn, template, loops, doEvaluate)
endmethod

endclass

endnamespace

0 comments on commit 9f6d0b5

Please sign in to comment.