#! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! #! GUI IGNORE SourceDataset_FFS_1,FFS_IN_PASSPHRASE_FFS_1,FFS_IN_SEARCH_ENVELOPE_MINX_FFS_1,FFS_IN_SEARCH_ENVELOPE_MINY_FFS_1,FFS_IN_SEARCH_ENVELOPE_MAXX_FFS_1,FFS_IN_SEARCH_ENVELOPE_MAXY_FFS_1,FFS_IN_CLIP_TO_ENVELOPE_FFS_1,_SEARCH_CLOSEST_POINT_FFS_1,SourceDataset_POSTGIS_1,POSTGIS_IN_HOST_POSTGIS_1,POSTGIS_IN_PORT_POSTGIS_1,POSTGIS_IN_USER_NAME_POSTGIS_1,POSTGIS_IN_PASSWORD_POSTGIS_1,POSTGIS_IN_SEARCH_ENVELOPE_MINX_POSTGIS_1,POSTGIS_IN_SEARCH_ENVELOPE_MINY_POSTGIS_1,POSTGIS_IN_SEARCH_ENVELOPE_MAXX_POSTGIS_1,POSTGIS_IN_SEARCH_ENVELOPE_MAXY_POSTGIS_1,POSTGIS_IN_CLIP_TO_ENVELOPE_POSTGIS_1,POSTGIS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_POSTGIS_1,POSTGIS_IN_SEARCH_METHOD_POSTGIS_1,POSTGIS_IN_FEATURES_PER_FETCH_POSTGIS_1,POSTGIS_IN_SIMPLIFY_AGGREGATES_POSTGIS_1,DestDataset_TEXTLINE_1,TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1,TEXTLINE_OUT_ENCODING_TEXTLINE_1,TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1 DEFAULT_MACRO bboxWest 18.5 GUI FLOAT bboxWest Bounding box - minimum X coordinate DEFAULT_MACRO bboxSouth 59 GUI FLOAT bboxSouth Bounding box - minimum Y coordinate DEFAULT_MACRO bboxEast 19 GUI FLOAT bboxEast Bounding box - maximum X coordinate DEFAULT_MACRO bboxNorth 59.5 GUI FLOAT bboxNorth Bounding box - maximum Y coordinate DEFAULT_MACRO destCoordSystem EPSG:4326 GUI COORDSYS destCoordSystem Query and Destination Coordinate System DEFAULT_MACRO FEATURE_TYPES ProtectedSite GUI LISTBOX_ENCODED FEATURE_TYPES ProtectedSite Feature types to read (layers) DEFAULT_MACRO SourceDataset_POSTGIS postgis GUI OPTIONAL TEXT SourceDataset_POSTGIS Source PostGIS Dataset: DEFAULT_MACRO MAX_FEATURES 600 GUI OPTIONAL INTEGER MAX_FEATURES Max features to read: INCLUDE [ if {{$(bboxWest)} == {}} { puts_real {Parameter 'bboxWest' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(bboxSouth)} == {}} { puts_real {Parameter 'bboxSouth' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(bboxEast)} == {}} { puts_real {Parameter 'bboxEast' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(bboxNorth)} == {}} { puts_real {Parameter 'bboxNorth' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(destCoordSystem)} == {}} { puts_real {Parameter 'destCoordSystem' must be given a value.}; exit 1; }; ] INCLUDE [ if {{$(FEATURE_TYPES)} == {}} { puts_real {Parameter 'FEATURE_TYPES' must be given a value.}; exit 1; }; ] #! START_HEADER #! START_WB_HEADER READER_TYPE MULTI_READER MULTI_READER_TYPE{0} NULL MULTI_READER_KEYWORD{0} FFS_1 MULTI_READER_GEN_DIRECTIVES{0} USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXY,0,SEARCH_ENVELOPE_MAXX,0,PASSPHRASE,,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINY,0,FFS_EXPOSE_FORMAT_ATTRS, MULTI_READER_TYPE{1} POSTGIS MULTI_READER_KEYWORD{1} POSTGIS_1 MULTI_READER_GEN_DIRECTIVES{1} USE_SEARCH_ENVELOPE,NO,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXY,0,SEARCH_ENVELOPE_MAXX,0,PORT,5432,HOST,localhost,USER_NAME,postgres,PASSWORD,kiruna13,SEARCH_ENVELOPE_MINX,0,TABLELIST,public.ProtectedSite,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINY,0,POSTGIS_EXPOSE_FORMAT_ATTRS, WRITER_TYPE TEXTLINE WRITER_KEYWORD TEXTLINE_1 #! END_WB_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "FFS_1" #! END_WB_HEADER #! START_SOURCE_HEADER FFS FFS_1 # ============================================================================ # The following GUI line prompts for the Feature Store file to be read # The dataset this mapping file was generated from was: #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {{$(SourceDataset)} != ""} { \ puts {DEFAULT_MACRO SourceDataset_FFS_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER FFS FFS_1 DEFAULT_MACRO SourceDataset_FFS_1 C:\Projects\Inspire\ProtectedAreas\Workspaces\Dean_v6.2\DB\InspireProtectedSitesDB.ffs GUI MULTIFILE SourceDataset_FFS_1 FME_Feature_Store_Files(*.ffs)|*.ffs|All_Files|*.* Source FME Feature Store (FFS) File(s): # ============================================================================ # Set the passphrase (which is optional) DEFAULT_MACRO FFS_IN_PASSPHRASE_FFS_1 FFS_1_PASSPHRASE "$(FFS_IN_PASSPHRASE_FFS_1)" GUI OPTIONAL PASSWORD FFS_IN_PASSPHRASE_FFS_1 Password (optional): # Include this file in source setting section to add native search envelope processing # Zero as a default means we don't do any search -- this makes workbench happier # =========================================================================== DEFAULT_MACRO FFS_IN_SEARCH_ENVELOPE_MINX_FFS_1 $(bboxWest) FFS_1_SEARCH_ENVELOPE "$(FFS_IN_SEARCH_ENVELOPE_MINX_FFS_1)" GUI OPTIONAL FLOAT FFS_IN_SEARCH_ENVELOPE_MINX_FFS_1 Minimum X: # =========================================================================== DEFAULT_MACRO FFS_IN_SEARCH_ENVELOPE_MINY_FFS_1 $(bboxSouth) FFS_1_SEARCH_ENVELOPE "$(FFS_IN_SEARCH_ENVELOPE_MINY_FFS_1)" GUI OPTIONAL FLOAT FFS_IN_SEARCH_ENVELOPE_MINY_FFS_1 Minimum Y: # =========================================================================== DEFAULT_MACRO FFS_IN_SEARCH_ENVELOPE_MAXX_FFS_1 $(bboxEast) FFS_1_SEARCH_ENVELOPE "$(FFS_IN_SEARCH_ENVELOPE_MAXX_FFS_1)" GUI OPTIONAL FLOAT FFS_IN_SEARCH_ENVELOPE_MAXX_FFS_1 Maximum X: # =========================================================================== DEFAULT_MACRO FFS_IN_SEARCH_ENVELOPE_MAXY_FFS_1 $(bboxNorth) FFS_1_SEARCH_ENVELOPE "$(FFS_IN_SEARCH_ENVELOPE_MAXY_FFS_1)" GUI OPTIONAL FLOAT FFS_IN_SEARCH_ENVELOPE_MAXY_FFS_1 Maximum Y: # =========================================================================== DEFAULT_MACRO FFS_IN_CLIP_TO_ENVELOPE_FFS_1 YES FFS_1_CLIP_TO_ENVELOPE "$(FFS_IN_CLIP_TO_ENVELOPE_FFS_1)" GUI OPTIONAL CHECKBOX FFS_IN_CLIP_TO_ENVELOPE_FFS_1 YES%NO Clip to Search Envelope # By default, strip FME meta-attributes (likemulti_reader_keyword) from # the features the FFS reader creates. FFS_1_STRIP_META_ATTRS YES # By default, ignore spillover files (*_1.ffs,*_2.ffs,etc). # When enabled, these files will be ignored by the reader, and only read when # *.ffs itself is read. FFS_1_ENFORCE_SECONDARY_FILE_NAMES YES # ======================================================================== # If desired, the below string can specify a point, and the closest feature # in the FFS file will be read and returned. DEFAULT_MACRO _SEARCH_CLOSEST_POINT_FFS_1 GUI OPTIONAL TEXT _SEARCH_CLOSEST_POINT_FFS_1 Closest Search Point: FFS_1_SEARCH_CLOSEST_POINT $(_SEARCH_CLOSEST_POINT_FFS_1) FFS_1_DATASET "$(SourceDataset_FFS_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "POSTGIS_1" #! END_WB_HEADER #! START_SOURCE_HEADER POSTGIS POSTGIS_1 # The dataset this mapping file was generated from was: #! END_SOURCE_HEADER #! START_WB_HEADER DEFAULT_MACRO SourceDataset INCLUDE [ if {{$(SourceDataset)} != ""} { \ puts {DEFAULT_MACRO SourceDataset_POSTGIS_1 $(SourceDataset)} \ } ] #! END_WB_HEADER #! START_SOURCE_HEADER POSTGIS POSTGIS_1 DEFAULT_MACRO SourceDataset_POSTGIS_1 $(SourceDataset_POSTGIS) GUI OPTIONAL TEXT SourceDataset_POSTGIS_1 Source PostGIS Dataset: DEFAULT_MACRO POSTGIS_IN_HOST_POSTGIS_1 localhost POSTGIS_1_HOST "$(POSTGIS_IN_HOST_POSTGIS_1)" GUI TEXT POSTGIS_IN_HOST_POSTGIS_1 Host: DEFAULT_MACRO POSTGIS_IN_PORT_POSTGIS_1 5432 POSTGIS_1_PORT "$(POSTGIS_IN_PORT_POSTGIS_1)" GUI INTEGER POSTGIS_IN_PORT_POSTGIS_1 Port: DEFAULT_MACRO POSTGIS_IN_USER_NAME_POSTGIS_1 postgres POSTGIS_1_USER_NAME "$(POSTGIS_IN_USER_NAME_POSTGIS_1)" GUI TEXT POSTGIS_IN_USER_NAME_POSTGIS_1 Username: DEFAULT_MACRO POSTGIS_IN_PASSWORD_POSTGIS_1 postgres POSTGIS_1_PASSWORD "$(POSTGIS_IN_PASSWORD_POSTGIS_1)" GUI OPTIONAL PASSWORD POSTGIS_IN_PASSWORD_POSTGIS_1 Password: # Include this file in source setting section to add native search envelope processing # Zero as a default means we don't do any search -- this makes workbench happier # =========================================================================== DEFAULT_MACRO POSTGIS_IN_SEARCH_ENVELOPE_MINX_POSTGIS_1 $(bboxWest) POSTGIS_1_SEARCH_ENVELOPE "$(POSTGIS_IN_SEARCH_ENVELOPE_MINX_POSTGIS_1)" GUI OPTIONAL FLOAT POSTGIS_IN_SEARCH_ENVELOPE_MINX_POSTGIS_1 Minimum X: # =========================================================================== DEFAULT_MACRO POSTGIS_IN_SEARCH_ENVELOPE_MINY_POSTGIS_1 $(bboxSouth) POSTGIS_1_SEARCH_ENVELOPE "$(POSTGIS_IN_SEARCH_ENVELOPE_MINY_POSTGIS_1)" GUI OPTIONAL FLOAT POSTGIS_IN_SEARCH_ENVELOPE_MINY_POSTGIS_1 Minimum Y: # =========================================================================== DEFAULT_MACRO POSTGIS_IN_SEARCH_ENVELOPE_MAXX_POSTGIS_1 $(bboxEast) POSTGIS_1_SEARCH_ENVELOPE "$(POSTGIS_IN_SEARCH_ENVELOPE_MAXX_POSTGIS_1)" GUI OPTIONAL FLOAT POSTGIS_IN_SEARCH_ENVELOPE_MAXX_POSTGIS_1 Maximum X: # =========================================================================== DEFAULT_MACRO POSTGIS_IN_SEARCH_ENVELOPE_MAXY_POSTGIS_1 $(bboxNorth) POSTGIS_1_SEARCH_ENVELOPE "$(POSTGIS_IN_SEARCH_ENVELOPE_MAXY_POSTGIS_1)" GUI OPTIONAL FLOAT POSTGIS_IN_SEARCH_ENVELOPE_MAXY_POSTGIS_1 Maximum Y: # =========================================================================== DEFAULT_MACRO POSTGIS_IN_CLIP_TO_ENVELOPE_POSTGIS_1 NO POSTGIS_1_CLIP_TO_ENVELOPE "$(POSTGIS_IN_CLIP_TO_ENVELOPE_POSTGIS_1)" GUI OPTIONAL CHECKBOX POSTGIS_IN_CLIP_TO_ENVELOPE_POSTGIS_1 YES%NO Clip to Search Envelope # ============================================================================ # Search Envelope Coordinate System DEFAULT_MACRO POSTGIS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_POSTGIS_1 GUI OPTIONAL COORDSYS POSTGIS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_POSTGIS_1 Search Envelope Coordinate System: POSTGIS_1_SEARCH_ENVELOPE_COORDINATE_SYSTEM "$(POSTGIS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_POSTGIS_1)" DEFAULT_MACRO POSTGIS_IN_SEARCH_METHOD_POSTGIS_1 MBR_OVERLAPS GUI CHOICE POSTGIS_IN_SEARCH_METHOD_POSTGIS_1 MBR_OVERLAPS%CONTAINS%DISJOINT%EQUALS%INTERSECTS%OVERLAPS%TOUCHES%WITHIN Search Method: POSTGIS_1_SEARCH_METHOD $(POSTGIS_IN_SEARCH_METHOD_POSTGIS_1) DEFAULT_MACRO POSTGIS_IN_FEATURES_PER_FETCH_POSTGIS_1 10000 GUI FLOAT POSTGIS_IN_FEATURES_PER_FETCH_POSTGIS_1 Number Of Records To Fetch At A Time: POSTGIS_1_FEATURES_PER_FETCH $(POSTGIS_IN_FEATURES_PER_FETCH_POSTGIS_1) DEFAULT_MACRO POSTGIS_IN_SIMPLIFY_AGGREGATES_POSTGIS_1 YES GUI CHOICE POSTGIS_IN_SIMPLIFY_AGGREGATES_POSTGIS_1 YES%NO Simplify Aggregate Geometries: POSTGIS_1_SIMPLIFY_AGGREGATES $(POSTGIS_IN_SIMPLIFY_AGGREGATES_POSTGIS_1) POSTGIS_1_DATASET "$(SourceDataset_POSTGIS_1)" #! END_SOURCE_HEADER #! START_WB_HEADER MACRO WB_KEYWORD "TEXTLINE_1" #! END_WB_HEADER #! START_DEST_HEADER TEXTLINE TEXTLINE_1 # ===================================================================== # The following GUI line prompts for a directory to be used as the # the destination for the TextLine files. The user input is stored in # a macro, which is then used to define the dataset to be written. #! END_DEST_HEADER #! START_WB_HEADER DEFAULT_MACRO DestDataset INCLUDE [ if {"$(DestDataset)" != ""} { \ puts {DEFAULT_MACRO DestDataset_TEXTLINE_1 $(DestDataset)} \ } ] #! END_WB_HEADER #! START_DEST_HEADER TEXTLINE TEXTLINE_1 DEFAULT_MACRO DestDataset_TEXTLINE_1 protectedAreasExport.gml GUI FILENAME DestDataset_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(*.*)|*.* Destination Text File File: # ===================================================================== # The following GUI line prompts for the overwrite flag. The default is # YES. Possible values are YES or NO. Any value other than NO or # no is interpreted as YES. DEFAULT_MACRO TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1 YES TEXTLINE_1_OVERWRITE_FILE "$(TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1)" GUI CHOICE TEXTLINE_OUT_OVERWRITE_FILE_TEXTLINE_1 YES%NO Overwrite Existing File: # ===================================================================== # Set the type of encoding for the output file DEFAULT_MACRO TEXTLINE_OUT_ENCODING_TEXTLINE_1 UTF-16BE TEXTLINE_1_ENCODING "$(TEXTLINE_OUT_ENCODING_TEXTLINE_1)" GUI OPTIONAL STRING_OR_CHOICE TEXTLINE_OUT_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 (optional): # ===================================================================== # Set line termination character DEFAULT_MACRO TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1 TEXTLINE_1_END_OF_LINE "$(TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1)" GUI OPTIONAL CHOICE TEXTLINE_OUT_END_OF_LINE_TEXTLINE_1 Windows%Unix%Macintosh Line Termination: # ===================================================================== # Set the mime type. Note -- it is actually only used inside of workspaces # as a FORMAT_PARAMETER which even then is parsed only by the FME Server # Repository Manager DEFAULT_MACRO TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1 text/plain TEXTLINE_1_MIME_TYPE "$(TEXTLINE_OUT_MIME_TYPE_TEXTLINE_1)" TEXTLINE_1_DATASET "$(DestDataset_TEXTLINE_1)" #! END_DEST_HEADER #! END_HEADER LOG_FILENAME "$(FME_MF_DIR)InspirePAexporter_OgcWfs.log" LOG_APPEND NO LOG_MAX_FEATURES 200 LOG_MAX_RECORDED_FEATURES 200 FME_REPROJECTION_ENGINE FME FME_GEOMETRY_HANDLING Classic FME_STROKE_MAX_DEVIATION 0 MAPPING_FILE_ID OGCWFSService LOG_TIMINGS YES LOG_FILTER_MASK -1 DEFAULT_MACRO DATASET_KEYWORD_FFS_1 FFS_1 DEFAULT_MACRO DATASET_KEYWORD_POSTGIS_1 POSTGIS_1 DEFAULT_MACRO DATASET_KEYWORD_TEXTLINE_1 TEXTLINE_1 # ------------------------------------------------------------------------- FFS_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- POSTGIS_1_READER_META_ATTRIBUTES fme_feature_type # ------------------------------------------------------------------------- FFS_1_FEATURE_TYPES $(FEATURE_TYPES) POSTGIS_1_MAX_FEATURES $(MAX_FEATURES) POSTGIS_1_FEATURE_TYPES $(FEATURE_TYPES) MULTI_READER_CONTINUE_ON_READER_FAILURE Yes # ------------------------------------------------------------------------- MACRO WORKSPACE_NAME InspirePAexporter_OgcWfs MACRO FME_VIEWER_APP fmeview # ------------------------------------------------------------------------- POSTGIS_1_DEF ProtectedSite postgis_type "postgis_none postgis_point postgis_line postgis_area postgis_curve postgis_curvepolygon postgis_compoundcurve" postgis_sql_where_clause "" postgis_sql_statement "" inspire_applicationschema varchar(32) inspire_localid varchar(32) inspire_namespace varchar(32) inspire_legalfoundationdate varchar(32) inspire_title varchar(32) inspire_date varchar(32) inspire_datetype varchar(32) inspire_designation varchar(32) inspire_designationscheme varchar(32) inspire_percentageunderdesignation varchar(32) inspire_sitename varchar(240) inspire_language varchar(32) inspire_nativeness varchar(32) inspire_namestatus varchar(32) inspire_sourceofname varchar(32) inspire_pronunciationofname varchar(32) inspire_protectionclassification varchar(32) inspire_siteidentifier varchar(32) inspire_siteidentifierscheme varchar(32) inspire_denominator varchar(32) inspire_qualityandimportance varchar(255) inspire_vulnerability varchar(255) inspire_ownership varchar(255) inspire_documentation varchar(255) inspire_fundingtype varchar(32) inspire_projectname varchar(64) inspire_datasource varchar(240) inspire_role varchar(32) inspire_organisationname varchar(250) inspire_contactinfo varchar(250) inspire_electronicmailadress varchar(64) inspire_officialsitearea varchar(32) inspire_sitelength varchar(32) inspire_title_2 varchar(64) inspire_date_2 varchar(32) inspire_isexecutedby varchar(255) inspire_endlifespanversion varchar(32) inspire_responsibleagencyname varchar(240) inspire_beginlifespanversion_2 varchar(32) inspire_endlifespanversion_2 varchar(32) inspire_localid_3 varchar(32) inspire_habitattype varchar(32) inspire_habitatclass varchar(32) inspire_representativity varchar(32) inspire_conservationstatus varchar(32) inspire_conservationstatus_2 varchar(32) inspire_beginlifespanversion_3 varchar(32) inspire_endlifespanversion_3 varchar(32) inspire_localid_4 varchar(32) inspire_regionclassification varchar(32) inspire_sitedescription varchar(255) inspire_legalexpirydate varchar(32) inspire_objectidentifier varchar(64) inspire_beginlifespanversion varchar(32) _geometry varchar(22000) inspire_gml_id_1 varchar(64) inspire_gml_id_2 varchar(64) inspire_gml_id_3 varchar(64) list_inspire_activity_line varchar(7500) list_inspire_globalassessment_line varchar(14000) list_inspire_percentageunderhabitat_line varchar(2500) # ------------------------------------------------------------------------- Lookup ___KnownFeatureTypes___ "$(DATASET_KEYWORD_FFS_1)_ProtectedSite" yes "$(DATASET_KEYWORD_POSTGIS_1)_ProtectedSite" yes "" no # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Unexpected Input Remover" INPUT FEATURE_TYPE * TEST @Lookup(___KnownFeatureTypes___,@Concatenate(&multi_reader_keyword,"_",@FeatureType())) == yes OUTPUT PASSED FEATURE_TYPE * # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Source -> Generic" INPUT FEATURE_TYPE * OUTPUT FEATURE_TYPE * @Transform(&multi_reader_type,FME_GENERIC,PRESERVE_GEOMETRY) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ProtectedSite (POSTGIS_1) Splitter" INPUT FEATURE_TYPE ProtectedSite multi_reader_keyword $(DATASET_KEYWORD_POSTGIS_1) OUTPUT FEATURE_TYPE ProtectedSite_POSTGIS_1 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "ProtectedSite (FFS_1) Splitter" INPUT FEATURE_TYPE ProtectedSite multi_reader_keyword $(DATASET_KEYWORD_FFS_1) OUTPUT FEATURE_TYPE ProtectedSite_FFS_1 DEFAULT_MACRO WB_CURRENT_CONTEXT # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "AttributesToUpper_ProtectedSite Input Input Collector" INPUT FEATURE_TYPE ProtectedSite_POSTGIS_1 OUTPUT FEATURE_TYPE AttributesToUpper_ProtectedSite_Input MACRO AttributesToUpper_WORKSPACE_NAME AttributesToUpper_ProtectedSite MACRO $(AttributesToUpper_WORKSPACE_NAME)_XFORMER_NAME AttributesToUpper_ProtectedSite MACRO $(AttributesToUpper_WORKSPACE_NAME)_SUB_DOC_NAME AttributesToUpper DEFAULT_MACRO AttributesToUpper_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(AttributesToUpper_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(AttributesToUpper_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(AttributesToUpper_WORKSPACE_NAME)_Input Input Splitter" INPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_Input" # ------------------------------------------------------------------------- Tcl2 FME_Decode procattrToUpperforeachattrFME_AttributeNamesFME_CopyAttributestringtoupperattrattr FACTORY_DEF * TeeFactory FACTORY_NAME $(AttributesToUpper_WORKSPACE_NAME)_TCL_IDsToUpper_2 INPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_Input" OUTPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_TCL_IDsToUpper_2_OUTPUT" _result @Tcl2("attrToUpper") # ------------------------------------------------------------------------- # 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 $(AttributesToUpper_WORKSPACE_NAME)_AttributeExposer INPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_TCL_IDsToUpper_2_OUTPUT" OUTPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_AttributeExposer_OUTPUT" FACTORY_DEF * TeeFactory FACTORY_NAME "$(AttributesToUpper_WORKSPACE_NAME)_Output Output Collector" INPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_AttributeExposer_OUTPUT" OUTPUT FEATURE_TYPE "$(AttributesToUpper_WORKSPACE_NAME)_Output" INCLUDE [puts {MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT_$(AttributesToUpper_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME "AttributesToUpper_ProtectedSite Output Output Renamer/Nuker" INPUT FEATURE_TYPE AttributesToUpper_ProtectedSite_Output OUTPUT FEATURE_TYPE AttributesToUpper_ProtectedSite_Output # ------------------------------------------------------------------------- Tcl2 proc AttributeTrimmer_trimmer {} { set attrs [split {list_inspire_activity_line,list_inspire_globalassessment_line,list_inspire_percentageunderhabitat_line} {,}]; set trimChars [FME_DecodeTextOrAttr {}]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set length [string length $attrVal]; if {$length > 0} { if {[string length $trimChars] == 0} { set result [string trim $attrVal]; } else { set result [string trim $attrVal $trimChars]; }; if {[string length $result] == 0 && {Yes} == {No}} { if { {trim} == {trimleft}} { set lastPos [expr $length - 1]; set result [string range $attrVal $lastPos $lastPos ]; } elseif { {trim} == {trimright}} { set result [string range $attrVal 0 0]; } else { set midPos [expr $length / 2]; set result [string range $attrVal $midPos $midPos]; }; }; FME_SetAttribute $attr $result; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME AttributeTrimmer INPUT FEATURE_TYPE AttributesToUpper_ProtectedSite_Output OUTPUT FEATURE_TYPE AttributeTrimmer_OUTPUT @Tcl2(AttributeTrimmer_trimmer) # ------------------------------------------------------------------------- # Wipe out the source setting if it was untouched from the default setting DEFAULT_MACRO Reprojector_SOURCE Read from feature INCLUDE [if { {Read from feature} == {Read from feature} } { puts {MACRO Reprojector_SOURCE} } ] FACTORY_DEF * TeeFactory FACTORY_NAME Reprojector INPUT FEATURE_TYPE AttributeTrimmer_OUTPUT INPUT FEATURE_TYPE ProtectedSite_FFS_1 OUTPUT FEATURE_TYPE Reprojector_REPROJECTED @Reproject($(Reprojector_SOURCE),$(destCoordSystem),NearestNeighbor,PreserveCells) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "HardClipper CLIPPEE Input Collector" INPUT FEATURE_TYPE Reprojector_REPROJECTED OUTPUT FEATURE_TYPE HardClipper_CLIPPEE MACRO HardClipper_WORKSPACE_NAME HardClipper MACRO $(HardClipper_WORKSPACE_NAME)_XFORMER_NAME HardClipper MACRO $(HardClipper_WORKSPACE_NAME)_MINX $(bboxWest) MACRO $(HardClipper_WORKSPACE_NAME)_MINY $(bboxSouth) MACRO $(HardClipper_WORKSPACE_NAME)_MAXX $(bboxEast) MACRO $(HardClipper_WORKSPACE_NAME)_MAXY $(bboxNorth) MACRO $(HardClipper_WORKSPACE_NAME)_BBOX_COORDSYS $(destCoordSystem) MACRO $(HardClipper_WORKSPACE_NAME)_COORDSYS EPSG:4326 MACRO $(HardClipper_WORKSPACE_NAME)_SUB_DOC_NAME HardClipper DEFAULT_MACRO HardClipper_WORKSPACE_NAME "" INCLUDE [puts {MACRO WB_OLD_CONTEXT_$(HardClipper_WORKSPACE_NAME) $(WB_CURRENT_CONTEXT)}; puts {MACRO WB_CURRENT_CONTEXT $(HardClipper_WORKSPACE_NAME)}] FACTORY_DEF * TeeFactory FACTORY_NAME "$(HardClipper_WORKSPACE_NAME)_CLIPPEE Input Splitter" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_CLIPPEE" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_CLIPPEE" # ------------------------------------------------------------------------- Tcl2 proc $(HardClipper_WORKSPACE_NAME)_Creator_CoordSysRemover {} { global FME_CoordSys; set FME_CoordSys {}; } MACRO $(HardClipper_WORKSPACE_NAME)_Creator_XML NOT_ACTIVATED MACRO $(HardClipper_WORKSPACE_NAME)_Creator_CLASSIC NOT_ACTIVATED MACRO $(HardClipper_WORKSPACE_NAME)_Creator_2D3D 2D_GEOMETRY MACRO $(HardClipper_WORKSPACE_NAME)_Creator_COORDS INCLUDE [ if { {XML Geometry} == {XML Geometry} } { puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_XML *} } ] INCLUDE [ if { {XML Geometry} == {2D Coordinate List} } { puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_2D3D 2D_GEOMETRY}; puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_CLASSIC *} } ] INCLUDE [ if { {XML Geometry} == {3D Coordinate List} } { puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_2D3D 3D_GEOMETRY}; puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_CLASSIC *} } ] INCLUDE [ if { {XML Geometry} == {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 } { error {$(HardClipper_WORKSPACE_NAME)_Creator: Coordinate List MUST have four numbers - `' is invalid}; }; set minX [lindex $splitCoords 0]; set minY [lindex $splitCoords 1]; set maxX [lindex $splitCoords 2]; set maxY [lindex $splitCoords 3]; puts "MACRO $(HardClipper_WORKSPACE_NAME)_Creator_COORDS $minX $minY $minX $maxY $maxX $maxY $maxX $minY $minX $minY"; puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_2D3D 2D_GEOMETRY}; puts {MACRO $(HardClipper_WORKSPACE_NAME)_Creator_CLASSIC *} } ] FACTORY_DEF $($(HardClipper_WORKSPACE_NAME)_Creator_XML) CreationFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_Creator_XML_Creator CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ @Geometry(FROM_ENCODED_STRING,?xmlversion=1.0encoding=US_ASCIIstandalone=no?geometryboxminCoordx=1y=1z=0maxCoordx=2y=2z=0boxgeometry) FACTORY_DEF $($(HardClipper_WORKSPACE_NAME)_Creator_CLASSIC) CreationFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_Creator_CLASSIC_Creator $($(HardClipper_WORKSPACE_NAME)_Creator_2D3D) $($(HardClipper_WORKSPACE_NAME)_Creator_COORDS) CREATE_AT_END no OUTPUT FEATURE_TYPE _____CREATED______ FACTORY_DEF * TeeFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_Creator_Cloner INPUT FEATURE_TYPE _____CREATED______ NUMBER_OF_COPIES 1 COPY_NUMBER_ATTRIBUTE _creation_instance OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_Creator_CREATED" @Tcl2($(HardClipper_WORKSPACE_NAME)_Creator_CoordSysRemover) @CoordSys($($(HardClipper_WORKSPACE_NAME)_BBOX_COORDSYS)) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_2DBoxReplacer INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_Creator_CREATED" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer_BOX" @Dimension(2) @XValue("$($(HardClipper_WORKSPACE_NAME)_MINX)",RESET) @YValue("$($(HardClipper_WORKSPACE_NAME)_MINY)") @XValue("$($(HardClipper_WORKSPACE_NAME)_MINX)") @YValue("$($(HardClipper_WORKSPACE_NAME)_MAXY)") @XValue("$($(HardClipper_WORKSPACE_NAME)_MAXX)") @YValue("$($(HardClipper_WORKSPACE_NAME)_MAXY)") @XValue("$($(HardClipper_WORKSPACE_NAME)_MAXX)") @YValue("$($(HardClipper_WORKSPACE_NAME)_MINY)") @XValue("$($(HardClipper_WORKSPACE_NAME)_MINX)") @YValue("$($(HardClipper_WORKSPACE_NAME)_MINY)") @GeometryType(fme_polygon) FACTORY_DEF * TeeFactory FACTORY_NAME "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer BOX Splitter" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer_BOX" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer_BOX_0" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer_BOX_1" # ------------------------------------------------------------------------- # Wipe out the source setting if it was untouched from the default setting DEFAULT_MACRO $(HardClipper_WORKSPACE_NAME)_reprojectBbox_SOURCE Read from feature INCLUDE [if { {Read from feature} == {Read from feature} } { puts {MACRO $(HardClipper_WORKSPACE_NAME)_reprojectBbox_SOURCE} } ] FACTORY_DEF * TeeFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_reprojectBbox INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer_BOX_0" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_reprojectBbox_REPROJECTED" @Reproject($($(HardClipper_WORKSPACE_NAME)_reprojectBbox_SOURCE),$($(HardClipper_WORKSPACE_NAME)_COORDSYS),NearestNeighbor,PreserveCells) FACTORY_DEF * TeeFactory FACTORY_NAME "$(HardClipper_WORKSPACE_NAME)_reprojectBbox REPROJECTED Splitter" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_reprojectBbox_REPROJECTED" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_reprojectBbox_REPROJECTED_0" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_reprojectBbox_REPROJECTED_1" # ------------------------------------------------------------------------- FACTORY_DEF * ClippingFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_Clipper INPUT CLIPPER FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_reprojectBbox_REPROJECTED_0" INPUT CLIPPEE FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_CLIPPEE" MULTICLIP CLIPPERS_FIRST CLIPPEE_ON_BOUNDARY INSIDE MERGE_CLIPPER_ATTRIBUTES No DO_NOT_AGGREGATE NO CLIPPER_ATTR_PREFIX "clipper_" OUTPUT INSIDE FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_Clipper_INSIDE" OUTPUT CLIPPED_INSIDE FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_Clipper_CLIPPED_INSIDE" OUTPUT EXTRA_CLIPPER FEATURE_TYPE $(HardClipper_WORKSPACE_NAME)_Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917351 $(HardClipper_WORKSPACE_NAME)_Clipper") OUTPUT NONPOLY_CLIPPER FEATURE_TYPE $(HardClipper_WORKSPACE_NAME)_Clipper__delete__ @Tcl2("FME_LogMessage fme_warn 917352 $(HardClipper_WORKSPACE_NAME)_Clipper") FACTORY_DEF * TeeFactory FACTORY_NAME $(HardClipper_WORKSPACE_NAME)_Clipper_Nuker INPUT FEATURE_TYPE $(HardClipper_WORKSPACE_NAME)_Clipper__delete__ @Log("Offending feature was:") FACTORY_DEF * TeeFactory FACTORY_NAME "$(HardClipper_WORKSPACE_NAME)_ORIGINAL_BBOX Output Collector" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_2DBoxReplacer_BOX_1" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_ORIGINAL_BBOX" FACTORY_DEF * TeeFactory FACTORY_NAME "$(HardClipper_WORKSPACE_NAME)_CLIPPER_BBOX Output Collector" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_reprojectBbox_REPROJECTED_1" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_CLIPPER_BBOX" FACTORY_DEF * TeeFactory FACTORY_NAME "$(HardClipper_WORKSPACE_NAME)_CLIPPED Output Collector" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_Clipper_INSIDE" INPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_Clipper_CLIPPED_INSIDE" OUTPUT FEATURE_TYPE "$(HardClipper_WORKSPACE_NAME)_CLIPPED" INCLUDE [puts {MACRO WB_CURRENT_CONTEXT $(WB_OLD_CONTEXT_$(HardClipper_WORKSPACE_NAME))}] FACTORY_DEF * TeeFactory FACTORY_NAME "HardClipper ORIGINAL_BBOX Output Renamer/Nuker" INPUT FEATURE_TYPE HardClipper_ORIGINAL_BBOX FACTORY_DEF * TeeFactory FACTORY_NAME "HardClipper CLIPPER_BBOX Output Renamer/Nuker" INPUT FEATURE_TYPE HardClipper_CLIPPER_BBOX FACTORY_DEF * TeeFactory FACTORY_NAME "HardClipper CLIPPED Output Renamer/Nuker" INPUT FEATURE_TYPE HardClipper_CLIPPED OUTPUT FEATURE_TYPE HardClipper_CLIPPED # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME DuplicateRemover_Match_Value_Extractor INPUT FEATURE_TYPE HardClipper_CLIPPED OUTPUT FEATURE_TYPE ___TODUPTEST___ __DUPTOCHECK__ @Concatenate(___DuplicateRemover_,fme_attribute_name,"INSPIRE_GML_ID_1") FACTORY_DEF * TestFactory FACTORY_NAME DuplicateRemover INPUT FEATURE_TYPE ___TODUPTEST___ TEST @Count(fme_attribute_name,__DUPTOCHECK__) > 0 OUTPUT FAILED FEATURE_TYPE DuplicateRemover_UNIQUE @Count(fme_attribute_name,__DUPTOCHECK__) @RemoveAttributes(__DUPTOCHECK__) # ------------------------------------------------------------------------- # ------------------------------------------------------------------------- Tcl2 proc ParameterFetcher_doFetch {} { FME_SetAttribute {_request_version} [FME_DecodeText {1.1.0}] } FACTORY_DEF * TeeFactory FACTORY_NAME ParameterFetcher INPUT FEATURE_TYPE DuplicateRemover_UNIQUE OUTPUT FEATURE_TYPE ParameterFetcher_OUTPUT @Tcl2(ParameterFetcher_doFetch) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME Tester INPUT FEATURE_TYPE ParameterFetcher_OUTPUT TEST @Value(_request_version) = 1.1.0 BOOLEAN_OPERATOR OR OUTPUT PASSED FEATURE_TYPE Tester_PASSED OUTPUT FAILED FEATURE_TYPE Tester_FAILED # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_Logger INPUT FEATURE_TYPE Tester_FAILED OUTPUT FEATURE_TYPE * @FeatureType("") @Log("ERROR GML2 Not Supported:",20,20) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- Tcl2 set {StringConcatenator_valList} [split temp,&list_inspire_globalassessment_line,temp ,]; # We use Tcl here instead of @Concatenate because Tcl is more flexible. Tcl2 proc StringConcatenator_concatter {} { global {StringConcatenator_valList}; set val {}; foreach {valEnc} [set {StringConcatenator_valList}] { append val [FME_DecodeTextOrAttr $valEnc]; }; FME_SetAttribute {list_inspire_globalassessment_line} $val; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator INPUT FEATURE_TYPE Tester_PASSED OUTPUT FEATURE_TYPE StringConcatenator_OUTPUT @Tcl2(StringConcatenator_concatter) # ------------------------------------------------------------------------- Tcl2 set {StringConcatenator_2_valList} [split temp,&list_inspire_activity_line,temp ,]; # We use Tcl here instead of @Concatenate because Tcl is more flexible. Tcl2 proc StringConcatenator_2_concatter {} { global {StringConcatenator_2_valList}; set val {}; foreach {valEnc} [set {StringConcatenator_2_valList}] { append val [FME_DecodeTextOrAttr $valEnc]; }; FME_SetAttribute {list_inspire_activity_line} $val; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_2 INPUT FEATURE_TYPE StringConcatenator_OUTPUT OUTPUT FEATURE_TYPE StringConcatenator_2_OUTPUT @Tcl2(StringConcatenator_2_concatter) # ------------------------------------------------------------------------- Tcl2 set {StringConcatenator_3_valList} [split temp,&list_inspire_percentageunderhabitat_line,temp ,]; # We use Tcl here instead of @Concatenate because Tcl is more flexible. Tcl2 proc StringConcatenator_3_concatter {} { global {StringConcatenator_3_valList}; set val {}; foreach {valEnc} [set {StringConcatenator_3_valList}] { append val [FME_DecodeTextOrAttr $valEnc]; }; FME_SetAttribute {list_inspire_percentageunderhabitat_line} $val; } FACTORY_DEF * TeeFactory FACTORY_NAME StringConcatenator_3 INPUT FEATURE_TYPE StringConcatenator_2_OUTPUT OUTPUT FEATURE_TYPE StringConcatenator_3_OUTPUT @Tcl2(StringConcatenator_3_concatter) # ------------------------------------------------------------------------- FACTORY_DEF * XQueryFactory FACTORY_NAME XMLTemplater INPUT SOURCE_DOCUMENT FEATURE_TYPE StringConcatenator_3_OUTPUT XQUERY_FILE "$(FME_MF_DIR)protectedSites_featureTemplate_v6.2.xml" MODE SINGLE_FEATURE EXTRACT_MODE YES RESULT_ATTR _features XML_TEMPLATER_XFORMER YES OUTPUT QUERY_RESULTS FEATURE_TYPE XMLTemplater_OUTPUT OUTPUT INVALID FEATURE_TYPE XMLTemplater_INVALID FACTORY_DEF * TeeFactory FACTORY_NAME "XMLTemplater OUTPUT Splitter" INPUT FEATURE_TYPE XMLTemplater_OUTPUT OUTPUT FEATURE_TYPE XMLTemplater_OUTPUT_0 OUTPUT FEATURE_TYPE XMLTemplater_OUTPUT_1 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_BadXML_Feature_Logger INPUT FEATURE_TYPE XMLTemplater_INVALID OUTPUT FEATURE_TYPE * @FeatureType("") @Log("Invalid XML from Feature Templater:",20,2) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_BadXML_Feature_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc StringReplacer_replacer {} { set attrs [split \"_features\" {,}]; set findValue [FME_DecodeTextOrAttr {temp}]; set replaceValue [FME_DecodeTextOrAttr {}]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set length [string length $attrVal]; if {$length > 0} { if {{no} == {yes}} { FME_SetAttribute $attr [regsub $(casemac) -all $findValue [FME_GetAttribute $attr] $replaceValue]; } else { FME_SetAttribute $attr [string map $(casemac) [list $findValue $replaceValue] [FME_GetAttribute $attr]]; }; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer INPUT FEATURE_TYPE XMLTemplater_OUTPUT_1 OUTPUT FEATURE_TYPE StringReplacer_OUTPUT @Tcl2(StringReplacer_replacer) # ------------------------------------------------------------------------- MACRO casemac INCLUDE [ if { {no} == {no} } { puts {MACRO casemac -nocase}} ] Tcl2 proc StringReplacer_2_replacer {} { set attrs [split \"_features\" {,}]; set findValue [FME_DecodeTextOrAttr {temp}]; set replaceValue [FME_DecodeTextOrAttr {}]; foreach attr $attrs { set attrVal [FME_GetAttribute $attr]; set length [string length $attrVal]; if {$length > 0} { if {{no} == {yes}} { FME_SetAttribute $attr [regsub $(casemac) -all $findValue [FME_GetAttribute $attr] $replaceValue]; } else { FME_SetAttribute $attr [string map $(casemac) [list $findValue $replaceValue] [FME_GetAttribute $attr]]; }; }; }; } FACTORY_DEF * TeeFactory FACTORY_NAME StringReplacer_2 INPUT FEATURE_TYPE StringReplacer_OUTPUT OUTPUT FEATURE_TYPE StringReplacer_2_OUTPUT @Tcl2(StringReplacer_2_replacer) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper INPUT FEATURE_TYPE StringReplacer_2_OUTPUT OUTPUT FEATURE_TYPE AttributeKeeper_OUTPUT @KeepAttributes(_features,fme_regexp_match,^fme_) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME ListBuilder_fme_type_remover INPUT FEATURE_TYPE AttributeKeeper_OUTPUT OUTPUT FEATURE_TYPE ListBuilder_no_fme_type @RemoveAttributes(fme_type,fme_geometry) FACTORY_DEF * ListFactory FACTORY_NAME ListBuilder INPUT FEATURE_TYPE ListBuilder_no_fme_type LIST_NAME _list{} OUTPUT LIST FEATURE_TYPE ListBuilder_OUTPUT # ------------------------------------------------------------------------- # 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_3 INPUT FEATURE_TYPE ListBuilder_OUTPUT OUTPUT FEATURE_TYPE AttributeExposer_3_OUTPUT # ------------------------------------------------------------------------- FACTORY_DEF * XQueryFactory FACTORY_NAME XMLTemplater_dataSet INPUT SOURCE_DOCUMENT FEATURE_TYPE AttributeExposer_3_OUTPUT XQUERY_FILE "$(FME_MF_DIR)protectedSites_datasetTemplate_v6.2.xml" MODE SINGLE_FEATURE EXTRACT_MODE YES RESULT_ATTR text_line_data XML_TEMPLATER_XFORMER YES OUTPUT QUERY_RESULTS FEATURE_TYPE XMLTemplater_dataSet_OUTPUT OUTPUT INVALID FEATURE_TYPE XMLTemplater_dataSet_INVALID FACTORY_DEF * TeeFactory FACTORY_NAME "XMLTemplater_dataSet OUTPUT Splitter" INPUT FEATURE_TYPE XMLTemplater_dataSet_OUTPUT OUTPUT FEATURE_TYPE XMLTemplater_dataSet_OUTPUT_0 OUTPUT FEATURE_TYPE XMLTemplater_dataSet_OUTPUT_1 # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_5 INPUT FEATURE_TYPE XMLTemplater_dataSet_INVALID OUTPUT FEATURE_TYPE AttributeKeeper_5_OUTPUT @KeepAttributes(fme_feature_type,fme_regexp_match,^fme_) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_BadXML_Dataset_Logger INPUT FEATURE_TYPE AttributeKeeper_5_OUTPUT OUTPUT FEATURE_TYPE * @FeatureType("") @Log("Invalid XML from Dataset Templater:",20,2) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_BadXML_Dataset_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- FACTORY_DEF * XMLValidationFactory FACTORY_NAME XMLValidator_2 INPUT INPUT FEATURE_TYPE XMLTemplater_dataSet_OUTPUT_1 MODE SCHEMA XML_TEXT_ATTR "text_line_data" LIST_ATTR _xml_error EXTERNAL_SCHEMA_FILE "C:\Projects\Inspire\ProtectedAreas\Source\Schema\ProtectedSitesFull.xsd" OUTPUT PASSED FEATURE_TYPE XMLValidator_2_PASSED OUTPUT FAILED FEATURE_TYPE XMLValidator_2_FAILED # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_4 INPUT FEATURE_TYPE XMLValidator_2_FAILED OUTPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT @KeepAttributes(fme_feature_type,fme_regexp_match,^fme_) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Dataset_FAILED_Logger INPUT FEATURE_TYPE AttributeKeeper_4_OUTPUT OUTPUT FEATURE_TYPE * @FeatureType("") @Log("Dataset invalidated:",20,2) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Dataset_FAILED_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_3 INPUT FEATURE_TYPE XMLValidator_2_PASSED OUTPUT FEATURE_TYPE AttributeKeeper_3_OUTPUT @KeepAttributes(fme_feature_type,fme_regexp_match,^fme_) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Dataset_PASSED_Logger INPUT FEATURE_TYPE AttributeKeeper_3_OUTPUT OUTPUT FEATURE_TYPE * @FeatureType("") @Log("Dataset Validated:",20,2) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Dataset_PASSED_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- FACTORY_DEF * XMLValidationFactory FACTORY_NAME XMLValidator INPUT INPUT FEATURE_TYPE XMLTemplater_OUTPUT_0 MODE SYNTAX XML_TEXT_ATTR "_features" LIST_ATTR _xml_error OUTPUT PASSED FEATURE_TYPE XMLValidator_PASSED OUTPUT FAILED FEATURE_TYPE XMLValidator_FAILED # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Feature_FAILED_Logger INPUT FEATURE_TYPE XMLValidator_FAILED OUTPUT FEATURE_TYPE * @FeatureType("") @Log("Feature invalidated:",20,2) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Feature_FAILED_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME AttributeKeeper_2 INPUT FEATURE_TYPE XMLValidator_PASSED OUTPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT @KeepAttributes(INSPIRE_SITEDESCRIPTION,INSPIRE_SITEIDENTIFIER,INSPIRE_SITENAME,fme_regexp_match,^fme_) # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Feature_PASSED_Logger INPUT FEATURE_TYPE AttributeKeeper_2_OUTPUT OUTPUT FEATURE_TYPE * @FeatureType("") @Log("Feature validated:",20,2) @FeatureType(__NUKE_LOGGED__) FACTORY_DEF * TeeFactory FACTORY_NAME Logger_XMLValidator_Feature_PASSED_Nuker INPUT FEATURE_TYPE __NUKE_LOGGED__ # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "XMLTemplater_dataSet_OUTPUT_0 -> text_line Correlator" INPUT FEATURE_TYPE XMLTemplater_dataSet_OUTPUT_0 OUTPUT FEATURE_TYPE __GO_TO_FINAL_OUTPUT_ROUTER__ @Transform(FME_GENERIC,TEXTLINE) @SupplyAttributes(__wb_out_feat_type__,text_line) # ------------------------------------------------------------------------- FACTORY_DEF * TestFactory FACTORY_NAME "Final Output Feature Type Router" INPUT FEATURE_TYPE * TEST @Value(__wb_out_feat_type__) != "" OUTPUT PASSED FEATURE_TYPE * @FeatureType(@Value(__wb_out_feat_type__)) OUTPUT FAILED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 {@Value(fme_template_feature_type)} 818060 818061 fme_warn") # ------------------------------------------------------------------------- FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__