#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! DEFAULT_MACRO FILE_TO_UPLOAD \\cogg.local\fs\IT\Shared\Spatial Systems\Data\data.gov.au\trees\packager\package\geelong_trees_shp\geelong_trees_2015_06_04.shz GUI OPTIONAL FILENAME_EXISTING FILE_TO_UPLOAD All_Files|*.*|Text_Files|*.txt|Comma_Separated_Files|*.csv|Zip_Files|*.zip What file do you want to upload?: DEFAULT_MACRO FILE_TYPE SHP GUI OPTIONAL CHOICE FILE_TYPE CSV%TXT%SHP%ZIP What extension are you updating?: DEFAULT_MACRO DATASET_NAME geelong-trees GUI TEXT DATASET_NAME The name of the dataset on data.gov.au: DEFAULT_MACRO AUTH_CODE INSERT_YOUR_API_KEY GUI TEXT AUTH_CODE API Key: INCLUDE [ if {{$(DATASET_NAME)} == {}} { puts_real {Parameter 'DATASET_NAME' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(AUTH_CODE)} == {}} { puts_real {Parameter 'AUTH_CODE' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE NULL READER_KEYWORD NULL_SOURCE NULL_SOURCE_DATASET null WRITER_TYPE NULL WRITER_KEYWORD NULL_DEST NULL_DEST_DATASET null #! END_WB_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)publisher.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 LOG_MAX_PRECISION Yes FME_REPROJECTION_ENGINE FME FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto FME_GEOMETRY_HANDLING Enhanced FME_STROKE_MAX_DEVIATION 0 LOG_TIMINGS YES LOG_FILTER_MASK -1 # ------------------------------------------------------------------------- MULTI_READER_CONTINUE_ON_READER_FAILURE No # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME publisher MACRO FME_VIEWER_APP fmedatainspector DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- Tcl2 proc Creator_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO Creator_XML NOT_ACTIVATED MACRO Creator_CLASSIC NOT_ACTIVATED MACRO Creator_2D3D 2D_GEOMETRY MACRO Creator_COORDS INCLUDE [ if { {Geometry Object} == {Geometry Object} } { puts {MACRO Creator_XML *} } ] INCLUDE [ if { {Geometry Object} == {2D Coordinate List} } { puts {MACRO Creator_2D3D 2D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] INCLUDE [ if { {Geometry Object} == {3D Coordinate List} } { puts {MACRO Creator_2D3D 3D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] INCLUDE [ if { {Geometry Object} == {2D Min/Max Box} } { set comment { We need to turn the COORDS which are minX minY maxX maxY into a full polygon list of coordinates }; set splitCoords [split [string trim {}]]; if { [llength $splitCoords] > 4} { set trimmedCoords {}; foreach item $splitCoords { if { $item != {} } {lappend trimmedCoords $item} }; set splitCoords $trimmedCoords; }; if { [llength $splitCoords] != 4 } { error {Creator: Coordinate list is expected to be a space delimited list of four numbers as 'minx miny maxx maxy' - `' is invalid}; }; set minX [lindex $splitCoords 0]; set minY [lindex $splitCoords 1]; set maxX [lindex $splitCoords 2]; set maxY [lindex $splitCoords 3]; puts "MACRO Creator_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY"; puts {MACRO Creator_2D3D 2D_GEOMETRY}; puts {MACRO Creator_CLASSIC *} } ] FACTORY_DEF $(Creator_XML) CreationFactory FACTORY_NAME Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING,?xmlversion=1.0encoding=US_ASCIIstandalone=no?geometrydimension=2nullgeometry) FACTORY_DEF $(Creator_CLASSIC) CreationFactory FACTORY_NAME Creator_CLASSIC_Creator $(Creator_2D3D) $(Creator_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE "_creation_instance" OUTPUT FEATURE_TYPE Creator_CREATED @Tcl2(Creator_CoordSysRemover) @CoordSys() fme_feature_type Creator # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE Creator_CREATED ATTR file_to_upload $(FILE_TO_UPLOAD$encode) ATTR filetype_to_upload $(FILE_TYPE$encode) ATTR dataset_url https:data.gov.auapirestdataset$(DATASET_NAME$encode) ATTR quote_to_remove OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * AttrSetFactory FACTORY_NAME AttributeCreator_2 ATTRSET_CREATE_DIRECTIVES _PROPAGATE_MISSING_FDIV INPUT FEATURE_TYPE AttributeCreator_OUTPUT ATTR dataset_url ReplaceStringValuedataset_urlValuequote_to_remove OUTPUT OUTPUT FEATURE_TYPE AttributeCreator_2_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * HTTPFactory FACTORY_NAME HTTPCaller INPUT FEATURE_TYPE AttributeCreator_2_OUTPUT TARGET_URL "@EvaluateExpression(FDIV,STRING_ENCODED,Valuedataset_url,HTTPCaller)" HTTP_METHOD GET SAVE_FILE NO OUTPUT_FILENAME "" OUTPUT_DIRECTORY "" TARGET_ATTR "response" FILE_PATH_ATTR "" UPLOAD_FILE "" UPLOAD_BODY "" MULTIPART_UPLOAD UPLOAD_CONTENT_TYPE "" COMBINED_MULTIPART_TABLE REQUEST_HEADER_TABLE Authorization;@EvaluateExpression(FDIV,STRING_ENCODED,$(AUTH_CODE$encode),HTTPCaller) ADDITIONAL_URL_PARAMETERS AUTH_USERNAME "" AUTH_PASSWORD "" AUTH_METHOD "" TARGET_ATTRIBUTE_ENCODING auto-detect RESPONSE_HEADER_LIST_ATTR "_headers" STATUS_CODE_ATTR "_http_status_code" ERROR_ATTR "_error" CONNECTION_TIMEOUT_LENGTH 60 TRANSFER_TIMEOUT_LENGTH 90 FOLLOW_REDIRECTS Yes VERIFY_SSL_CERTIFICATES Yes NAMED_CONNECTION "" USE_COOKIES No OUTPUT OUTPUT FEATURE_TYPE HTTPCaller_Output OUTPUT REJECTED FEATURE_TYPE HTTPCaller_ FACTORY_DEF * TeeFactory FACTORY_NAME "HTTPCaller Output Nuker" INPUT FEATURE_TYPE HTTPCaller_ # ------------------------------------------------------------------------- FACTORY_DEF * JSONQueryFactory FACTORY_NAME JSONFlattener INPUT FEATURE_TYPE HTTPCaller_Output MODE FLATTEN JSON_ATTR response EXPLODE_QUERY "json" RECURSIVE_FLATTEN YES OUTPUT EXPLODED FEATURE_TYPE JSONFlattener_OUTPUT OUTPUT REJECTED FEATURE_TYPE JSONFlattener_ FACTORY_DEF * TeeFactory FACTORY_NAME "JSONFlattener Output Nuker" INPUT FEATURE_TYPE JSONFlattener_ # ------------------------------------------------------------------------- # Expose all attributes. This ensures that if you expose fme_dataset, you will get it. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename FACTORY_DEF * TeeFactory FACTORY_NAME AttributeExposer INPUT FEATURE_TYPE JSONFlattener_OUTPUT OUTPUT FEATURE_TYPE AttributeExposer_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRenamer INPUT FEATURE_TYPE AttributeExposer_OUTPUT OUTPUT FEATURE_TYPE AttributeRenamer_OUTPUT @RenameAttributes(ATTR_LIST_DEF_VAL_ENCODED, id,groupid,id) # ------------------------------------------------------------------------- INCLUDE [ set macroLine "MACRO AttributeRemover_LIST_EXP "; foreach attr [split "_headers _headers.name _headers.value"] { set attr [FME_DecodeText $attr]; set attr [regsub "{}$" $attr "{}.*"]; set attr [regsub -all "{}" $attr "\\{\[0-9\]+\\}"]; append macroLine ",^$attr$"; }; puts $macroLine; ] FACTORY_DEF * TeeFactory FACTORY_NAME AttributeRemover INPUT FEATURE_TYPE AttributeRenamer_OUTPUT OUTPUT FEATURE_TYPE AttributeRemover_OUTPUT @RemoveAttributes(fme_encoded,) @RemoveAttributes(fme_pcre_match"$(AttributeRemover_LIST_EXP)") # ------------------------------------------------------------------------- FACTORY_DEF * ElementFactory FACTORY_NAME ListExploder_2 INPUT FEATURE_TYPE AttributeRemover_OUTPUT LIST_NAME "resources{}" ELEMENT_NUMBER_FIELD "_element_index" CLONE_GEOMETRY ATTR_ACCUM_MODE "HANDLE_CONFLICT" ATTR_CONFLICT_RES "ORIGINAL_IF_CONFLICT" INCOMING_PREFIX "" OUTPUT ELEMENT FEATURE_TYPE ListExploder_2_LIST_FOUND @RemoveAttributes(ElementFactory.baseCloned) # ------------------------------------------------------------------------- # Expose all attributes. This ensures that if you expose fme_dataset, you will get it. READER_META_ATTRIBUTES fme_feature_type fme_dataset fme_basename FACTORY_DEF * TeeFactory FACTORY_NAME AttributeExposer_2 INPUT FEATURE_TYPE ListExploder_2_LIST_FOUND OUTPUT FEATURE_TYPE AttributeExposer_2_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME TestFilter INPUT FEATURE_TYPE AttributeExposer_2_OUTPUT OUTPUT FEATURE_TYPE TestFilter_TESTFILTERINPUTLINE_0 FACTORY_DEF * TestFactory FACTORY_NAME TestFilter_TestFactory_0 INPUT FEATURE_TYPE TestFilter_TESTFILTERINPUTLINE_0 TEST @EvaluateExpression(FDIV,STRING_ENCODED,UpperCaseValueformat,TestFilter) = @EvaluateExpression(FDIV,STRING_ENCODED,UpperCaseValuefiletype_to_upload,TestFilter) ENCODED BOOLEAN_OPERATOR OR COMPOSITE_TEST_EXPR OUTPUT PASSED FEATURE_TYPE TestFilter_Valueformat=Valuefiletype_to_upload OUTPUT FAILED FEATURE_TYPE TestFilter_TESTFILTERINPUTLINE_1 FACTORY_DEF * TeeFactory FACTORY_NAME TestFilter_UNFILTERED INPUT FEATURE_TYPE TestFilter_TESTFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE TestFilter_UNFILTERED FACTORY_DEF * TeeFactory FACTORY_NAME "TestFilter UNFILTERED Output Nuker" INPUT FEATURE_TYPE TestFilter_UNFILTERED # ------------------------------------------------------------------------- Tcl2 proc TimeStamper_2_formatGetter { inVal } { if { [string compare $inVal {FME Date/Time (^Y^m^d^H^M^S)}] == 0 } { return {^Y^m^d^H^M^S}; } elseif { [string compare $inVal {FME Date (^Y^m^d)}] == 0} { return {^Y^m^d}; } elseif { [string compare $inVal {FME Time (^H^M^S)}] == 0} { return {^H^M^S}; } elseif { [string compare $inVal {ISO Date (^Y-^m-^d)}] == 0} { return {^Y-^m-^d}; } elseif { [string compare $inVal {ISO DateTime (^Y-^m-^dT^H:^M:^S)}] == 0} { return {^Y-^m-^dT^H:^M:^S}; } elseif { [string compare $inVal {ISO Time (^H:^M:^S)}] == 0} { return {^H:^M:^S}; } elseif { [string compare $inVal {Locale Date (^c)}] == 0} { return {^c}; }; return $inVal; } FACTORY_DEF * TeeFactory FACTORY_NAME TimeStamper_2 INPUT FEATURE_TYPE TestFilter_Valueformat=Valuefiletype_to_upload OUTPUT FEATURE_TYPE TimeStamper_2_OUTPUT @SupplyAttributes(ENCODED, last_modified, @Timestamp(@Tcl2("TimeStamper_2_formatGetter {ISO Date (^Y-^m-^d)} "))) # ------------------------------------------------------------------------- FACTORY_DEF * HTTPFactory FACTORY_NAME HTTPCaller_2__2 INPUT FEATURE_TYPE TimeStamper_2_OUTPUT TARGET_URL "http:data.gov.auapi3actionresource_update" HTTP_METHOD POST SAVE_FILE NO OUTPUT_FILENAME "" OUTPUT_DIRECTORY "" TARGET_ATTR "_response_body" FILE_PATH_ATTR "" UPLOAD_FILE "" UPLOAD_BODY "" MULTIPART_UPLOAD YES UPLOAD_CONTENT_TYPE "" COMBINED_MULTIPART_TABLE id StringUpload SOURCE_EXPRESSION;@EvaluateExpression(FDIV,STRING_ENCODED,Valueid,HTTPCaller_2__2);MIME_TYPE;textplain upload FileUpload SOURCE_FILE;@EvaluateExpression(FDIV,STRING_ENCODED,Valuefile_to_upload,HTTPCaller_2__2);MIME_TYPE;applicationoctet-stream last_modified StringUpload SOURCE_EXPRESSION;@EvaluateExpression(FDIV,STRING_ENCODED,Valuelast_modified,HTTPCaller_2__2);MIME_TYPE;textplain REQUEST_HEADER_TABLE Authorization;@EvaluateExpression(FDIV,STRING_ENCODED,$(AUTH_CODE$encode),HTTPCaller_2__2) ADDITIONAL_URL_PARAMETERS AUTH_USERNAME "" AUTH_PASSWORD "" AUTH_METHOD "" TARGET_ATTRIBUTE_ENCODING auto-detect RESPONSE_HEADER_LIST_ATTR "_headers" STATUS_CODE_ATTR "_http_status_code" ERROR_ATTR "_error" CONNECTION_TIMEOUT_LENGTH 60 TRANSFER_TIMEOUT_LENGTH 90 FOLLOW_REDIRECTS No VERIFY_SSL_CERTIFICATES Yes NAMED_CONNECTION "" USE_COOKIES No OUTPUT OUTPUT FEATURE_TYPE HTTPCaller_2__2_Output OUTPUT REJECTED FEATURE_TYPE HTTPCaller_2__2_ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME HTTPCaller_2__2_Output_Logger INPUT FEATURE_TYPE HTTPCaller_2__2_Output INPUT FEATURE_TYPE HTTPCaller_2__2_ OUTPUT FEATURE_TYPE HTTPCaller_2__2_Output_LOGGED @Log("HTTPCaller_2__2_Output: Feature is:","20","20") @FeatureType(HTTPCaller_2__2_Output_LOGGED) FACTORY_DEF * TeeFactory FACTORY_NAME "HTTPCaller_2__2_Output LOGGED Output Nuker" INPUT FEATURE_TYPE HTTPCaller_2__2_Output_LOGGED # ------------------------------------------------------------------------- FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" INPUT FEATURE_TYPE * OUTPUT ROUTED FEATURE_TYPE * @FeatureType(ENCODED,@Value(__wb_out_feat_type__)) @RemoveAttributes(__wb_out_feat_type__) OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__