<import>

Either a <define> element or an entire <ogrescript> element can be imported into the top level of a script using this task. To import from a file, set the file attribute to the absolute path; to import from a resource, set the resource attribute to the path of the resource. When running inside of Eclipse, resource importation will also require that bundleId be set to the plugin package where the resource is located. The imported code will be loaded into the script at the point of call.

Procedure importation

<ogrescript strict="true">
	<import resource="simple-procedure.xml" bundleId="ncsa.tools.ogrescript.tests"/>
	
	<declare name="monitor" configured="true">
		<new-object/>
	</declare>

	<call procedure="p0" ARG_0="1" ARG_1="40829384" ARG_2="${monitor}" RET_0="r0" RET_1="r1" RET_2="r2"/>
	<assign name="g0" int="${r0}" global="true"/>
	<assign name="g1" long="${r1}" global="true"/>
	<assign name="g2" object="${r2}" global="true"/>
	<echo message="g0 = ${g0}"/>
	<echo message="g1 = ${g1}"/>
	<echo message="g2 = ${g2}"/>
</ogrescript>

In this case, there is a "simple-procedure.xml" resource which looks like this:

<define procedure="p0" ARG_0="int" ARG_1="long" ARG_2="object" RET_0="int" RET_1="long" RET_2="any">
	<echo message="ARG_0 = ${ARG_0}"/>
	<echo message="ARG_1 = ${ARG_1}"/>
	<echo message="ARG_2 = ${ARG_2}"/>
	<assign name="RET_0" int="${ARG_0}"/>
	<assign name="RET_1" long="${ARG_1}"/>
	<assign name="RET_2" object="${ARG_2}"/>
</define>

(Sub-)script importation

<ogrescript strict="true">
	<import resource="simple-embedded-script.xml" bundleId="ncsa.tools.ogrescript.tests"/>
	<echo message="g0 = ${g0}"/>
	<echo message="g1 = ${g1}"/>
	<echo message="g2 = ${g2}"/>
</ogrescript>

In this case, there is also a "simple-embedded-script.xml" resource which looks like this:

<ogrescript>
        <import resource="simple-procedure.xml" bundleId="ncsa.tools.ogrescript.tests"/>
	<declare name="monitor" configured="true">
		<new-object/>
	</declare>
	<call procedure="p0" ARG_0="1" ARG_1="40829384" ARG_2="${monitor}" RET_0="r0" RET_1="r1" RET_2="r2"/>
	<assign name="g0" int="${r0}" global="true"/>
	<assign name="g1" long="${r1}" global="true"/>
	<assign name="g2" object="${r2}" global="true"/>
</ogrescript>

Note that imports can be embedded (as top-level nodes) inside ogrescript resources or files, and to an arbitrary depth; imports cannot be embedded, however, inside other elements.

These will not work:
<ogrescript>
...
   <parallel>
       <import resource="some-ogrescript.xml" bundle="some.package"/>
       ...
   </parallel>
...
</ogrescript>
<define procedure="p0" ARG_0="int" ARG_1="long" ARG_2="object" RET_0="int" RET_1="long" RET_2="any">
	<import resource="some-ogrescript.xml" bundle="some.package"/>
	<assign name="RET_0" int="${ARG_0}"/>
	<assign name="RET_1" long="${ARG_1}"/>
	<assign name="RET_2" object="${ARG_2}"/>
</define>
  • No labels