#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
#!
GUI IGNORE SourceDataset_TEXTLINE_1,TEXTLINE_IN_ENCODING_TEXTLINE_1,DestDataset_XLSXW_1,XLSXW_OUT_OVERWRITE_FILE_XLSXW_1,XLSXW_OUT_TEMPLATEFILE_XLSXW_1
DEFAULT_MACRO SRC_MDB
GUI FILENAME SRC_MDB Geodatabase_MDB|*.mdb Source Geodatabase:
DEFAULT_MACRO DestDataset_XLSXW
GUI FILENAME DestDataset_XLSXW Excel_Files(*.xlsx;*.xlsm;*.xls)|*.xlsx;*.xlsm;*.xls|All_files(*.*)|*.* Destination Microsoft Excel File:
INCLUDE TCL
proc __FME_ExpandMacros {text {maxlevels 100}} {
if { $maxlevels <= 0 } { return $text; }
set pattern [join {{\$} {\([^()$]*\)}} {}]
set indices [regexp -inline -all -indices $pattern $text]
if [llength $indices] {
foreach pair [lreverse $indices] {
lassign $pair start end
set replacement {}
set replacement $::FME_MacroValues([string range $text [expr $start + 2] [expr $end - 1]])
set text [string replace $text $start $end $replacement]
}
return [__FME_ExpandMacros $text [expr $maxlevels - 1]]
}
return $text
}
proc __FME_ExpandEnvVars {text {maxlevels 100}} {
if { $maxlevels <= 0 } { return $text; }
set pattern [join {{\$} {\{[^\{\}$]*\}}} {}]
set indices [regexp -inline -all -indices $pattern $text]
if [llength $indices] {
foreach pair [lreverse $indices] {
lassign $pair start end
set replacement {}
set replacement $::env([string range $text [expr $start + 2] [expr $end - 1]])
set text [string replace $text $start $end $replacement]
}
return [__FME_ExpandEnvVars $text [expr $maxlevels - 1]]
}
return $text
}
proc __FME_EvalAndEncodeMacro {macroName} {
set macroVal {}
catch { set macroVal [__FME_ExpandMacros $::FME_MacroValues($macroName)] }
catch { set macroVal [__FME_ExpandEnvVars $macroVal] }
if {[string equal -length 15 {FME_CONDITIONAL} $macroVal ] == 0} {
return [FME_EncodeText $macroVal];
}
return $macroVal;
}
END_INCLUDE
INCLUDE [ puts "MACRO SRC_MDB__FMEENCODED__ [__FME_EvalAndEncodeMacro SRC_MDB]" ; ]
INCLUDE [ puts "MACRO DestDataset_XLSXW__FMEENCODED__ [__FME_EvalAndEncodeMacro DestDataset_XLSXW]" ; ]
INCLUDE [ if {{$(SRC_MDB)} == {}} { puts_real {Parameter 'SRC_MDB' must be given a value.}; exit 1; }; ]
INCLUDE [ if {{$(DestDataset_XLSXW)} == {}} { puts_real {Parameter 'DestDataset_XLSXW' must be given a value.}; exit 1; }; ]
#! START_HEADER
#! START_WB_HEADER
READER_TYPE TEXTLINE
READER_KEYWORD TEXTLINE_1
WRITER_TYPE MULTI_WRITER
MULTI_WRITER_DATASET_ORDER BY_ID
MULTI_WRITER_FIRST_WRITER_ID 0
MULTI_WRITER_TYPE{0} XLSXW
MULTI_WRITER_KEYWORD{0} XLSXW_1
#! END_WB_HEADER
#! START_WB_HEADER
MACRO WB_KEYWORD "TEXTLINE_1"
#! END_WB_HEADER
#! START_SOURCE_HEADER TEXTLINE TEXTLINE_1
# =====================================================================
# The following GUI line prompts for a file to be used as the source
# TextLine file. The user input is stored in a macro, which is then
# used to define the dataset to be read.
# The dataset this mapping file was generated from was:
GUI FILENAME SourceDataset_TEXTLINE_1 Text/Compressed_Text_Files(*.txt;*.txt.gz)|*.txt;*.txt.gz|Text_Files(*.txt)|*.txt|Compressed_Text_Files(*.txt.gz)|*.txt.gz|All_files(*.*)|*.* Source Text File:
# =====================================================================
# Allows to force the encoding of source text file
DEFAULT_MACRO TEXTLINE_IN_ENCODING_TEXTLINE_1
GUI OPTIONAL STRING_OR_CHOICE TEXTLINE_IN_ENCODING_TEXTLINE_1 UTF-8%UTF-16LE%UTF-16BE%ANSI%BIG5%SJIS%CP437%CP708%CP720%CP737%CP775%CP850%CP852%CP855%CP857%CP860%CP861%CP862%CP863%CP864%CP865%CP866%CP869%CP932%CP936%CP950%CP1250%CP1251%CP1252%CP1253%CP1254%CP1255%CP1256%CP1257%CP1258%ISO8859-1%ISO8859-2%ISO8859-3%ISO8859-4%ISO8859-5%ISO8859-6%ISO8859-7%ISO8859-8%ISO8859-9%ISO8859-13%ISO8859-15 Character Encoding:
TEXTLINE_1_ENCODING $(TEXTLINE_IN_ENCODING_TEXTLINE_1)
#! END_SOURCE_HEADER
#! START_WB_HEADER
DEFAULT_MACRO SourceDataset
INCLUDE [ if {{$(SourceDataset)} != ""} { \
puts {DEFAULT_MACRO SourceDataset_TEXTLINE_1 $(SourceDataset)} \
} ]
#! END_WB_HEADER
#! START_SOURCE_HEADER TEXTLINE TEXTLINE_1
DEFAULT_MACRO SourceDataset_TEXTLINE_1 ${TEMP}\temp.fme
TEXTLINE_1_DATASET "$(SourceDataset_TEXTLINE_1)"
#! END_SOURCE_HEADER
#! START_WB_HEADER
MACRO WB_KEYWORD "XLSXW_1"
#! END_WB_HEADER
#! START_DEST_HEADER XLSXW XLSXW_1
# ============================================================================
# First get the dataset for the database. For Excel, it's the file name.
# For now we'll use whatever they had when they generated this mapping file,
# and not reprompt
#! END_DEST_HEADER
#! START_WB_HEADER
DEFAULT_MACRO DestDataset
INCLUDE [ if {"$(DestDataset)" != ""} { \
puts {DEFAULT_MACRO DestDataset_XLSXW_1 $(DestDataset)} \
} ]
#! END_WB_HEADER
#! START_DEST_HEADER XLSXW XLSXW_1
DEFAULT_MACRO DestDataset_XLSXW_1 $(DestDataset_XLSXW)
GUI FILENAME DestDataset_XLSXW_1 Excel_Files(*.xlsx;*.xlsm;*.xls)|*.xlsx;*.xlsm;*.xls|All_files(*.*)|*.* Destination Microsoft Excel File:
# ============================================================================
# Whether or not to overwrite the file
DEFAULT_MACRO XLSXW_OUT_OVERWRITE_FILE_XLSXW_1 Yes
XLSXW_1_OVERWRITE_FILE "$(XLSXW_OUT_OVERWRITE_FILE_XLSXW_1)"
GUI CHOICE XLSXW_OUT_OVERWRITE_FILE_XLSXW_1 Yes%No Overwrite Existing File:
# Template file option
DEFAULT_MACRO XLSXW_OUT_TEMPLATEFILE_XLSXW_1
XLSXW_1_TEMPLATEFILE "$(XLSXW_OUT_TEMPLATEFILE_XLSXW_1)"
GUI OPTIONAL FILENAME_MUSTEXIST XLSXW_OUT_TEMPLATEFILE_XLSXW_1 Excel_Files(*.xlsx;*.xlsm;*.xls)|*.xlsx;*.xlsm;*.xls|Excel_Workbook_2007(*.xlsx)|*.xlsx|Excel_Macro_Workbook(*.xlsm)|*.xlsm|Excel_Workbook_Pre_2007(*.xls)|*.xls|All_files(*.*)|*.* Template File:
# ============================================================================
# Parameters whose values will be percolated to the feature types, but will not
# remain as writer level settings
# Drop feature type first
DEFAULT_MACRO XLSXW_OUT_DROP_TABLE_XLSXW_1 No
XLSXW_1_DROP_TABLE "$(XLSXW_OUT_DROP_TABLE_XLSXW_1)"
# Truncate feature type first (removeallcelldata,retainformatting/headers,etc.)
DEFAULT_MACRO XLSXW_OUT_TRUNCATE_TABLE_XLSXW_1 No
XLSXW_1_TRUNCATE_TABLE "$(XLSXW_OUT_TRUNCATE_TABLE_XLSXW_1)"
# Whether to write out the field names (orjustthedata)
DEFAULT_MACRO XLSXW_OUT_FIELD_NAMES_OUT_XLSXW_1 Yes
XLSXW_1_FIELD_NAMES_OUT "$(XLSXW_OUT_FIELD_NAMES_OUT_XLSXW_1)"
# Default writer mode
DEFAULT_MACRO XLSXW_OUT_WRITER_MODE_XLSXW_1 Insert_New_Rows
XLSXW_1_WRITER_MODE "$(XLSXW_OUT_WRITER_MODE_XLSXW_1)"
XLSXW_1_DATASET "$(DestDataset_XLSXW_1)"
#! END_DEST_HEADER
#! END_HEADER
LOG_FILENAME "$(FME_MF_DIR)Extract_domains_from_geodatabase_mdb.log"
LOG_APPEND NO
LOG_MAX_FEATURES 200
LOG_MAX_RECORDED_FEATURES 200
FME_REPROJECTION_ENGINE FME
FME_IMPLICIT_CSMAP_REPROJECTION_MODE Datum
FME_GEOMETRY_HANDLING Classic
FME_STROKE_MAX_DEVIATION 0
LOG_FILTER_MASK -1
DEFAULT_MACRO DATASET_KEYWORD_TEXTLINE_1 TEXTLINE_1
DEFAULT_MACRO DATASET_KEYWORD_XLSXW_1 XLSXW_1
# -------------------------------------------------------------------------
TEXTLINE_1_READER_META_ATTRIBUTES fme_feature_type
# -------------------------------------------------------------------------
MULTI_READER_CONTINUE_ON_READER_FAILURE No
FME_BEGIN_TCL FME_Decode lappendsysStringFME_MacroValuesFME_HOME_UNIXfmelappendsysStringGeneratelappendsysStringGEODATABASE_MDBlappendsysStringNULLlappendsysStringFME_MacroValuesSRC_MDBlappendsysStringenvTEMPtemp.fmelappendsysString--RESOLVE_DOMAINSlappendsysStringYESlappendsysString21evalexecsysString
# -------------------------------------------------------------------------
MACRO WORKSPACE_NAME Extract_domains_from_geodatabase_mdb
MACRO FME_VIEWER_APP fmedatainspector
# -------------------------------------------------------------------------
INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp";
MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs
MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc
MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES
# -------------------------------------------------------------------------
Lookup ___KnownFeatureTypes___ text_line yes "" no
# -------------------------------------------------------------------------
FACTORY_DEF * TestFactory FACTORY_NAME "Unexpected Input Remover" INPUT FEATURE_TYPE * TEST @Lookup(___KnownFeatureTypes___,@FeatureType()) == yes OUTPUT PASSED FEATURE_TYPE *
# -------------------------------------------------------------------------
FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(TEXTLINE,FME_GENERIC,PRESERVE_GEOMETRY)
DEFAULT_MACRO WB_CURRENT_CONTEXT
# -------------------------------------------------------------------------
MACRO casemac
INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ]
Tcl2 proc StringSearcher_c2f54a33_341a_48b2_82e7_d0e090d2101d0_doGrep { regExp } { set results [regexp -inline $(casemac) [FME_DecodeText $regExp] [FME_GetAttribute {"text_line_data"}]]; set attrName {_matched_characters}; set index 0; foreach part $results { FME_SetAttribute $attrName $part; set attrName "_matched_parts{$index}"; incr index; }; if {$index > 0} { FME_UnsetAttributes $attrName; }; return $index; }
FACTORY_DEF * TestFactory FACTORY_NAME StringSearcher INPUT FEATURE_TYPE text_line TEST @Tcl2("StringSearcher_c2f54a33_341a_48b2_82e7_d0e090d2101d0_doGrep {coded_domain} ") > 0 OUTPUT PASSED FEATURE_TYPE StringSearcher_MATCHED
# -------------------------------------------------------------------------
FME_PYTHON_PATH "$(FME_MF_DIR)"
FACTORY_DEF * PythonFactory FACTORY_NAME PythonCaller INPUT FEATURE_TYPE StringSearcher_MATCHED SYMBOL_NAME parseDomains SOURCE_CODE defparseDomainsfeature:startIndex=0quotesOn=0codes=values=tempList=textLine=feature.getStringAttributetext_line_data#slicethelistbetweenparenthesesstart=textLine.index+1end=textLine.indextextLine=textLinestart:end#DecodetheWWJDencodingusingaTCLcall:tclFunc=Tcl2FME_DecodeText+textLine+textLine=feature.performFunctiontclFunc#BruteforceparsingintotempListforiinrangelentextLine:iftextLinei.count:!=0andquotesOn==0:tempList.appendtextLinestartIndex:istartIndex=i+1eliftextLinei.count!=0andquotesOn==0:quotesOn=1elif