@startuml

enum DBMSType {
ORACLE
MYSQL
}

enum ConnectionType {
JDBC
LDAP
}

class ConfigConnectionBean {
-String id
-String ress
-String host
-int port
-String user
-String bind
-String pass
-String db
}

class ConfigGlobalsBean {
-int maxExecTime
}

class ConfigTaskBean {
-String name
-boolean skipReadErrors
-boolean skipEntryDelete
}

class ConfigOpLimitsBean {
	-int insert
	-int update
	-int delete
}

enum SourceKind {
FIXED_CSV
FIXED_CSV_SORTED
LDAP
SQL
}

enum DestKind {
LDAP
}


enum MVDataCombineMode {
PRIMARY_SOURCE
MERGE_APPEND
MERGE_REPLACE
OVERRIDE
}

class ConfigSourceBean {
-String name
-String conn
-String query
-String path
-String attr
-String base
-int lookahead
}

class ConfigDestBean {
-String name
-String conn
-String attr
-String base
-int lookahead
}

SSSync *-- "confMain (1)" ConfigRootBean
SSSync *-- "confConn (1)" ConfigConnectionsBean

ConfigRootBean *-- "globals (1)" ConfigGlobalsBean
ConfigRootBean *-- "tasks (*)" ConfigTaskBean

ConfigConnectionsBean *-- "connections (*)" ConfigConnectionBean

ConfigConnectionBean *-- "dbms (1)" DBMSType
ConfigConnectionBean *-- "type (1)" ConnectionType

ConfigTaskBean *-- "opLimits (1)" ConfigOpLimitsBean
ConfigTaskBean *-- "sources (*)" ConfigSourceBean
ConfigTaskBean *-- "destination (1)" ConfigDestBean

ConfigSourceBean *-- "kind (1)" SourceKind
ConfigSourceBean *-- "mode (1)" MVDataCombineMode

ConfigDestBean *-- "kind (1)" DestKind

@enduml