Template Scripts for SmartFramework data import/export

Overview

New functionality to export and import the SmartComponent Library framework and repository data in a more developer (merge) friendly way.

Below is a zip file containing all of this new functionality:

 

The following folders are contained in this zip file:

  • Ant

    • Contains three Ant scripts:

      • export-repository-data.xml

        • Exports the SmartDB data

      • import-repository-data.xml

        • Imports the SmartDB data

      • repository-data.xml

        • Contains generic macros

  • Config

    • Contains the following properties file:

      • repository-data.properties

  • Definition

    • Contains all the datasets in json files – currently fifteen

    • Import

      • Contains the Import specific dataset - currently one

 

Configuration

The following properties file holds all the configuration values:

DataVersioningScripts/config/repository-data.properties

 

The rest of this section shows values in this file that can be customized:

 

The base folder for both the Import and Export processes, is specified by the following value:

Repository.Export.Location=C:/Work/RepositoryData

The relative paths for each dataset have been specified under the Datasets section.

 

Below are a list of OpenEdge values:

#
# Internationalization
#
Default.CodePage=UTF-8
Default.CpInternal=${Default.CodePage}
Default.CpStream=${Default.CodePage}
Default.Collation=ICU-UCA
Default.Collation.Casing=Basic
Default.Number.Seperator=44
Default.Decimal.Seperator=46
Default.Database.Creation.CodePage=UTF
Default.Date.Format=dmy

 

There are also run options that can be reconfigured, but bear in mind Consultingwerk have already optimised these values:

# Max number of threads to import or export
# More threads should result in faster import and export and of course more intensive
# Machine utilization
Repository.Export.Max.Threads=10

 

How to Launch

Import

The import routine is launched from an operating system command prompt and runs the following Ant file:

Ant/import-repository-data.xml

 

Sample command line - Local database connection

SET PROGRESS=OpenEdge122_64 SET ANT_HOME=C:\Progress\%PROGRESS%\ant %ANT_HOME%\bin\ant -f Ant/import-repository-data.xml -lib C:\Progress\%PROGRESS%\pct\PCT.jar -Dsmartdb="smartdb" -Dsmartdbdir="C:/Work/SmartComponents4NET/122_64/DB/SmartDB"

Sample command line - Remote database connection

SET PROGRESS=OpenEdge122_64 SET ANT_HOME=C:\Progress\%PROGRESS%\ant %ANT_HOME%\bin\ant -f Ant/import-repository-data.xml -lib C:\Progress\%PROGRESS%\pct\PCT.jar -Dsmartdb="smartdb" -Dsmartdbhost="localhost" -Dsmartdbport="52745"

 

Alternatively you can specify the database details in the properties file described under Configuration. Simply uncomment lines 22 to 25 and pay heed to the comment guidance above those lines.

Sample command line, using a properties file

SET PROGRESS=OpenEdge122_64 SET ANT_HOME=C:\Progress\%PROGRESS%\ant %ANT_HOME%\bin\ant -f Ant/import-repository-data.xml -lib C:\Progress\%PROGRESS%\pct\PCT.jar -propertyfile config/repository-data.properties

 

There is also the following sample script in the zip file that can be used:

Import.cmd

 

Export

The export routine is launched from an operating system command prompt and runs the following Ant file:

Ant/export-repository-data.xml

 

Sample command line - Local database connection

SET PROGRESS=OpenEdge122_64 SET ANT_HOME=C:\Progress\%PROGRESS%\ant %ANT_HOME%\bin\ant -f Ant/export-repository-data.xml -lib C:\Progress\%PROGRESS%\pct\PCT.jar -Dsmartdb="smartdb" -Dsmartdbdir="C:/Work/SmartComponents4NET/122_64/DB/SmartDB"

Sample command line - Remote database connection

SET PROGRESS=OpenEdge122_64 SET ANT_HOME=C:\Progress\%PROGRESS%\ant %ANT_HOME%\bin\ant -f Ant/export-repository-data.xml -lib C:\Progress\%PROGRESS%\pct\PCT.jar -Dsmartdb="smartdb" -Dsmartdbhost="localhost" -Dsmartdbport="52745"

 

