109 cfs subparams
This commit is contained in:
@@ -146,15 +146,17 @@
|
||||
"svcId":#local.qInstanceOperation.service_id#,
|
||||
"contractId":#arguments.contractId#
|
||||
}/> <!--- если появятся новые аргументы у новых функций, будем добавлять их сюда --->
|
||||
<cfset local.qCfsParam.value_list=generateValueList(argumentCollection=#args#)/> <!--- можно перечислить именованные аргументы обычным порядком, но с коллекцией потенциально более гибко --->
|
||||
<!--- <cfdump var=#local.qCfsParam#/><cfabort/> --->
|
||||
<!--- <cfset local.qCfsParam.value_list=generateValueList(argumentCollection=#args#)/> --->
|
||||
<cfinvoke component="instance_operation_cfs_param" method="generateValueList" argumentCollection=#args# returnVariable="local.qCfsParam.value_list"/>
|
||||
<!--- можно перечислить именованные аргументы обычным порядком, но с коллекцией потенциально более гибко --->
|
||||
<cfif len(trim(local.qCfsParam.value_list)) AND listLen(local.qCfsParam.value_list) EQ 1>
|
||||
<cfset local.qCfsParam.default_value=local.qCfsParam.value_list/>
|
||||
</cfif>
|
||||
</cfif><!--- преобразование к массиву выполняется при финальном форматировании резалтсета --->
|
||||
</cfif>
|
||||
|
||||
<cfif data_type EQ "map">
|
||||
<cfset var map={}/>
|
||||
<cfinvoke component="instance_operation_cfs_param" method="processMap" qParam=#local.qCfsParam#/>
|
||||
<!--- <cfset var map={}/>
|
||||
<cftry>
|
||||
<cfset var map=deserializeJson(param_value)/>
|
||||
<cfcatch type="any"><cfrethrow/></cfcatch>
|
||||
@@ -223,7 +225,7 @@
|
||||
</cfloop>
|
||||
|
||||
<cfset local.qCfsParam.data_descriptor = mapDescriptor/>
|
||||
<cfset local.qCfsParam.param_value = serializeJson(map)/>
|
||||
<cfset local.qCfsParam.param_value = serializeJson(map)/> --->
|
||||
</cfif><!---/map --->
|
||||
</cfloop>
|
||||
|
||||
@@ -250,47 +252,7 @@
|
||||
<cfreturn representationOf(out) />
|
||||
</cffunction>
|
||||
|
||||
<!--- *** дублируются --->
|
||||
<cffunction name="getAvailableResourceRealms" returnType="string">
|
||||
<cfargument name="svcId"/>
|
||||
<cfargument name="contractId"/>
|
||||
|
||||
<cfset var local={}/>
|
||||
|
||||
<cfquery name="local.qAvailableResourceRealm"><!--- *** distinct халява, но придумывать корректную формулировку времени мало --->
|
||||
select distinct r.resource_realm, r.sort
|
||||
from resource_realm r
|
||||
join resource_realm_access a on
|
||||
(r.resource_realm_id=a.resource_realm_id
|
||||
AND (a.contract_id=<cfqueryparam cfsqltype="CF_SQL_INTEGER" value=#arguments.contractId# null=#!isValid("integer", arguments.contractId)#/>
|
||||
OR a.contract_id=0) /*0 means access to any contract*/
|
||||
AND a.is_enabled)
|
||||
join svc s on r.resource_realm_type_id=s.resource_realm_type_id
|
||||
where s.svc_id=<cfqueryparam cfsqltype="CF_SQL_INTEGER" value=#arguments.svcId# null=#!isValid("integer", arguments.svcId)#/>
|
||||
order by r.sort, r.resource_realm
|
||||
</cfquery> <!--- <cfdump var=#arguments#/> cfdump здесь провоцирует NPE --->
|
||||
<cfreturn valueList(local.qAvailableResourceRealm.resource_realm)/>
|
||||
</cffunction>
|
||||
|
||||
|
||||
<cffunction name="generateValueList" returntype="string">
|
||||
<cfargument name="functionName" type="string" required="true"/>
|
||||
<!--- остальные атрибуты необязательные, в argumentCollection (еще вопрос, насколько безопасно объявлять один из аргументов без остальных) --->
|
||||
|
||||
<cfswitch expression=#arguments.functionName#>
|
||||
<cfcase value="">
|
||||
<cfreturn ""/>
|
||||
</cfcase>
|
||||
<cfcase value="getAvailableResourceRealms">
|
||||
<cfreturn getAvailableResourceRealms(arguments.svcId, arguments.contractId)/>
|
||||
</cfcase>
|
||||
<cfcase value="getSampleList"><!--- for debug --->
|
||||
<cfreturn "dummy1,dummy2"/>
|
||||
</cfcase>
|
||||
<cfdefaultcase>
|
||||
<cfreturn "function not found"/>
|
||||
</cfdefaultcase>
|
||||
</cfswitch>
|
||||
</cffunction>
|
||||
|
||||
|
||||
</cfcomponent>
|
||||
Reference in New Issue
Block a user