Alternatively you can specify the database details in the properties file described under Configuration. Simply uncomment lines 22 to 25 and pay heed to the comment guidance above those lines.

Sample command line, using a properties file

SET PROGRESS=OpenEdge122_64 SET ANT_HOME=C:\Progress\%PROGRESS%\ant %ANT_HOME%\bin\ant -f Ant/export-repository-data.xml -lib C:\Progress\%PROGRESS%\pct\PCT.jar -propertyfile config/repository-data.properties

 

There is also the following sample script in the zip file that can be used:

Export.cmd

 

 

Both Import and Export routines have the following parameters that can be passed into the corresponding ant script:

Parameter

Purpose

Condition

-Dsmartdb

Database Name

Mandatory

Validation error:

You must supply a database name

-Dsmartdbdir

Database location

Mandatory if local Database

Validation error:

You must supply a database connection to the database

-Dsmartdbhost

Remote Database Host

Mandatory if Remote Database

Validation error:

You must supply a database connection to the database

-Dsmartdbport

Remote Database Port

 

If all four parameters are parsed then you will receive the following Validation error:

Cannot use local and remote databases simultaneously

 

Datasets

The following datasets are located in the Definitions folder:

Attachments.json

Files are located in the Attachment folder, and tables used are:

  • eSmartAttachment

    • Grouped by AttachmentGUID

  • eSmartAttachmentRole

    • Grouped by AttachmentRoleGUID

BusinessEntities.json

Files are located in the BusinessEntity folder and corresponding subfolders for export, and tables used are:

  • eSmartBusinessEntity

    • Grouped by BusinessEntityPackage and BusinessEntityName

  • eEntityFieldMapping

    • Grouped by EntityName and EntityFieldMappingGuid

  • eSmartEntityTableMapping

    • Grouped by BusinessEntityPackage, BusinessEntityName and EntityTableMappingGuid

  • eSmartKeyFieldAssignmentType

Comments.json

Files are located in the Comments folder, and tables used are:

eSmartCommentRole

Configuration.json

Files are located in the Configuration folder, and tables used are:

  • eSmartConfigurationValue

  • eSmartUiType

Database.json

Files are located in the Database folder and corresponding subfolders for export, and tables used are:

  • eSmartRelation

    • Grouped by ParentRoleDescription, ChildRoleDescription and RelationGuid

  • eSmartTable

    • Grouped by DatabaseName and TableName

  • eSmartDeletion

    • Grouped by DeletionTable and DeletionGuid

Languages.json

Files are located in the Languages folder, and tables used are:

eSmartLanguage

Menus.json

Files are located in the Menu folder, and tables used are:

  • eSmartMenuStyle

  • eSmartMenuGroup

MenuStyles.json

Files are located in the Menu folder, and tables used are:

eSmartMenuStyle

Messages.json

Files are located in the Message folder and corresponding subfolders for export, and tables used are:

  • eSmartMessage

    • Grouped by MessageGroup, LanguageGuid and MessageNumber

Products.json

Files are located in the Menu folder, and tables used are:

  • eSmartProduct

  • eSmartModule

Repository.json

Files are located in the Repository folder, and tables used are:

  • eSmartAttribute

  • eSmartAttributeGroup

  • eSmartAttributeValue

  • eSmartClassType

  • eSmartLinkType

  • eSmartObjectType

  • eSmartSupportedLink

  • eSmartSupportedInstanceObjType

  • eSmartCustomizationType

  • eSmartKeyFieldAssignmentType

  • eSmartValueList

Scheduler.json

Files are located in the Scheduler folder, and tables used are:

eSmartSchedulerJob

Security.json

Files are located in the Security folder, and tables used are:

  • eSmartSecurityRealm

  • eSmartSecurityToken

  • eSmartToolbarSecurityItem

  • eSmartSecurityAssignment

  • eSmartSecurityObject

Translations.json

Files are located in the Translations folder and corresponding subfolders for export, and tables used are:

  • eSmartTranslation

  • eSmartUITranslation

UserGroupCompany.json

Files are located in the UsersGroupsCompanies folder, and tables used are:

  • eSmartGroup

  • eSmartParentGroup

  • eSmartLoginCompany