summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Pouzenc <ludovic@pouzenc.fr>2014-11-30 17:20:49 +0100
committerLudovic Pouzenc <ludovic@pouzenc.fr>2015-04-14 07:44:59 +0200
commit3396b5beb6127098c6c9cac5fd3102efd208bbd3 (patch)
tree17556064197ca0130e77a120e1b83effb49cb457
parent695373bb62f87ad8de51d72ed8c78c4acc8af3e0 (diff)
downloadsssync-3396b5beb6127098c6c9cac5fd3102efd208bbd3.tar.gz
sssync-3396b5beb6127098c6c9cac5fd3102efd208bbd3.tar.bz2
sssync-3396b5beb6127098c6c9cac5fd3102efd208bbd3.zip
Tuning of existing diagrams, adding an activity diagram to show
the global dataflow
-rw-r--r--doc/diagrams/config.plant2
-rw-r--r--doc/diagrams/config.svg2
-rw-r--r--doc/diagrams/dataflow.plant31
-rw-r--r--doc/diagrams/dataflow.svg1
-rw-r--r--doc/diagrams/example1_flow.diabin1568 -> 0 bytes
-rw-r--r--doc/diagrams/example1_flow.svg69
-rw-r--r--doc/diagrams/main.plant27
-rw-r--r--doc/diagrams/main.svg2
8 files changed, 56 insertions, 78 deletions
diff --git a/doc/diagrams/config.plant b/doc/diagrams/config.plant
index 24bd135..2c2b569 100644
--- a/doc/diagrams/config.plant
+++ b/doc/diagrams/config.plant
@@ -80,7 +80,7 @@ SSSync *-- "confConn (1)" ConfigConnectionsBean
ConfigRootBean *-- "globals (1)" ConfigGlobalsBean
ConfigRootBean *-- "tasks (*)" ConfigTaskBean
-ConfigConnectionsBean *-- "connections (1)" ConfigConnectionBean
+ConfigConnectionsBean *-- "connections (*)" ConfigConnectionBean
ConfigConnectionBean *-- "dbms (1)" DBMSType
ConfigConnectionBean *-- "type (1)" ConnectionType
diff --git a/doc/diagrams/config.svg b/doc/diagrams/config.svg
index 7554a89..e60912f 100644
--- a/doc/diagrams/config.svg
+++ b/doc/diagrams/config.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="873pt" style="width:857px;height:873px;" version="1.1" viewBox="0 0 857 873" width="857pt"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="537" y="559"/><ellipse cx="552" cy="575" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M556.1094,581 L548.3906,581 L548.3906,568.6094 L556.1094,568.6094 L556.1094,570.7656 L550.8438,570.7656 L550.8438,573.4375 L555.6094,573.4375 L555.6094,575.5938 L550.8438,575.5938 L550.8438,578.8438 L556.1094,578.8438 L556.1094,581 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="566" y="579.1543">DBMSType</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="538" x2="632" y1="591" y2="591"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="35" x="543" y="605.2104">oracle</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="34" x="543" y="618.0151">mysql</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="543" y="630.8198">/*derby*/</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="538" x2="632" y1="637.4141" y2="637.4141"/><rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="716" y="565"/><ellipse cx="731" cy="581" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M735.1094,587 L727.3906,587 L727.3906,574.6094 L735.1094,574.6094 L735.1094,576.7656 L729.8438,576.7656 L729.8438,579.4375 L734.6094,579.4375 L734.6094,581.5938 L729.8438,581.5938 L729.8438,584.8438 L735.1094,584.8438 L735.1094,587 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="745" y="585.1543">ConnectionType</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="717" x2="847" y1="597" y2="597"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="23" x="722" y="611.2104">jdbc</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="722" y="624.0151">ldap</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="717" x2="847" y1="630.6094" y2="630.6094"/><rect fill="#FEFECE" filter="url(#f1)" height="150.4375" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="517" y="288"/><ellipse cx="532" cy="304" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M534.9688,309.6406 Q534.3906,309.9375 533.75,310.0859 Q533.1094,310.2344 532.4063,310.2344 Q529.9063,310.2344 528.5859,308.5859 Q527.2656,306.9375 527.2656,303.8125 Q527.2656,300.6875 528.5859,299.0313 Q529.9063,297.375 532.4063,297.375 Q533.1094,297.375 533.7578,297.5313 Q534.4063,297.6875 534.9688,297.9844 L534.9688,300.7031 Q534.3438,300.125 533.75,299.8516 Q533.1563,299.5781 532.5313,299.5781 Q531.1875,299.5781 530.5,300.6484 Q529.8125,301.7188 529.8125,303.8125 Q529.8125,305.9063 530.5,306.9766 Q531.1875,308.0469 532.5313,308.0469 Q533.1563,308.0469 533.75,307.7734 Q534.3438,307.5 534.9688,306.9219 L534.9688,309.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="142" x="546" y="308.1543">ConfigConnectionBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="518" x2="690" y1="320" y2="320"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="328.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="537" y="334.2104">String id</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="341.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="537" y="347.0151">String ress</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="354.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="537" y="359.8198">String host</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="367.3164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="537" y="372.6245">int port</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="380.1211"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="537" y="385.4292">String user</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="392.9258"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="537" y="398.2339">String bind</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="405.7305"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="537" y="411.0386">String pass</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="525" y="418.5352"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="537" y="423.8433">String db</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="518" x2="690" y1="430.4375" y2="430.4375"/><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="39" y="333"/><ellipse cx="54" cy="349" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M56.9688,354.6406 Q56.3906,354.9375 55.75,355.0859 Q55.1094,355.2344 54.4063,355.2344 Q51.9063,355.2344 50.5859,353.5859 Q49.2656,351.9375 49.2656,348.8125 Q49.2656,345.6875 50.5859,344.0313 Q51.9063,342.375 54.4063,342.375 Q55.1094,342.375 55.7578,342.5313 Q56.4063,342.6875 56.9688,342.9844 L56.9688,345.7031 Q56.3438,345.125 55.75,344.8516 Q55.1563,344.5781 54.5313,344.5781 Q53.1875,344.5781 52.5,345.6484 Q51.8125,346.7188 51.8125,348.8125 Q51.8125,350.9063 52.5,351.9766 Q53.1875,353.0469 54.5313,353.0469 Q55.1563,353.0469 55.75,352.7734 Q56.3438,352.5 56.9688,351.9219 L56.9688,354.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="68" y="353.1543">ConfigGlobalsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="40" x2="187" y1="365" y2="365"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="47" y="373.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="95" x="59" y="379.2104">int maxExecTime</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="40" x2="187" y1="385.8047" y2="385.8047"/><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="272" y="320"/><ellipse cx="300.5" cy="336" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M303.4688,341.6406 Q302.8906,341.9375 302.25,342.0859 Q301.6094,342.2344 300.9063,342.2344 Q298.4063,342.2344 297.0859,340.5859 Q295.7656,338.9375 295.7656,335.8125 Q295.7656,332.6875 297.0859,331.0313 Q298.4063,329.375 300.9063,329.375 Q301.6094,329.375 302.2578,329.5313 Q302.9063,329.6875 303.4688,329.9844 L303.4688,332.7031 Q302.8438,332.125 302.25,331.8516 Q301.6563,331.5781 301.0313,331.5781 Q299.6875,331.5781 299,332.6484 Q298.3125,333.7188 298.3125,335.8125 Q298.3125,337.9063 299,338.9766 Q299.6875,340.0469 301.0313,340.0469 Q301.6563,340.0469 302.25,339.7734 Q302.8438,339.5 303.4688,338.9219 L303.4688,341.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="317.5" y="340.1543">ConfigTaskBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="273" x2="433" y1="352" y2="352"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="280" y="360.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="292" y="366.2104">String name</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="280" y="373.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="292" y="379.0151">boolean skipReadErrors</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="280" y="386.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="292" y="391.8198">boolean skipEntryDelete</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="273" x2="433" y1="398.4141" y2="398.4141"/><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="31" y="559"/><ellipse cx="46" cy="575" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M48.9688,580.6406 Q48.3906,580.9375 47.75,581.0859 Q47.1094,581.2344 46.4063,581.2344 Q43.9063,581.2344 42.5859,579.5859 Q41.2656,577.9375 41.2656,574.8125 Q41.2656,571.6875 42.5859,570.0313 Q43.9063,568.375 46.4063,568.375 Q47.1094,568.375 47.7578,568.5313 Q48.4063,568.6875 48.9688,568.9844 L48.9688,571.7031 Q48.3438,571.125 47.75,570.8516 Q47.1563,570.5781 46.5313,570.5781 Q45.1875,570.5781 44.5,571.6484 Q43.8125,572.7188 43.8125,574.8125 Q43.8125,576.9063 44.5,577.9766 Q45.1875,579.0469 46.5313,579.0469 Q47.1563,579.0469 47.75,578.7734 Q48.3438,578.5 48.9688,577.9219 L48.9688,580.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="123" x="60" y="579.1543">ConfigOpLimitsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="185" y1="591" y2="591"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="39" y="599.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="50" x="51" y="605.2104">int insert</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="39" y="612.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="51" y="618.0151">int update</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="39" y="625.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="51" y="630.8198">int delete</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="185" y1="637.4141" y2="637.4141"/><rect fill="#FEFECE" filter="url(#f1)" height="99.2188" style="stroke: #A80036; stroke-width: 1.5;" width="102" x="193" y="765"/><ellipse cx="208" cy="781" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M212.1094,787 L204.3906,787 L204.3906,774.6094 L212.1094,774.6094 L212.1094,776.7656 L206.8438,776.7656 L206.8438,779.4375 L211.6094,779.4375 L211.6094,781.5938 L206.8438,781.5938 L206.8438,784.8438 L212.1094,784.8438 L212.1094,787 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="222" y="785.1543">SourceKind</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="194" x2="294" y1="797" y2="797"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="19" x="199" y="811.2104">csv</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="24" x="199" y="824.0151">ldap</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="199" y="836.8198">sorted_csv</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="17" x="199" y="849.6245">sql</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="194" x2="294" y1="856.2188" y2="856.2188"/><rect fill="#FEFECE" filter="url(#f1)" height="99.2188" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="378" y="765"/><ellipse cx="393" cy="781" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M397.1094,787 L389.3906,787 L389.3906,774.6094 L397.1094,774.6094 L397.1094,776.7656 L391.8438,776.7656 L391.8438,779.4375 L396.6094,779.4375 L396.6094,781.5938 L391.8438,781.5938 L391.8438,784.8438 L397.1094,784.8438 L397.1094,787 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="407" y="785.1543">MVDataCombineMode</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="379" x2="545" y1="797" y2="797"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="100" x="384" y="811.2104">PRIMARY_SOURCE</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="89" x="384" y="824.0151">MERGE_APPEND</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="94" x="384" y="836.8198">MERGE_REPLACE</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="55" x="384" y="849.6245">OVERRIDE</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="379" x2="545" y1="856.2188" y2="856.2188"/><rect fill="#FEFECE" filter="url(#f1)" height="124.8281" style="stroke: #A80036; stroke-width: 1.5;" width="166" x="270" y="540"/><ellipse cx="285" cy="556" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M287.9688,561.6406 Q287.3906,561.9375 286.75,562.0859 Q286.1094,562.2344 285.4063,562.2344 Q282.9063,562.2344 281.5859,560.5859 Q280.2656,558.9375 280.2656,555.8125 Q280.2656,552.6875 281.5859,551.0313 Q282.9063,549.375 285.4063,549.375 Q286.1094,549.375 286.7578,549.5313 Q287.4063,549.6875 287.9688,549.9844 L287.9688,552.7031 Q287.3438,552.125 286.75,551.8516 Q286.1563,551.5781 285.5313,551.5781 Q284.1875,551.5781 283.5,552.6484 Q282.8125,553.7188 282.8125,555.8125 Q282.8125,557.9063 283.5,558.9766 Q284.1875,560.0469 285.5313,560.0469 Q286.1563,560.0469 286.75,559.7734 Q287.3438,559.5 287.9688,558.9219 L287.9688,561.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="134" x="299" y="560.1543">ConfigSrcOrDestBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="271" x2="435" y1="572" y2="572"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="580.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="290" y="586.2104">String name</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="593.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="64" x="290" y="599.0151">String conn</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="606.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="290" y="611.8198">String query</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="619.3164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="290" y="624.6245">String path</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="632.1211"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="290" y="637.4292">String attr</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="644.9258"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="290" y="650.2339">String base</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="271" x2="435" y1="656.8281" y2="656.8281"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="437" y="8"/><ellipse cx="452" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M454.9688,29.6406 Q454.3906,29.9375 453.75,30.0859 Q453.1094,30.2344 452.4063,30.2344 Q449.9063,30.2344 448.5859,28.5859 Q447.2656,26.9375 447.2656,23.8125 Q447.2656,20.6875 448.5859,19.0313 Q449.9063,17.375 452.4063,17.375 Q453.1094,17.375 453.7578,17.5313 Q454.4063,17.6875 454.9688,17.9844 L454.9688,20.7031 Q454.3438,20.125 453.75,19.8516 Q453.1563,19.5781 452.5313,19.5781 Q451.1875,19.5781 450.5,20.6484 Q449.8125,21.7188 449.8125,23.8125 Q449.8125,25.9063 450.5,26.9766 Q451.1875,28.0469 452.5313,28.0469 Q453.1563,28.0469 453.75,27.7734 Q454.3438,27.5 454.9688,26.9219 L454.9688,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="466" y="28.1543">SSSync</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="438" x2="513" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="438" x2="513" y1="48" y2="48"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="287" y="138"/><ellipse cx="302" cy="154" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M304.9688,159.6406 Q304.3906,159.9375 303.75,160.0859 Q303.1094,160.2344 302.4063,160.2344 Q299.9063,160.2344 298.5859,158.5859 Q297.2656,156.9375 297.2656,153.8125 Q297.2656,150.6875 298.5859,149.0313 Q299.9063,147.375 302.4063,147.375 Q303.1094,147.375 303.7578,147.5313 Q304.4063,147.6875 304.9688,147.9844 L304.9688,150.7031 Q304.3438,150.125 303.75,149.8516 Q303.1563,149.5781 302.5313,149.5781 Q301.1875,149.5781 300.5,150.6484 Q299.8125,151.7188 299.8125,153.8125 Q299.8125,155.9063 300.5,156.9766 Q301.1875,158.0469 302.5313,158.0469 Q303.1563,158.0469 303.75,157.7734 Q304.3438,157.5 304.9688,156.9219 L304.9688,159.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="316" y="158.1543">ConfigRootBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="288" x2="418" y1="170" y2="170"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="288" x2="418" y1="178" y2="178"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="507" y="138"/><ellipse cx="522" cy="154" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M524.9688,159.6406 Q524.3906,159.9375 523.75,160.0859 Q523.1094,160.2344 522.4063,160.2344 Q519.9063,160.2344 518.5859,158.5859 Q517.2656,156.9375 517.2656,153.8125 Q517.2656,150.6875 518.5859,149.0313 Q519.9063,147.375 522.4063,147.375 Q523.1094,147.375 523.7578,147.5313 Q524.4063,147.6875 524.9688,147.9844 L524.9688,150.7031 Q524.3438,150.125 523.75,149.8516 Q523.1563,149.5781 522.5313,149.5781 Q521.1875,149.5781 520.5,150.6484 Q519.8125,151.7188 519.8125,153.8125 Q519.8125,155.9063 520.5,156.9766 Q521.1875,158.0469 522.5313,158.0469 Q523.1563,158.0469 523.75,157.7734 Q524.3438,157.5 524.9688,156.9219 L524.9688,159.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="536" y="158.1543">ConfigConnectionsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="508" x2="687" y1="170" y2="170"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="508" x2="687" y1="178" y2="178"/><path d="M443.359,65.716 C422.099,88.37 394.593,117.68 375.54,137.982 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="452.339,56.147,445.3163,57.7847,444.127,64.897,451.1497,63.2594,452.339,56.147" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="357.7452" y="126.7123">confMain (1)</text><path d="M506.901,65.716 C528.334,88.37 556.067,117.68 575.275,137.982 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="497.847,56.147,499.0656,63.2544,506.095,64.8631,504.8764,57.7557,497.847,56.147" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="526.329" y="126.9396">confConn (1)</text><path d="M314.11,194.707 C268.665,232.926 194.08,295.652 149.942,332.772 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="324.171,186.245,317.0044,187.0452,314.9867,193.9683,322.1533,193.1681,324.171,186.245" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="142.4136" y="321.8267">globals (1)</text><path d="M353,199.321 C353,233.398 353,283.776 353,319.63 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="353,186.245,349,192.245,353,198.245,357,192.245,353,186.245" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="55" x="329.6335" y="308.829">tasks (*)</text><path d="M599.116,199.385 C599.855,224.13 600.849,257.451 601.748,287.565 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="598.724,186.245,594.9045,192.3615,599.0814,198.2397,602.9009,192.1232,598.724,186.245" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="555.779" y="276.9841">connections (1)</text><path d="M596.96,451.557 C594.051,488.145 590.812,528.888 588.439,558.737 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="598.014,438.293,593.5512,443.9572,597.0633,450.2553,601.5261,444.591,598.014,438.293" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="564.78" y="548.0227">dbms (1)</text><path d="M667.918,448.822 C697.57,488.637 731.267,533.882 754.305,564.814 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="660.076,438.293,660.4523,445.4943,667.2443,447.9167,666.8681,440.7154,660.076,438.293" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="723.4758" y="553.9235">type (1)</text><path d="M299.72,415.188 C255.763,458.245 194.142,518.603 152.963,558.938 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="309.096,406.004,302.0107,407.3451,300.5235,414.4011,307.6088,413.0601,309.096,406.004" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="136.9088" y="548.2206">opLimits (1)</text><path d="M341.991,419.271 C339.793,455.379 339.676,502.305 341.641,539.561 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="342.936,406.004,338.5195,411.7044,342.0828,417.9736,346.4993,412.2732,342.936,406.004" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="295.5114" y="513.9715">sources (*)</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="345.5114" y="529.1043"/><path d="M364.656,419.271 C366.984,455.379 367.108,502.305 365.027,539.561 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="363.656,406.004,360.1183,412.2877,364.5579,417.9701,368.0956,411.6864,363.656,406.004" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="0" x="374.1738" y="513.9947"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="341.6738" y="529.1275">destination (1)</text><path d="M315.089,676.084 C300.063,705.446 283.178,738.442 269.635,764.906 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="321.18,664.181,314.8857,667.6998,315.7129,674.8633,322.0072,671.3445,321.18,664.181" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="48" x="258.2895" y="753.8614">kind (1)</text><path d="M390.911,676.084 C405.937,705.446 422.822,738.442 436.365,764.906 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="384.82,664.181,383.9928,671.3445,390.2871,674.8633,391.1143,667.6998,384.82,664.181" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="403.8044" y="754.0004">mode (1)</text></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="885pt" style="width:1036px;height:885px;" version="1.1" viewBox="0 0 1036 885" width="1036pt"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="96" x="716" y="571"/><ellipse cx="731" cy="587" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M735.1094,593 L727.3906,593 L727.3906,580.6094 L735.1094,580.6094 L735.1094,582.7656 L729.8438,582.7656 L729.8438,585.4375 L734.6094,585.4375 L734.6094,587.5938 L729.8438,587.5938 L729.8438,590.8438 L735.1094,590.8438 L735.1094,593 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="64" x="745" y="591.1543">DBMSType</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="717" x2="811" y1="603" y2="603"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="44" x="722" y="617.2104">ORACLE</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="39" x="722" y="630.0151">MYSQL</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="717" x2="811" y1="636.6094" y2="636.6094"/><rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="895" y="571"/><ellipse cx="910" cy="587" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M914.1094,593 L906.3906,593 L906.3906,580.6094 L914.1094,580.6094 L914.1094,582.7656 L908.8438,582.7656 L908.8438,585.4375 L913.6094,585.4375 L913.6094,587.5938 L908.8438,587.5938 L908.8438,590.8438 L914.1094,590.8438 L914.1094,593 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="924" y="591.1543">ConnectionType</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="896" x2="1026" y1="603" y2="603"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="27" x="901" y="617.2104">JDBC</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="901" y="630.0151">LDAP</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="896" x2="1026" y1="636.6094" y2="636.6094"/><rect fill="#FEFECE" filter="url(#f1)" height="150.4375" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="677" y="288"/><ellipse cx="692" cy="304" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M694.9688,309.6406 Q694.3906,309.9375 693.75,310.0859 Q693.1094,310.2344 692.4063,310.2344 Q689.9063,310.2344 688.5859,308.5859 Q687.2656,306.9375 687.2656,303.8125 Q687.2656,300.6875 688.5859,299.0313 Q689.9063,297.375 692.4063,297.375 Q693.1094,297.375 693.7578,297.5313 Q694.4063,297.6875 694.9688,297.9844 L694.9688,300.7031 Q694.3438,300.125 693.75,299.8516 Q693.1563,299.5781 692.5313,299.5781 Q691.1875,299.5781 690.5,300.6484 Q689.8125,301.7188 689.8125,303.8125 Q689.8125,305.9063 690.5,306.9766 Q691.1875,308.0469 692.5313,308.0469 Q693.1563,308.0469 693.75,307.7734 Q694.3438,307.5 694.9688,306.9219 L694.9688,309.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="142" x="706" y="308.1543">ConfigConnectionBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="678" x2="850" y1="320" y2="320"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="328.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="47" x="697" y="334.2104">String id</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="341.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="697" y="347.0151">String ress</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="354.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="697" y="359.8198">String host</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="367.3164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="40" x="697" y="372.6245">int port</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="380.1211"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="63" x="697" y="385.4292">String user</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="392.9258"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="61" x="697" y="398.2339">String bind</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="405.7305"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="697" y="411.0386">String pass</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="685" y="418.5352"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="51" x="697" y="423.8433">String db</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="678" x2="850" y1="430.4375" y2="430.4375"/><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="115" y="333"/><ellipse cx="130" cy="349" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M132.9688,354.6406 Q132.3906,354.9375 131.75,355.0859 Q131.1094,355.2344 130.4063,355.2344 Q127.9063,355.2344 126.5859,353.5859 Q125.2656,351.9375 125.2656,348.8125 Q125.2656,345.6875 126.5859,344.0313 Q127.9063,342.375 130.4063,342.375 Q131.1094,342.375 131.7578,342.5313 Q132.4063,342.6875 132.9688,342.9844 L132.9688,345.7031 Q132.3438,345.125 131.75,344.8516 Q131.1563,344.5781 130.5313,344.5781 Q129.1875,344.5781 128.5,345.6484 Q127.8125,346.7188 127.8125,348.8125 Q127.8125,350.9063 128.5,351.9766 Q129.1875,353.0469 130.5313,353.0469 Q131.1563,353.0469 131.75,352.7734 Q132.3438,352.5 132.9688,351.9219 L132.9688,354.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="144" y="353.1543">ConfigGlobalsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="116" x2="263" y1="365" y2="365"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="123" y="373.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="95" x="135" y="379.2104">int maxExecTime</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="116" x2="263" y1="385.8047" y2="385.8047"/><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="162" x="348" y="320"/><ellipse cx="376.5" cy="336" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M379.4688,341.6406 Q378.8906,341.9375 378.25,342.0859 Q377.6094,342.2344 376.9063,342.2344 Q374.4063,342.2344 373.0859,340.5859 Q371.7656,338.9375 371.7656,335.8125 Q371.7656,332.6875 373.0859,331.0313 Q374.4063,329.375 376.9063,329.375 Q377.6094,329.375 378.2578,329.5313 Q378.9063,329.6875 379.4688,329.9844 L379.4688,332.7031 Q378.8438,332.125 378.25,331.8516 Q377.6563,331.5781 377.0313,331.5781 Q375.6875,331.5781 375,332.6484 Q374.3125,333.7188 374.3125,335.8125 Q374.3125,337.9063 375,338.9766 Q375.6875,340.0469 377.0313,340.0469 Q377.6563,340.0469 378.25,339.7734 Q378.8438,339.5 379.4688,338.9219 L379.4688,341.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="393.5" y="340.1543">ConfigTaskBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="349" x2="509" y1="352" y2="352"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="356" y="360.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="368" y="366.2104">String name</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="356" y="373.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="135" x="368" y="379.0151">boolean skipReadErrors</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="356" y="386.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="136" x="368" y="391.8198">boolean skipEntryDelete</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="349" x2="509" y1="398.4141" y2="398.4141"/><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="155" x="31" y="565"/><ellipse cx="46" cy="581" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M48.9688,586.6406 Q48.3906,586.9375 47.75,587.0859 Q47.1094,587.2344 46.4063,587.2344 Q43.9063,587.2344 42.5859,585.5859 Q41.2656,583.9375 41.2656,580.8125 Q41.2656,577.6875 42.5859,576.0313 Q43.9063,574.375 46.4063,574.375 Q47.1094,574.375 47.7578,574.5313 Q48.4063,574.6875 48.9688,574.9844 L48.9688,577.7031 Q48.3438,577.125 47.75,576.8516 Q47.1563,576.5781 46.5313,576.5781 Q45.1875,576.5781 44.5,577.6484 Q43.8125,578.7188 43.8125,580.8125 Q43.8125,582.9063 44.5,583.9766 Q45.1875,585.0469 46.5313,585.0469 Q47.1563,585.0469 47.75,584.7734 Q48.3438,584.5 48.9688,583.9219 L48.9688,586.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="123" x="60" y="585.1543">ConfigOpLimitsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="185" y1="597" y2="597"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="39" y="605.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="50" x="51" y="611.2104">int insert</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="39" y="618.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="56" x="51" y="624.0151">int update</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="39" y="631.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="52" x="51" y="636.8198">int delete</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="32" x2="185" y1="643.4141" y2="643.4141"/><rect fill="#FEFECE" filter="url(#f1)" height="99.2188" style="stroke: #A80036; stroke-width: 1.5;" width="124" x="59" y="777"/><ellipse cx="83.9" cy="793" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M88.0094,799 L80.2906,799 L80.2906,786.6094 L88.0094,786.6094 L88.0094,788.7656 L82.7438,788.7656 L82.7438,791.4375 L87.5094,791.4375 L87.5094,793.5938 L82.7438,793.5938 L82.7438,796.8438 L88.0094,796.8438 L88.0094,799 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="70" x="100.1" y="797.1543">SourceKind</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="60" x2="182" y1="809" y2="809"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="60" x="65" y="823.2104">FIXED_CSV</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="112" x="65" y="836.0151">FIXED_CSV_SORTED</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="65" y="848.8198">LDAP</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="23" x="65" y="861.6245">SQL</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="60" x2="182" y1="868.2188" y2="868.2188"/><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="87" x="523" y="797"/><ellipse cx="538" cy="813" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M542.1094,819 L534.3906,819 L534.3906,806.6094 L542.1094,806.6094 L542.1094,808.7656 L536.8438,808.7656 L536.8438,811.4375 L541.6094,811.4375 L541.6094,813.5938 L536.8438,813.5938 L536.8438,816.8438 L542.1094,816.8438 L542.1094,819 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="55" x="552" y="817.1543">DestKind</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="524" x2="609" y1="829" y2="829"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="28" x="529" y="843.2104">LDAP</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="524" x2="609" y1="849.8047" y2="849.8047"/><rect fill="#FEFECE" filter="url(#f1)" height="99.2188" style="stroke: #A80036; stroke-width: 1.5;" width="168" x="266" y="777"/><ellipse cx="281" cy="793" fill="#EB937F" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M285.1094,799 L277.3906,799 L277.3906,786.6094 L285.1094,786.6094 L285.1094,788.7656 L279.8438,788.7656 L279.8438,791.4375 L284.6094,791.4375 L284.6094,793.5938 L279.8438,793.5938 L279.8438,796.8438 L285.1094,796.8438 L285.1094,799 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="136" x="295" y="797.1543">MVDataCombineMode</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="267" x2="433" y1="809" y2="809"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="100" x="272" y="823.2104">PRIMARY_SOURCE</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="89" x="272" y="836.0151">MERGE_APPEND</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="94" x="272" y="848.8198">MERGE_REPLACE</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="55" x="272" y="861.6245">OVERRIDE</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="267" x2="433" y1="868.2188" y2="868.2188"/><rect fill="#FEFECE" filter="url(#f1)" height="137.6328" style="stroke: #A80036; stroke-width: 1.5;" width="147" x="270" y="539"/><ellipse cx="285" cy="555" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M287.9688,560.6406 Q287.3906,560.9375 286.75,561.0859 Q286.1094,561.2344 285.4063,561.2344 Q282.9063,561.2344 281.5859,559.5859 Q280.2656,557.9375 280.2656,554.8125 Q280.2656,551.6875 281.5859,550.0313 Q282.9063,548.375 285.4063,548.375 Q286.1094,548.375 286.7578,548.5313 Q287.4063,548.6875 287.9688,548.9844 L287.9688,551.7031 Q287.3438,551.125 286.75,550.8516 Q286.1563,550.5781 285.5313,550.5781 Q284.1875,550.5781 283.5,551.6484 Q282.8125,552.7188 282.8125,554.8125 Q282.8125,556.9063 283.5,557.9766 Q284.1875,559.0469 285.5313,559.0469 Q286.1563,559.0469 286.75,558.7734 Q287.3438,558.5 287.9688,557.9219 L287.9688,560.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="115" x="299" y="559.1543">ConfigSourceBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="271" x2="416" y1="571" y2="571"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="579.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="290" y="585.2104">String name</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="592.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="64" x="290" y="598.0151">String conn</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="605.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="290" y="610.8198">String query</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="618.3164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="62" x="290" y="623.6245">String path</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="631.1211"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="290" y="636.4292">String attr</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="643.9258"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="290" y="649.2339">String base</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="278" y="656.7305"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="75" x="290" y="662.0386">int lookahead</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="271" x2="416" y1="668.6328" y2="668.6328"/><rect fill="#FEFECE" filter="url(#f1)" height="112.0234" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="501" y="552"/><ellipse cx="516" cy="568" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M518.9688,573.6406 Q518.3906,573.9375 517.75,574.0859 Q517.1094,574.2344 516.4063,574.2344 Q513.9063,574.2344 512.5859,572.5859 Q511.2656,570.9375 511.2656,567.8125 Q511.2656,564.6875 512.5859,563.0313 Q513.9063,561.375 516.4063,561.375 Q517.1094,561.375 517.7578,561.5313 Q518.4063,561.6875 518.9688,561.9844 L518.9688,564.7031 Q518.3438,564.125 517.75,563.8516 Q517.1563,563.5781 516.5313,563.5781 Q515.1875,563.5781 514.5,564.6484 Q513.8125,565.7188 513.8125,567.8125 Q513.8125,569.9063 514.5,570.9766 Q515.1875,572.0469 516.5313,572.0469 Q517.1563,572.0469 517.75,571.7734 Q518.3438,571.5 518.9688,570.9219 L518.9688,573.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="530" y="572.1543">ConfigDestBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="502" x2="632" y1="584" y2="584"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="509" y="592.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="69" x="521" y="598.2104">String name</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="509" y="605.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="64" x="521" y="611.0151">String conn</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="509" y="618.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="57" x="521" y="623.8198">String attr</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="509" y="631.3164"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="65" x="521" y="636.6245">String base</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="509" y="644.1211"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="75" x="521" y="649.4292">int lookahead</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="502" x2="632" y1="656.0234" y2="656.0234"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="77" x="534" y="8"/><ellipse cx="549" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M551.9688,29.6406 Q551.3906,29.9375 550.75,30.0859 Q550.1094,30.2344 549.4063,30.2344 Q546.9063,30.2344 545.5859,28.5859 Q544.2656,26.9375 544.2656,23.8125 Q544.2656,20.6875 545.5859,19.0313 Q546.9063,17.375 549.4063,17.375 Q550.1094,17.375 550.7578,17.5313 Q551.4063,17.6875 551.9688,17.9844 L551.9688,20.7031 Q551.3438,20.125 550.75,19.8516 Q550.1563,19.5781 549.5313,19.5781 Q548.1875,19.5781 547.5,20.6484 Q546.8125,21.7188 546.8125,23.8125 Q546.8125,25.9063 547.5,26.9766 Q548.1875,28.0469 549.5313,28.0469 Q550.1563,28.0469 550.75,27.7734 Q551.3438,27.5 551.9688,26.9219 L551.9688,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="563" y="28.1543">SSSync</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="535" x2="610" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="535" x2="610" y1="48" y2="48"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="363" y="138"/><ellipse cx="378" cy="154" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M380.9688,159.6406 Q380.3906,159.9375 379.75,160.0859 Q379.1094,160.2344 378.4063,160.2344 Q375.9063,160.2344 374.5859,158.5859 Q373.2656,156.9375 373.2656,153.8125 Q373.2656,150.6875 374.5859,149.0313 Q375.9063,147.375 378.4063,147.375 Q379.1094,147.375 379.7578,147.5313 Q380.4063,147.6875 380.9688,147.9844 L380.9688,150.7031 Q380.3438,150.125 379.75,149.8516 Q379.1563,149.5781 378.5313,149.5781 Q377.1875,149.5781 376.5,150.6484 Q375.8125,151.7188 375.8125,153.8125 Q375.8125,155.9063 376.5,156.9766 Q377.1875,158.0469 378.5313,158.0469 Q379.1563,158.0469 379.75,157.7734 Q380.3438,157.5 380.9688,156.9219 L380.9688,159.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="392" y="158.1543">ConfigRootBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="364" x2="494" y1="170" y2="170"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="364" x2="494" y1="178" y2="178"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="625" y="138"/><ellipse cx="640" cy="154" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M642.9688,159.6406 Q642.3906,159.9375 641.75,160.0859 Q641.1094,160.2344 640.4063,160.2344 Q637.9063,160.2344 636.5859,158.5859 Q635.2656,156.9375 635.2656,153.8125 Q635.2656,150.6875 636.5859,149.0313 Q637.9063,147.375 640.4063,147.375 Q641.1094,147.375 641.7578,147.5313 Q642.4063,147.6875 642.9688,147.9844 L642.9688,150.7031 Q642.3438,150.125 641.75,149.8516 Q641.1563,149.5781 640.5313,149.5781 Q639.1875,149.5781 638.5,150.6484 Q637.8125,151.7188 637.8125,153.8125 Q637.8125,155.9063 638.5,156.9766 Q639.1875,158.0469 640.5313,158.0469 Q641.1563,158.0469 641.75,157.7734 Q642.3438,157.5 642.9688,156.9219 L642.9688,159.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="654" y="158.1543">ConfigConnectionsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="626" x2="805" y1="170" y2="170"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="626" x2="805" y1="178" y2="178"/><path d="M535.581,65.108 C510.573,87.843 477.952,117.498 455.42,137.982 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="545.438,56.147,538.3076,57.2228,536.5582,64.2185,543.6886,63.1427,545.438,56.147" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="79" x="440.4867" y="127.0834">confMain (1)</text><path d="M608.674,65.108 C633.857,87.843 666.705,117.498 689.395,137.982 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="598.748,56.147,600.5213,63.1367,607.6554,64.188,605.882,57.1984,598.748,56.147" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="82" x="638.5672" y="126.8429">confConn (1)</text><path d="M390.11,194.707 C344.665,232.926 270.08,295.652 225.942,332.772 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="400.171,186.245,393.0044,187.0452,390.9867,193.9683,398.1533,193.1681,400.171,186.245" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="67" x="218.4136" y="321.8267">globals (1)</text><path d="M429,199.321 C429,233.398 429,283.776 429,319.63 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="429,186.245,425,192.245,429,198.245,433,192.245,429,186.245" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="55" x="405.6335" y="308.829">tasks (*)</text><path d="M724.845,199.04 C730.763,223.82 738.761,257.311 745.986,287.565 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="721.79,186.245,719.2933,193.0101,724.5777,197.9167,727.0744,191.1516,721.79,186.245" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="98" x="697.5366" y="276.8697">connections (*)</text><path d="M764,451.321 C764,492.504 764,539.29 764,570.931 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="764,438.173,760,444.173,764,450.173,768,444.173,764,438.173" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="58" x="739.2034" y="559.9937">dbms (1)</text><path d="M832.66,448.389 C866.334,490.268 905.146,538.536 931.193,570.931 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="824.445,438.173,825.0877,445.3554,831.9648,447.5246,831.3221,440.3422,824.445,438.173" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="50" x="899.528" y="559.8493">type (1)</text><path d="M362.999,414.11 C344.57,428.345 324.521,443.797 306,458 C258.926,494.1 205.358,534.868 165.976,564.781 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="373.343,406.117,366.1495,406.6209,363.848,413.4549,371.0414,412.9509,373.343,406.117" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="76" x="156.0222" y="553.7987">opLimits (1)</text><path d="M409.629,418.833 C397.274,454.445 381.168,500.868 368.004,538.812 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="413.999,406.237,408.2536,410.5948,410.0665,417.5743,415.8118,413.2165,413.999,406.237" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="342.1605" y="527.801">sources (*)</text><path d="M459.768,417.624 C482.259,457.555 512.67,511.545 535.362,551.832 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="453.354,406.237,452.8137,413.4278,459.2436,416.6922,459.7839,409.5014,453.354,406.237" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="93" x="485.1807" y="541.0381">destination (1)</text><path d="M265.209,685.378 C234.324,715.709 199.766,749.646 172.224,776.695 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="274.664,676.092,267.5805,677.4424,266.1026,684.5005,273.1861,683.15,274.664,676.092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="48" x="170.3103" y="765.6837">kind (1)</text><path d="M346.228,689.319 C347.031,718.621 347.913,750.812 348.622,776.695 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="345.866,676.092,342.0317,682.1992,346.1943,688.0875,350.0287,681.9803,345.866,676.092" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="59" x="322.798" y="765.9125">mode (1)</text><path d="M567,677.146 C567,717.46 567,766.26 567,796.9751 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="567,664.114,563,670.114,567,676.114,571,670.114,567,664.114" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="48" x="547.3731" y="785.8655">kind (1)</text></g></svg> \ No newline at end of file
diff --git a/doc/diagrams/dataflow.plant b/doc/diagrams/dataflow.plant
new file mode 100644
index 0000000..2b67219
--- /dev/null
+++ b/doc/diagrams/dataflow.plant
@@ -0,0 +1,31 @@
+@startuml
+
+database "DB\nserver" as db
+node "CSV file" as csv
+database "LDAP\nserver" as ldap
+[SQLDataReader] as rdr_a
+[CSVDataReader] as rdr_b
+
+() MVDataReader as src_a
+() MVDataReader as src_b
+() MVDataReader as src
+() MVDataReadWriterPair as dst
+
+db --> [rdr_a]
+csv --> [rdr_b]
+[rdr_a] --> src_a
+[rdr_b] --> src_b
+
+src_a --> [MVDataCombiner]
+src_b --> [MVDataCombiner]
+[MVDataCombiner] --> src
+
+src --> [BasicSyncTask] : source
+[BasicSyncTask] <--> dst : destination
+
+dst <--> [LDAPFlatDataWriter]
+[LDAPFlatDataWriter] <--> ldap
+
+@enduml
+
+
diff --git a/doc/diagrams/dataflow.svg b/doc/diagrams/dataflow.svg
new file mode 100644
index 0000000..f9d7762
--- /dev/null
+++ b/doc/diagrams/dataflow.svg
@@ -0,0 +1 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="904pt" style="width:308px;height:904px;" version="1.1" viewBox="0 0 308 904" width="308pt"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><path d="M39,18 C39,8 70.5,8 70.5,8 C70.5,8 102,8 102,18 L102,55.5938 C102,65.5938 70.5,65.5938 70.5,65.5938 C70.5,65.5938 39,65.5938 39,55.5938 L39,18 " fill="#FEFECE" filter="url(#f1)" style="stroke: #A80036; stroke-width: 1.5;"/><path d="M39,18 C39,28 70.5,28 70.5,28 C70.5,28 102,28 102,18 " fill="none" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="21" x="60" y="40.9951">DB</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="49" y="57.292">server</text><polygon fill="#FEFECE" filter="url(#f1)" points="189,24,199,14,280,14,280,50.2969,270,60.2969,189,60.2969,189,24" style="stroke: #A80036; stroke-width: 1.5;"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="270" x2="279" y1="24" y2="15"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="189" x2="270" y1="24" y2="24"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="270" x2="270" y1="24" y2="60.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="51" x="204" y="46.9951">CSV file</text><path d="M136,850 C136,840 167.5,840 167.5,840 C167.5,840 199,840 199,850 L199,887.5938 C199,897.5938 167.5,897.5938 167.5,897.5938 C167.5,897.5938 136,897.5938 136,887.5938 L136,850 " fill="#FEFECE" filter="url(#f1)" style="stroke: #A80036; stroke-width: 1.5;"/><path d="M136,850 C136,860 167.5,860 167.5,860 C167.5,860 199,860 199,850 " fill="none" style="stroke: #A80036; stroke-width: 1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="36" x="149.5" y="872.9951">LDAP</text><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="43" x="146" y="889.292">server</text><rect fill="#FEFECE" filter="url(#f1)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="129" x="6" y="128"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1" y="133"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="1" y="154.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="109" x="16" y="150.9951">SQLDataReader</text><rect fill="#FEFECE" filter="url(#f1)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="130" x="169" y="128"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="164" y="133"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="164" y="154.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="110" x="179" y="150.9951">CSVDataReader</text><ellipse cx="86.5" cy="235" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="35" y="256.9951">MVDataReader</text><ellipse cx="225.5" cy="235" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="174" y="256.9951">MVDataReader</text><ellipse cx="167.5" cy="429" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="116" y="450.9951">MVDataReader</text><ellipse cx="167" cy="655" fill="#FEFECE" filter="url(#f1)" rx="8" ry="8" style="stroke: #A80036; stroke-width: 2.0;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="154" x="90" y="676.9951">MVDataReadWriterPair</text><rect fill="#FEFECE" filter="url(#f1)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="140" x="97" y="322"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="92" y="327"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="92" y="348.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="120" x="107" y="344.9951">MVDataCombiner</text><rect fill="#FEFECE" filter="url(#f1)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="123" x="106" y="532"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="101" y="537"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="101" y="558.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="103" x="116" y="554.9951">BasicSyncTask</text><rect fill="#FEFECE" filter="url(#f1)" height="36.2969" style="stroke: #A80036; stroke-width: 1.5;" width="152" x="91" y="742"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="86" y="747"/><rect fill="#FEFECE" height="5" style="stroke: #A80036; stroke-width: 1.5;" width="10" x="86" y="768.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="132" x="101" y="764.9951">LDAPFlatDataWriter</text><path d="M70,66.21 C70,83.887 70,106.124 70,122.63 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="70,127.993,74,118.993,70,122.993,66,118.993,70,127.993" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M234,60.116 C234,78.624 234,104.456 234,122.946 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="234,127.955,238,118.955,234,122.955,230,118.955,234,127.955" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M73.0095,164.245 C75.6511,180.26 79.5014,203.602 82.3245,220.717 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="83.1651,225.814,85.6487,216.2834,82.3522,220.8805,77.7551,217.584,83.1651,225.814" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M232.307,164.245 C230.821,180.26 228.655,203.602 227.067,220.717 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="226.595,225.814,231.411,217.2229,227.0579,220.8355,223.4453,216.4824,226.595,225.814" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M100.4812,260.342 C113.934,276.452 134.03,300.517 148.611,317.979 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="151.819,321.821,149.1202,312.3491,148.614,317.9833,142.9798,317.4771,151.819,321.821" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M214.631,260.342 C205.16,276.181 191.091,299.71 180.697,317.093 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="177.87,321.821,185.9229,316.1509,180.4368,317.5301,179.0576,312.044,177.87,321.821" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M167,358.245 C167,374.26 167,397.602 167,414.717 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,419.814,171,410.814,167,414.814,163,410.814,167,419.814" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M167,454.162 C167,473.514 167,505.089 167,526.669 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,531.927,171,522.927,167,526.927,163,522.927,167,531.927" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="43" x="168" y="497.0669">source</text><path d="M167,573.428 C167,593.206 167,621.328 167,640.762 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,645.999,171,636.999,167,640.999,163,636.999,167,645.999" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,568.155,163,577.155,167,573.155,171,577.155,167,568.155" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="168" y="611.0669">destination</text><path d="M167,685.443 C167,700.828 167,721.188 167,736.744 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,741.821,171,732.821,167,736.821,163,732.821,167,741.821" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,680.342,163,689.342,167,685.342,171,689.342,167,680.342" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M167,783.838 C167,798.7329 167,818.1566 167,834.6921 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,839.7228,171,830.7228,167,834.7228,163,830.7228,167,839.7228" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="167,778.49,163,787.49,167,783.49,171,787.49,167,778.49" style="stroke: #A80036; stroke-width: 1.0;"/></g></svg> \ No newline at end of file
diff --git a/doc/diagrams/example1_flow.dia b/doc/diagrams/example1_flow.dia
deleted file mode 100644
index 66e01f7..0000000
--- a/doc/diagrams/example1_flow.dia
+++ /dev/null
Binary files differ
diff --git a/doc/diagrams/example1_flow.svg b/doc/diagrams/example1_flow.svg
deleted file mode 100644
index 3613ef5..0000000
--- a/doc/diagrams/example1_flow.svg
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" "http://www.w3.org/TR/2001/PR-SVG-20010719/DTD/svg10.dtd">
-<svg width="27cm" height="17cm" viewBox="141 87 534 335" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
- <g>
- <path style="fill: #ffffff" d="M 143 102.333 C 156,92.3333 162.5,89 175.5,89 C 188.5,89 195,92.3333 208,102.333 L 208,155.667 C 195,165.667 188.5,169 175.5,169 C 162.5,169 156,165.667 143,155.667 L 143,102.333z"/>
- <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 143 102.333 C 156,92.3333 162.5,89 175.5,89 C 188.5,89 195,92.3333 208,102.333 L 208,155.667 C 195,165.667 188.5,169 175.5,169 C 162.5,169 156,165.667 143,155.667 L 143,102.333"/>
- <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 143 102.333 C 156,112.333 162.5,115.667 175.5,115.667 C 188.5,115.667 195,112.333 208,102.333"/>
- <text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="175.5" y="139.667">
- <tspan x="175.5" y="139.667">Oracle</tspan>
- </text>
- </g>
- <g>
- <polygon style="fill: #ffffff" points="143.4,229.4 195.6,229.4 207.6,241.4 207.6,295.4 143.4,295.4 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="143.4,229.4 195.6,229.4 207.6,241.4 207.6,295.4 143.4,295.4 "/>
- <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="195.6,229.4 195.6,241.4 207.6,241.4 "/>
- <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="150.4" y="254.3">
- <tspan x="150.4" y="254.3"></tspan>
- <tspan x="150.4" y="270.3"> CSV1 </tspan>
- <tspan x="150.4" y="286.3"></tspan>
- </text>
- </g>
- <g>
- <polygon style="fill: #ffffff" points="143.4,355.8 195.6,355.8 207.6,367.8 207.6,421.8 143.4,421.8 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="143.4,355.8 195.6,355.8 207.6,367.8 207.6,421.8 143.4,421.8 "/>
- <polyline style="fill: none; fill-opacity:0; stroke-width: 1; stroke: #000000" points="195.6,355.8 195.6,367.8 207.6,367.8 "/>
- <text font-size="12.7998" style="fill: #000000;text-anchor:start;font-family:monospace;font-style:normal;font-weight:normal" x="150.4" y="380.7">
- <tspan x="150.4" y="380.7"></tspan>
- <tspan x="150.4" y="396.7"> CSV2 </tspan>
- <tspan x="150.4" y="412.7"></tspan>
- </text>
- </g>
- <g>
- <rect style="fill: #ffffff" x="346" y="231.9" width="118" height="61"/>
- <rect style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x="346" y="231.9" width="118" height="61"/>
- <text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="405" y="266.3">
- <tspan x="405" y="266.3">SSSync</tspan>
- </text>
- </g>
- <g>
- <path style="fill: #ffffff" d="M 608.087 231.4 L 663.525,231.4 C 671.841,243.8 674.613,250 674.613,262.4 C 674.613,274.8 671.841,281 663.525,293.4 L 608.087,293.4 C 599.772,281 597,274.8 597,262.4 C 597,250 599.772,243.8 608.087,231.4z"/>
- <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 608.087 231.4 L 663.525,231.4 C 671.841,243.8 674.613,250 674.613,262.4 C 674.613,274.8 671.841,281 663.525,293.4 L 608.087,293.4 C 599.772,281 597,274.8 597,262.4 C 597,250 599.772,243.8 608.087,231.4"/>
- <path style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" d="M 663.525 231.4 C 655.209,243.8 652.438,250 652.438,262.4 C 652.438,274.8 655.209,281 663.525,293.4"/>
- <text font-size="12.7998" style="fill: #000000;text-anchor:middle;font-family:sans-serif;font-style:normal;font-weight:normal" x="630.263" y="266.4">
- <tspan x="630.263" y="266.4">slapd</tspan>
- </text>
- </g>
- <g>
- <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="208.95" y1="148.443" x2="342.387" y2="226.006"/>
- <polygon style="fill: #000000" points="348.872,229.775 337.713,229.072 342.387,226.006 342.739,220.426 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="348.872,229.775 337.713,229.072 342.387,226.006 342.739,220.426 "/>
- </g>
- <g>
- <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="208.586" y1="262.4" x2="335.284" y2="262.4"/>
- <polygon style="fill: #000000" points="342.784,262.4 332.784,267.4 335.284,262.4 332.784,257.4 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="342.784,262.4 332.784,267.4 335.284,262.4 332.784,257.4 "/>
- </g>
- <g>
- <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="208.586" y1="370.578" x2="339.293" y2="298.589"/>
- <polygon style="fill: #000000" points="345.862,294.971 339.515,304.175 339.293,298.589 334.691,295.415 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="345.862,294.971 339.515,304.175 339.293,298.589 334.691,295.415 "/>
- </g>
- <g>
- <line style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" x1="474.501" y1="262.4" x2="587.285" y2="262.4"/>
- <polygon style="fill: #000000" points="467.001,262.4 477.001,257.4 474.501,262.4 477.001,267.4 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="467.001,262.4 477.001,257.4 474.501,262.4 477.001,267.4 "/>
- <polygon style="fill: #000000" points="594.785,262.4 584.785,267.4 587.285,262.4 584.785,257.4 "/>
- <polygon style="fill: none; fill-opacity:0; stroke-width: 2; stroke: #000000" points="594.785,262.4 584.785,267.4 587.285,262.4 584.785,257.4 "/>
- </g>
-</svg>
diff --git a/doc/diagrams/main.plant b/doc/diagrams/main.plant
index 4429300..8104e48 100644
--- a/doc/diagrams/main.plant
+++ b/doc/diagrams/main.plant
@@ -1,19 +1,24 @@
@startuml
class SSSync {
+void main(String[] args)
+\t
}
class SSSyncConfParser {
+loadMainConfig(String mainConfigFile)
+loadConnConfig(String connConfigFile)
+\t
}
class SSSyncConnectionsFactory {
+setupConnections(ConfigConnectionsBean confConn)
+\t
+\t
}
class SSSyncTasksFactory {
-+setupTasks(ConnectionsHolder connections, ConfigRootBean confMain)
++setupTasks(ConnectionsHolder connections,\n\t\t\tConfigRootBean confMain)
+\t
}
abstract class AbstractSyncTask {
@@ -24,21 +29,31 @@ abstract class AbstractSyncTask {
interface "Callable<Boolean>" as Callable_Boolean_ {
}
-Callable_Boolean_ <|.. AbstractSyncTask
+
+class BasicSyncTask {
+ -MVDataReader srcReader
+ -MVDataReader dstReader
+ -MVDataWriter dstWriter
+}
class ExecutorService {
+invokeAll(Callable tasks...)
+\t
}
+
SSSync *-- "1" ConfigRootBean
SSSync *-- "1" ConfigConnectionsBean
SSSync *-- "1" ConnectionsHolder
SSSync *-- "*" AbstractSyncTask
-SSSync "(1)" -up-> SSSyncConfParser
-SSSync "(2)" -up-> SSSyncConnectionsFactory
-SSSync "(3)" -up-> SSSyncTasksFactory
-SSSync "(4)" -> ExecutorService
+Callable_Boolean_ <|.. AbstractSyncTask
+BasicSyncTask -|> AbstractSyncTask
+
+SSSync "(#3)" -up-> SSSyncTasksFactory
+SSSync "(#2)" -up-> SSSyncConnectionsFactory
+SSSync "(#1)" -up-> SSSyncConfParser
+SSSync "(#4)" -> ExecutorService
ConfigRootBean *-- "1" ConfigGlobalsBean
ConfigRootBean *-- "*" ConfigTaskBean
diff --git a/doc/diagrams/main.svg b/doc/diagrams/main.svg
index a1f032b..095b97d 100644
--- a/doc/diagrams/main.svg
+++ b/doc/diagrams/main.svg
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="571pt" style="width:1299px;height:571px;" version="1.1" viewBox="0 0 1299 571" width="1299pt"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="552" y="164"/><ellipse cx="604.75" cy="180" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M607.7188,185.6406 Q607.1406,185.9375 606.5,186.0859 Q605.8594,186.2344 605.1563,186.2344 Q602.6563,186.2344 601.3359,184.5859 Q600.0156,182.9375 600.0156,179.8125 Q600.0156,176.6875 601.3359,175.0313 Q602.6563,173.375 605.1563,173.375 Q605.8594,173.375 606.5078,173.5313 Q607.1563,173.6875 607.7188,173.9844 L607.7188,176.7031 Q607.0938,176.125 606.5,175.8516 Q605.9063,175.5781 605.2813,175.5781 Q603.9375,175.5781 603.25,176.6484 Q602.5625,177.7188 602.5625,179.8125 Q602.5625,181.9063 603.25,182.9766 Q603.9375,184.0469 605.2813,184.0469 Q605.9063,184.0469 606.5,183.7734 Q607.0938,183.5 607.7188,182.9219 L607.7188,185.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="625.25" y="184.1543">SSSync</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="553" x2="710" y1="196" y2="196"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="553" x2="710" y1="204" y2="204"/><ellipse cx="563" cy="215.9023" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="572" y="218.2104">void main(String[] args)</text><rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="830" y="8"/><ellipse cx="889.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M892.7188,29.6406 Q892.1406,29.9375 891.5,30.0859 Q890.8594,30.2344 890.1563,30.2344 Q887.6563,30.2344 886.3359,28.5859 Q885.0156,26.9375 885.0156,23.8125 Q885.0156,20.6875 886.3359,19.0313 Q887.6563,17.375 890.1563,17.375 Q890.8594,17.375 891.5078,17.5313 Q892.1563,17.6875 892.7188,17.9844 L892.7188,20.7031 Q892.0938,20.125 891.5,19.8516 Q890.9063,19.5781 890.2813,19.5781 Q888.9375,19.5781 888.25,20.6484 Q887.5625,21.7188 887.5625,23.8125 Q887.5625,25.9063 888.25,26.9766 Q888.9375,28.0469 890.2813,28.0469 Q890.9063,28.0469 891.5,27.7734 Q892.0938,27.5 892.7188,26.9219 L892.7188,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="114" x="910.25" y="28.1543">SSSyncConfParser</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="831" x2="1071" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="831" x2="1071" y1="48" y2="48"/><ellipse cx="841" cy="59.9023" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="850" y="62.2104">loadMainConfig(String mainConfigFile)</text><ellipse cx="841" cy="72.707" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="216" x="850" y="75.0151">loadConnConfig(String connConfigFile)</text><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="327" x="469" y="14.5"/><ellipse cx="543.75" cy="30.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M546.7188,36.1406 Q546.1406,36.4375 545.5,36.5859 Q544.8594,36.7344 544.1563,36.7344 Q541.6563,36.7344 540.3359,35.0859 Q539.0156,33.4375 539.0156,30.3125 Q539.0156,27.1875 540.3359,25.5313 Q541.6563,23.875 544.1563,23.875 Q544.8594,23.875 545.5078,24.0313 Q546.1563,24.1875 546.7188,24.4844 L546.7188,27.2031 Q546.0938,26.625 545.5,26.3516 Q544.9063,26.0781 544.2813,26.0781 Q542.9375,26.0781 542.25,27.1484 Q541.5625,28.2188 541.5625,30.3125 Q541.5625,32.4063 542.25,33.4766 Q542.9375,34.5469 544.2813,34.5469 Q544.9063,34.5469 545.5,34.2734 Q546.0938,34 546.7188,33.4219 L546.7188,36.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="564.25" y="34.6543">SSSyncConnectionsFactory</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="470" x2="795" y1="46.5" y2="46.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="470" x2="795" y1="54.5" y2="54.5"/><ellipse cx="480" cy="66.4023" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="301" x="489" y="68.7104">setupConnections(ConfigConnectionsBean confConn)</text><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="428" x="6" y="14.5"/><ellipse cx="152.25" cy="30.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M155.2188,36.1406 Q154.6406,36.4375 154,36.5859 Q153.3594,36.7344 152.6563,36.7344 Q150.1563,36.7344 148.8359,35.0859 Q147.5156,33.4375 147.5156,30.3125 Q147.5156,27.1875 148.8359,25.5313 Q150.1563,23.875 152.6563,23.875 Q153.3594,23.875 154.0078,24.0313 Q154.6563,24.1875 155.2188,24.4844 L155.2188,27.2031 Q154.5938,26.625 154,26.3516 Q153.4063,26.0781 152.7813,26.0781 Q151.4375,26.0781 150.75,27.1484 Q150.0625,28.2188 150.0625,30.3125 Q150.0625,32.4063 150.75,33.4766 Q151.4375,34.5469 152.7813,34.5469 Q153.4063,34.5469 154,34.2734 Q154.5938,34 155.2188,33.4219 L155.2188,36.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="127" x="172.75" y="34.6543">SSSyncTasksFactory</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="433" y1="46.5" y2="46.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="433" y1="54.5" y2="54.5"/><ellipse cx="17" cy="66.4023" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="402" x="26" y="68.7104">setupTasks(ConnectionsHolder connections, ConfigRootBean confMain)</text><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="139" x="223" y="326"/><ellipse cx="238" cy="342" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M238.1094,337.3438 L236.9531,342.4219 L239.2813,342.4219 L238.1094,337.3438 Z M236.625,335.1094 L239.6094,335.1094 L242.9688,347.5 L240.5156,347.5 L239.75,344.4375 L236.4688,344.4375 L235.7188,347.5 L233.2813,347.5 L236.625,335.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="107" x="252" y="346.1543">AbstractSyncTask</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="224" x2="361" y1="358" y2="358"/><polygon fill="none" points="234,364.9023,238,368.9023,234,372.9023,230,368.9023" style="stroke: #B38D22; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="94" x="243" y="372.2104">String taskName</text><polygon fill="none" points="234,377.707,238,381.707,234,385.707,230,381.707" style="stroke: #B38D22; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="87" x="243" y="385.0151">boolean dryRun</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="224" x2="361" y1="391.6094" y2="391.6094"/><ellipse cx="234" cy="403.5117" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="76" x="243" y="405.8198">Boolean call()</text><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="221" y="169"/><ellipse cx="236" cy="185" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M231.9219,180.7656 L231.9219,178.6094 L239.3125,178.6094 L239.3125,180.7656 L236.8438,180.7656 L236.8438,188.8438 L239.3125,188.8438 L239.3125,191 L231.9219,191 L231.9219,188.8438 L234.3906,188.8438 L234.3906,180.7656 L231.9219,180.7656 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="112" x="250" y="189.1543">Callable&lt;Boolean&gt;</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="222" x2="364" y1="201" y2="201"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="222" x2="364" y1="209" y2="209"/><rect fill="#FEFECE" filter="url(#f1)" height="60.8047" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="770" y="162.5"/><ellipse cx="803.9" cy="178.5" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M806.8688,184.1406 Q806.2906,184.4375 805.65,184.5859 Q805.0094,184.7344 804.3063,184.7344 Q801.8063,184.7344 800.4859,183.0859 Q799.1656,181.4375 799.1656,178.3125 Q799.1656,175.1875 800.4859,173.5313 Q801.8063,171.875 804.3063,171.875 Q805.0094,171.875 805.6578,172.0313 Q806.3063,172.1875 806.8688,172.4844 L806.8688,175.2031 Q806.2438,174.625 805.65,174.3516 Q805.0563,174.0781 804.4313,174.0781 Q803.0875,174.0781 802.4,175.1484 Q801.7125,176.2188 801.7125,178.3125 Q801.7125,180.4063 802.4,181.4766 Q803.0875,182.5469 804.4313,182.5469 Q805.0563,182.5469 805.65,182.2734 Q806.2438,182 806.8688,181.4219 L806.8688,184.1406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="822.1" y="182.6543">ExecutorService</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="771" x2="943" y1="194.5" y2="194.5"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="771" x2="943" y1="202.5" y2="202.5"/><ellipse cx="781" cy="214.4023" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="790" y="216.7104">invokeAll(Callable tasks...)</text><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="446" y="345"/><ellipse cx="461" cy="361" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M463.9688,366.6406 Q463.3906,366.9375 462.75,367.0859 Q462.1094,367.2344 461.4063,367.2344 Q458.9063,367.2344 457.5859,365.5859 Q456.2656,363.9375 456.2656,360.8125 Q456.2656,357.6875 457.5859,356.0313 Q458.9063,354.375 461.4063,354.375 Q462.1094,354.375 462.7578,354.5313 Q463.4063,354.6875 463.9688,354.9844 L463.9688,357.7031 Q463.3438,357.125 462.75,356.8516 Q462.1563,356.5781 461.5313,356.5781 Q460.1875,356.5781 459.5,357.6484 Q458.8125,358.7188 458.8125,360.8125 Q458.8125,362.9063 459.5,363.9766 Q460.1875,365.0469 461.5313,365.0469 Q462.1563,365.0469 462.75,364.7734 Q463.3438,364.5 463.9688,363.9219 L463.9688,366.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="475" y="365.1543">ConfigRootBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="447" x2="577" y1="377" y2="377"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="447" x2="577" y1="385" y2="385"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="661" y="345"/><ellipse cx="676" cy="361" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M678.9688,366.6406 Q678.3906,366.9375 677.75,367.0859 Q677.1094,367.2344 676.4063,367.2344 Q673.9063,367.2344 672.5859,365.5859 Q671.2656,363.9375 671.2656,360.8125 Q671.2656,357.6875 672.5859,356.0313 Q673.9063,354.375 676.4063,354.375 Q677.1094,354.375 677.7578,354.5313 Q678.4063,354.6875 678.9688,354.9844 L678.9688,357.7031 Q678.3438,357.125 677.75,356.8516 Q677.1563,356.5781 676.5313,356.5781 Q675.1875,356.5781 674.5,357.6484 Q673.8125,358.7188 673.8125,360.8125 Q673.8125,362.9063 674.5,363.9766 Q675.1875,365.0469 676.5313,365.0469 Q677.1563,365.0469 677.75,364.7734 Q678.3438,364.5 678.9688,363.9219 L678.9688,366.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="690" y="365.1543">ConfigConnectionsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="662" x2="841" y1="377" y2="377"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="662" x2="841" y1="385" y2="385"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="926" y="345"/><ellipse cx="941" cy="361" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M943.9688,366.6406 Q943.3906,366.9375 942.75,367.0859 Q942.1094,367.2344 941.4063,367.2344 Q938.9063,367.2344 937.5859,365.5859 Q936.2656,363.9375 936.2656,360.8125 Q936.2656,357.6875 937.5859,356.0313 Q938.9063,354.375 941.4063,354.375 Q942.1094,354.375 942.7578,354.5313 Q943.4063,354.6875 943.9688,354.9844 L943.9688,357.7031 Q943.3438,357.125 942.75,356.8516 Q942.1563,356.5781 941.5313,356.5781 Q940.1875,356.5781 939.5,357.6484 Q938.8125,358.7188 938.8125,360.8125 Q938.8125,362.9063 939.5,363.9766 Q940.1875,365.0469 941.5313,365.0469 Q942.1563,365.0469 942.75,364.7734 Q943.3438,364.5 943.9688,363.9219 L943.9688,366.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="955" y="365.1543">ConnectionsHolder</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="927" x2="1076" y1="377" y2="377"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="927" x2="1076" y1="385" y2="385"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="325" y="514"/><ellipse cx="340" cy="530" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M342.9688,535.6406 Q342.3906,535.9375 341.75,536.0859 Q341.1094,536.2344 340.4063,536.2344 Q337.9063,536.2344 336.5859,534.5859 Q335.2656,532.9375 335.2656,529.8125 Q335.2656,526.6875 336.5859,525.0313 Q337.9063,523.375 340.4063,523.375 Q341.1094,523.375 341.7578,523.5313 Q342.4063,523.6875 342.9688,523.9844 L342.9688,526.7031 Q342.3438,526.125 341.75,525.8516 Q341.1563,525.5781 340.5313,525.5781 Q339.1875,525.5781 338.5,526.6484 Q337.8125,527.7188 337.8125,529.8125 Q337.8125,531.9063 338.5,532.9766 Q339.1875,534.0469 340.5313,534.0469 Q341.1563,534.0469 341.75,533.7734 Q342.3438,533.5 342.9688,532.9219 L342.9688,535.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="354" y="534.1543">ConfigGlobalsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="326" x2="473" y1="546" y2="546"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="326" x2="473" y1="554" y2="554"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="558" y="514"/><ellipse cx="573" cy="530" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M575.9688,535.6406 Q575.3906,535.9375 574.75,536.0859 Q574.1094,536.2344 573.4063,536.2344 Q570.9063,536.2344 569.5859,534.5859 Q568.2656,532.9375 568.2656,529.8125 Q568.2656,526.6875 569.5859,525.0313 Q570.9063,523.375 573.4063,523.375 Q574.1094,523.375 574.7578,523.5313 Q575.4063,523.6875 575.9688,523.9844 L575.9688,526.7031 Q575.3438,526.125 574.75,525.8516 Q574.1563,525.5781 573.5313,525.5781 Q572.1875,525.5781 571.5,526.6484 Q570.8125,527.7188 570.8125,529.8125 Q570.8125,531.9063 571.5,532.9766 Q572.1875,534.0469 573.5313,534.0469 Q574.1563,534.0469 574.75,533.7734 Q575.3438,533.5 575.9688,532.9219 L575.9688,535.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="587" y="534.1543">ConfigTaskBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="559" x2="689" y1="546" y2="546"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="559" x2="689" y1="554" y2="554"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="840" y="514"/><ellipse cx="855" cy="530" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M857.9688,535.6406 Q857.3906,535.9375 856.75,536.0859 Q856.1094,536.2344 855.4063,536.2344 Q852.9063,536.2344 851.5859,534.5859 Q850.2656,532.9375 850.2656,529.8125 Q850.2656,526.6875 851.5859,525.0313 Q852.9063,523.375 855.4063,523.375 Q856.1094,523.375 856.7578,523.5313 Q857.4063,523.6875 857.9688,523.9844 L857.9688,526.7031 Q857.3438,526.125 856.75,525.8516 Q856.1563,525.5781 855.5313,525.5781 Q854.1875,525.5781 853.5,526.6484 Q852.8125,527.7188 852.8125,529.8125 Q852.8125,531.9063 853.5,532.9766 Q854.1875,534.0469 855.5313,534.0469 Q856.1563,534.0469 856.75,533.7734 Q857.3438,533.5 857.9688,532.9219 L857.9688,535.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="869" y="534.1543">LDAPConnectionWrapper</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="841" x2="1026" y1="546" y2="546"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="841" x2="1026" y1="554" y2="554"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="1111" y="514"/><ellipse cx="1126" cy="530" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M1128.9688,535.6406 Q1128.3906,535.9375 1127.75,536.0859 Q1127.1094,536.2344 1126.4063,536.2344 Q1123.9063,536.2344 1122.5859,534.5859 Q1121.2656,532.9375 1121.2656,529.8125 Q1121.2656,526.6875 1122.5859,525.0313 Q1123.9063,523.375 1126.4063,523.375 Q1127.1094,523.375 1127.7578,523.5313 Q1128.4063,523.6875 1128.9688,523.9844 L1128.9688,526.7031 Q1128.3438,526.125 1127.75,525.8516 Q1127.1563,525.5781 1126.5313,525.5781 Q1125.1875,525.5781 1124.5,526.6484 Q1123.8125,527.7188 1123.8125,529.8125 Q1123.8125,531.9063 1124.5,532.9766 Q1125.1875,534.0469 1126.5313,534.0469 Q1127.1563,534.0469 1127.75,533.7734 Q1128.3438,533.5 1128.9688,532.9219 L1128.9688,535.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="1140" y="534.1543">SQLConnectionWrapper</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="1112" x2="1289" y1="546" y2="546"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="1112" x2="1289" y1="554" y2="554"/><path d="M293,237.402 C293,264.53 293,299.053 293,325.932 " fill="none" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="286,237.103,293,217.103,300,237.103,286,237.103" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M603.813,235.107 C580.402,269.247 547.901,316.645 528.505,344.93 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="611.371,224.084,604.679,226.7704,604.5849,233.9809,611.2769,231.2945,611.371,224.084" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="540.7701" y="334.1107">1</text><path d="M660.187,235.107 C683.598,269.247 716.099,316.645 735.495,344.93 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="652.629,224.084,652.7231,231.2945,659.4151,233.9809,659.321,226.7704,652.629,224.084" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="726.5765" y="333.8692">1</text><path d="M717.791,229.137 C766.951,249.844 829.517,277.173 884,304 C909.809,316.708 938.057,332.21 960.443,344.887 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="705.594,224.02,709.5789,230.03,716.6593,228.6632,712.6744,222.6532,705.594,224.02" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="940.3539" y="334.0795">1</text><path d="M554.048,229.713 C509.638,250.529 453.206,277.777 404,304 C390.303,311.299 375.862,319.426 362.09,327.393 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="565.946,224.155,558.817,223.0699,555.0735,229.2332,562.2025,230.3183,565.946,224.155" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="369.9058" y="329.5824">*</text><path d="M866.942,84.262 C813.546,109.203 745.492,140.99 696.387,163.926 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="871.736,82.023,861.8889,82.2087,867.206,84.1395,865.2752,89.4566,871.736,82.023" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="718.7382" y="158.904">(1)</text><path d="M632,80.79 C632,106.143 632,139.778 632,163.784 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="632,75.512,628,84.512,632,80.512,636,84.512,632,75.512" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="627.3467" y="152.896">(2)</text><path d="M309.085,77.218 C381.325,103.343 482.243,139.84 551.944,165.048 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="304.369,75.512,311.4707,82.3359,309.0706,77.2135,314.1931,74.8134,304.369,75.512" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="525.8268" y="158.028">(3)</text><path d="M711.01,205.883 C728.372,206.356 746.904,206.384 764.735,205.975 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="769.744,205.848,760.6452,202.0781,764.7456,205.9751,760.8486,210.0756,769.744,205.848" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="18" x="719.1263" y="215.9221">(4)</text><path d="M488.718,404.131 C466.959,436.964 435.049,485.1131 416.017,513.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="495.953,393.214,489.3041,396.0055,489.3237,403.2166,495.9726,400.4251,495.953,393.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="428.1782" y="502.7996">1</text><path d="M535.282,404.131 C557.041,436.964 588.951,485.1131 607.983,513.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="528.047,393.214,528.0274,400.4251,534.6763,403.2166,534.6959,396.0055,528.047,393.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="599.8551" y="502.9429">*</text><path d="M987.342,405.43 C974.147,438.223 955.129,485.4893 943.725,513.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="992.257,393.214,986.3065,397.2873,987.7778,404.3467,993.7283,400.2734,992.257,393.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="951.3914" y="503.0132">*</text><path d="M1040.86,402.003 C1079.54,434.853 1137.99,484.486 1172.54,513.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="1030.51,393.214,1032.4943,400.1467,1039.6569,400.9815,1037.6726,394.0488,1030.51,393.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="1158.7617" y="503.0198">*</text></g></svg> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" height="595pt" style="width:1136px;height:595px;" version="1.1" viewBox="0 0 1136 595" width="1136pt"><defs><filter height="300%" id="f1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="159" x="571" y="175"/><ellipse cx="623.75" cy="191" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M626.7188,196.6406 Q626.1406,196.9375 625.5,197.0859 Q624.8594,197.2344 624.1563,197.2344 Q621.6563,197.2344 620.3359,195.5859 Q619.0156,193.9375 619.0156,190.8125 Q619.0156,187.6875 620.3359,186.0313 Q621.6563,184.375 624.1563,184.375 Q624.8594,184.375 625.5078,184.5313 Q626.1563,184.6875 626.7188,184.9844 L626.7188,187.7031 Q626.0938,187.125 625.5,186.8516 Q624.9063,186.5781 624.2813,186.5781 Q622.9375,186.5781 622.25,187.6484 Q621.5625,188.7188 621.5625,190.8125 Q621.5625,192.9063 622.25,193.9766 Q622.9375,195.0469 624.2813,195.0469 Q624.9063,195.0469 625.5,194.7734 Q626.0938,194.5 626.7188,193.9219 L626.7188,196.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="45" x="644.25" y="195.1543">SSSync</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="572" x2="729" y1="207" y2="207"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="572" x2="729" y1="227.8047" y2="227.8047"/><ellipse cx="582" cy="239.707" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="133" x="591" y="242.0151">void main(String[] args)</text><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="242" x="211" y="8"/><ellipse cx="270.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M273.7188,29.6406 Q273.1406,29.9375 272.5,30.0859 Q271.8594,30.2344 271.1563,30.2344 Q268.6563,30.2344 267.3359,28.5859 Q266.0156,26.9375 266.0156,23.8125 Q266.0156,20.6875 267.3359,19.0313 Q268.6563,17.375 271.1563,17.375 Q271.8594,17.375 272.5078,17.5313 Q273.1563,17.6875 273.7188,17.9844 L273.7188,20.7031 Q273.0938,20.125 272.5,19.8516 Q271.9063,19.5781 271.2813,19.5781 Q269.9375,19.5781 269.25,20.6484 Q268.5625,21.7188 268.5625,23.8125 Q268.5625,25.9063 269.25,26.9766 Q269.9375,28.0469 271.2813,28.0469 Q271.9063,28.0469 272.5,27.7734 Q273.0938,27.5 273.7188,26.9219 L273.7188,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="114" x="291.25" y="28.1543">SSSyncConfParser</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="212" x2="452" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="212" x2="452" y1="60.8047" y2="60.8047"/><ellipse cx="222" cy="72.707" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="214" x="231" y="75.0151">loadMainConfig(String mainConfigFile)</text><ellipse cx="222" cy="85.5117" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="216" x="231" y="87.8198">loadConnConfig(String connConfigFile)</text><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="327" x="488" y="8"/><ellipse cx="562.75" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M565.7188,29.6406 Q565.1406,29.9375 564.5,30.0859 Q563.8594,30.2344 563.1563,30.2344 Q560.6563,30.2344 559.3359,28.5859 Q558.0156,26.9375 558.0156,23.8125 Q558.0156,20.6875 559.3359,19.0313 Q560.6563,17.375 563.1563,17.375 Q563.8594,17.375 564.5078,17.5313 Q565.1563,17.6875 565.7188,17.9844 L565.7188,20.7031 Q565.0938,20.125 564.5,19.8516 Q563.9063,19.5781 563.2813,19.5781 Q561.9375,19.5781 561.25,20.6484 Q560.5625,21.7188 560.5625,23.8125 Q560.5625,25.9063 561.25,26.9766 Q561.9375,28.0469 563.2813,28.0469 Q563.9063,28.0469 564.5,27.7734 Q565.0938,27.5 565.7188,26.9219 L565.7188,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="169" x="583.25" y="28.1543">SSSyncConnectionsFactory</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="489" x2="814" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="489" x2="814" y1="73.6094" y2="73.6094"/><ellipse cx="499" cy="85.5117" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="301" x="508" y="87.8198">setupConnections(ConfigConnectionsBean confConn)</text><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="278" x="849" y="8"/><ellipse cx="920.25" cy="24" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M923.2188,29.6406 Q922.6406,29.9375 922,30.0859 Q921.3594,30.2344 920.6563,30.2344 Q918.1563,30.2344 916.8359,28.5859 Q915.5156,26.9375 915.5156,23.8125 Q915.5156,20.6875 916.8359,19.0313 Q918.1563,17.375 920.6563,17.375 Q921.3594,17.375 922.0078,17.5313 Q922.6563,17.6875 923.2188,17.9844 L923.2188,20.7031 Q922.5938,20.125 922,19.8516 Q921.4063,19.5781 920.7813,19.5781 Q919.4375,19.5781 918.75,20.6484 Q918.0625,21.7188 918.0625,23.8125 Q918.0625,25.9063 918.75,26.9766 Q919.4375,28.0469 920.7813,28.0469 Q921.4063,28.0469 922,27.7734 Q922.5938,27.5 923.2188,26.9219 L923.2188,29.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="127" x="940.75" y="28.1543">SSSyncTasksFactory</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="850" x2="1126" y1="40" y2="40"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="850" x2="1126" y1="60.8047" y2="60.8047"/><ellipse cx="860" cy="79.1094" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="252" x="869" y="75.0151">setupTasks(ConnectionsHolder connections,</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="147" x="941" y="87.8198">ConfigRootBean confMain)</text><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="139" x="234" y="350"/><ellipse cx="249" cy="366" fill="#A9DCDF" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M249.1094,361.3438 L247.9531,366.4219 L250.2813,366.4219 L249.1094,361.3438 Z M247.625,359.1094 L250.6094,359.1094 L253.9688,371.5 L251.5156,371.5 L250.75,368.4375 L247.4688,368.4375 L246.7188,371.5 L244.2813,371.5 L247.625,359.1094 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="107" x="263" y="370.1543">AbstractSyncTask</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="235" x2="372" y1="382" y2="382"/><polygon fill="none" points="245,388.9023,249,392.9023,245,396.9023,241,392.9023" style="stroke: #B38D22; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="94" x="254" y="396.2104">String taskName</text><polygon fill="none" points="245,401.707,249,405.707,245,409.707,241,405.707" style="stroke: #B38D22; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="87" x="254" y="409.0151">boolean dryRun</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="235" x2="372" y1="415.6094" y2="415.6094"/><ellipse cx="245" cy="427.5117" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="76" x="254" y="429.8198">Boolean call()</text><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="144" x="232" y="187"/><ellipse cx="247" cy="203" fill="#B4A7E5" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M242.9219,198.7656 L242.9219,196.6094 L250.3125,196.6094 L250.3125,198.7656 L247.8438,198.7656 L247.8438,206.8438 L250.3125,206.8438 L250.3125,209 L242.9219,209 L242.9219,206.8438 L245.3906,206.8438 L245.3906,198.7656 L242.9219,198.7656 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" font-style="italic" lengthAdjust="spacingAndGlyphs" textLength="112" x="261" y="207.1543">Callable&lt;Boolean&gt;</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="233" x2="375" y1="219" y2="219"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="233" x2="375" y1="227" y2="227"/><rect fill="#FEFECE" filter="url(#f1)" height="86.4141" style="stroke: #A80036; stroke-width: 1.5;" width="169" x="6" y="349"/><ellipse cx="41.7" cy="365" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M44.6688,370.6406 Q44.0906,370.9375 43.45,371.0859 Q42.8094,371.2344 42.1063,371.2344 Q39.6063,371.2344 38.2859,369.5859 Q36.9656,367.9375 36.9656,364.8125 Q36.9656,361.6875 38.2859,360.0313 Q39.6063,358.375 42.1063,358.375 Q42.8094,358.375 43.4578,358.5313 Q44.1063,358.6875 44.6688,358.9844 L44.6688,361.7031 Q44.0438,361.125 43.45,360.8516 Q42.8563,360.5781 42.2313,360.5781 Q40.8875,360.5781 40.2,361.6484 Q39.5125,362.7188 39.5125,364.8125 Q39.5125,366.9063 40.2,367.9766 Q40.8875,369.0469 42.2313,369.0469 Q42.8563,369.0469 43.45,368.7734 Q44.0438,368.5 44.6688,367.9219 L44.6688,370.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="91" x="60.3" y="369.1543">BasicSyncTask</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="174" y1="381" y2="381"/><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="389.9023"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="26" y="395.2104">MVDataReader srcReader</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="402.707"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="143" x="26" y="408.0151">MVDataReader dstReader</text><rect fill="none" height="6" style="stroke: #C82930; stroke-width: 1.0;" width="6" x="14" y="415.5117"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="129" x="26" y="420.8198">MVDataWriter dstWriter</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="7" x2="174" y1="427.4141" y2="427.4141"/><rect fill="#FEFECE" filter="url(#f1)" height="73.6094" style="stroke: #A80036; stroke-width: 1.5;" width="174" x="789" y="174"/><ellipse cx="822.9" cy="190" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M825.8688,195.6406 Q825.2906,195.9375 824.65,196.0859 Q824.0094,196.2344 823.3063,196.2344 Q820.8063,196.2344 819.4859,194.5859 Q818.1656,192.9375 818.1656,189.8125 Q818.1656,186.6875 819.4859,185.0313 Q820.8063,183.375 823.3063,183.375 Q824.0094,183.375 824.6578,183.5313 Q825.3063,183.6875 825.8688,183.9844 L825.8688,186.7031 Q825.2438,186.125 824.65,185.8516 Q824.0563,185.5781 823.4313,185.5781 Q822.0875,185.5781 821.4,186.6484 Q820.7125,187.7188 820.7125,189.8125 Q820.7125,191.9063 821.4,192.9766 Q822.0875,194.0469 823.4313,194.0469 Q824.0563,194.0469 824.65,193.7734 Q825.2438,193.5 825.8688,192.9219 L825.8688,195.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="841.1" y="194.1543">ExecutorService</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="790" x2="962" y1="206" y2="206"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="790" x2="962" y1="226.8047" y2="226.8047"/><ellipse cx="800" cy="238.707" fill="#84BE84" rx="3" ry="3" style="stroke: #038048; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacingAndGlyphs" textLength="148" x="809" y="241.0151">invokeAll(Callable tasks...)</text><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="703" y="369"/><ellipse cx="718" cy="385" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M720.9688,390.6406 Q720.3906,390.9375 719.75,391.0859 Q719.1094,391.2344 718.4063,391.2344 Q715.9063,391.2344 714.5859,389.5859 Q713.2656,387.9375 713.2656,384.8125 Q713.2656,381.6875 714.5859,380.0313 Q715.9063,378.375 718.4063,378.375 Q719.1094,378.375 719.7578,378.5313 Q720.4063,378.6875 720.9688,378.9844 L720.9688,381.7031 Q720.3438,381.125 719.75,380.8516 Q719.1563,380.5781 718.5313,380.5781 Q717.1875,380.5781 716.5,381.6484 Q715.8125,382.7188 715.8125,384.8125 Q715.8125,386.9063 716.5,387.9766 Q717.1875,389.0469 718.5313,389.0469 Q719.1563,389.0469 719.75,388.7734 Q720.3438,388.5 720.9688,387.9219 L720.9688,390.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="732" y="389.1543">ConfigRootBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="704" x2="834" y1="401" y2="401"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="704" x2="834" y1="409" y2="409"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="181" x="918" y="369"/><ellipse cx="933" cy="385" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M935.9688,390.6406 Q935.3906,390.9375 934.75,391.0859 Q934.1094,391.2344 933.4063,391.2344 Q930.9063,391.2344 929.5859,389.5859 Q928.2656,387.9375 928.2656,384.8125 Q928.2656,381.6875 929.5859,380.0313 Q930.9063,378.375 933.4063,378.375 Q934.1094,378.375 934.7578,378.5313 Q935.4063,378.6875 935.9688,378.9844 L935.9688,381.7031 Q935.3438,381.125 934.75,380.8516 Q934.1563,380.5781 933.5313,380.5781 Q932.1875,380.5781 931.5,381.6484 Q930.8125,382.7188 930.8125,384.8125 Q930.8125,386.9063 931.5,387.9766 Q932.1875,389.0469 933.5313,389.0469 Q934.1563,389.0469 934.75,388.7734 Q935.3438,388.5 935.9688,387.9219 L935.9688,390.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="149" x="947" y="389.1543">ConfigConnectionsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="919" x2="1098" y1="401" y2="401"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="919" x2="1098" y1="409" y2="409"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="151" x="457" y="369"/><ellipse cx="472" cy="385" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M474.9688,390.6406 Q474.3906,390.9375 473.75,391.0859 Q473.1094,391.2344 472.4063,391.2344 Q469.9063,391.2344 468.5859,389.5859 Q467.2656,387.9375 467.2656,384.8125 Q467.2656,381.6875 468.5859,380.0313 Q469.9063,378.375 472.4063,378.375 Q473.1094,378.375 473.7578,378.5313 Q474.4063,378.6875 474.9688,378.9844 L474.9688,381.7031 Q474.3438,381.125 473.75,380.8516 Q473.1563,380.5781 472.5313,380.5781 Q471.1875,380.5781 470.5,381.6484 Q469.8125,382.7188 469.8125,384.8125 Q469.8125,386.9063 470.5,387.9766 Q471.1875,389.0469 472.5313,389.0469 Q473.1563,389.0469 473.75,388.7734 Q474.3438,388.5 474.9688,387.9219 L474.9688,390.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="119" x="486" y="389.1543">ConnectionsHolder</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="458" x2="607" y1="401" y2="401"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="458" x2="607" y1="409" y2="409"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="149" x="700" y="538"/><ellipse cx="715" cy="554" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M717.9688,559.6406 Q717.3906,559.9375 716.75,560.0859 Q716.1094,560.2344 715.4063,560.2344 Q712.9063,560.2344 711.5859,558.5859 Q710.2656,556.9375 710.2656,553.8125 Q710.2656,550.6875 711.5859,549.0313 Q712.9063,547.375 715.4063,547.375 Q716.1094,547.375 716.7578,547.5313 Q717.4063,547.6875 717.9688,547.9844 L717.9688,550.7031 Q717.3438,550.125 716.75,549.8516 Q716.1563,549.5781 715.5313,549.5781 Q714.1875,549.5781 713.5,550.6484 Q712.8125,551.7188 712.8125,553.8125 Q712.8125,555.9063 713.5,556.9766 Q714.1875,558.0469 715.5313,558.0469 Q716.1563,558.0469 716.75,557.7734 Q717.3438,557.5 717.9688,556.9219 L717.9688,559.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="117" x="729" y="558.1543">ConfigGlobalsBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="701" x2="848" y1="570" y2="570"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="701" x2="848" y1="578" y2="578"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="132" x="933" y="538"/><ellipse cx="948" cy="554" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M950.9688,559.6406 Q950.3906,559.9375 949.75,560.0859 Q949.1094,560.2344 948.4063,560.2344 Q945.9063,560.2344 944.5859,558.5859 Q943.2656,556.9375 943.2656,553.8125 Q943.2656,550.6875 944.5859,549.0313 Q945.9063,547.375 948.4063,547.375 Q949.1094,547.375 949.7578,547.5313 Q950.4063,547.6875 950.9688,547.9844 L950.9688,550.7031 Q950.3438,550.125 949.75,549.8516 Q949.1563,549.5781 948.5313,549.5781 Q947.1875,549.5781 946.5,550.6484 Q945.8125,551.7188 945.8125,553.8125 Q945.8125,555.9063 946.5,556.9766 Q947.1875,558.0469 948.5313,558.0469 Q949.1563,558.0469 949.75,557.7734 Q950.3438,557.5 950.9688,556.9219 L950.9688,559.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="100" x="962" y="558.1543">ConfigTaskBean</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="934" x2="1064" y1="570" y2="570"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="934" x2="1064" y1="578" y2="578"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="187" x="166" y="538"/><ellipse cx="181" cy="554" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M183.9688,559.6406 Q183.3906,559.9375 182.75,560.0859 Q182.1094,560.2344 181.4063,560.2344 Q178.9063,560.2344 177.5859,558.5859 Q176.2656,556.9375 176.2656,553.8125 Q176.2656,550.6875 177.5859,549.0313 Q178.9063,547.375 181.4063,547.375 Q182.1094,547.375 182.7578,547.5313 Q183.4063,547.6875 183.9688,547.9844 L183.9688,550.7031 Q183.3438,550.125 182.75,549.8516 Q182.1563,549.5781 181.5313,549.5781 Q180.1875,549.5781 179.5,550.6484 Q178.8125,551.7188 178.8125,553.8125 Q178.8125,555.9063 179.5,556.9766 Q180.1875,558.0469 181.5313,558.0469 Q182.1563,558.0469 182.75,557.7734 Q183.3438,557.5 183.9688,556.9219 L183.9688,559.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="155" x="195" y="558.1543">LDAPConnectionWrapper</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="167" x2="352" y1="570" y2="570"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="167" x2="352" y1="578" y2="578"/><rect fill="#FEFECE" filter="url(#f1)" height="48" style="stroke: #A80036; stroke-width: 1.5;" width="179" x="437" y="538"/><ellipse cx="452" cy="554" fill="#ADD1B2" rx="11" ry="11" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M454.9688,559.6406 Q454.3906,559.9375 453.75,560.0859 Q453.1094,560.2344 452.4063,560.2344 Q449.9063,560.2344 448.5859,558.5859 Q447.2656,556.9375 447.2656,553.8125 Q447.2656,550.6875 448.5859,549.0313 Q449.9063,547.375 452.4063,547.375 Q453.1094,547.375 453.7578,547.5313 Q454.4063,547.6875 454.9688,547.9844 L454.9688,550.7031 Q454.3438,550.125 453.75,549.8516 Q453.1563,549.5781 452.5313,549.5781 Q451.1875,549.5781 450.5,550.6484 Q449.8125,551.7188 449.8125,553.8125 Q449.8125,555.9063 450.5,556.9766 Q451.1875,558.0469 452.5313,558.0469 Q453.1563,558.0469 453.75,557.7734 Q454.3438,557.5 454.9688,556.9219 L454.9688,559.6406 Z "/><text fill="#000000" font-family="sans-serif" font-size="12" lengthAdjust="spacingAndGlyphs" textLength="147" x="466" y="558.1543">SQLConnectionWrapper</text><line style="stroke: #A80036; stroke-width: 1.5;" x1="438" x2="615" y1="570" y2="570"/><line style="stroke: #A80036; stroke-width: 1.5;" x1="438" x2="615" y1="578" y2="578"/><path d="M681.765,259.19 C704.732,294.42 735.17,341.108 753.351,368.997 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="674.595,248.193,674.5212,255.4037,681.1488,258.2452,681.2227,251.0345,674.595,248.193" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="744.7534" y="357.9061">1</text><path d="M734.544,254.239 C805.14,289.931 903.736,339.78 961.524,368.997 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="722.586,248.193,726.1357,254.4699,733.295,253.6075,729.7453,247.3306,722.586,248.193" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="938.4348" y="357.7341">1</text><path d="M620.235,259.19 C597.268,294.42 566.83,341.108 548.649,368.997 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="627.405,248.193,620.7773,251.0345,620.8512,258.2452,627.4788,255.4037,627.405,248.193" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="560.6337" y="357.9349">1</text><path d="M562.036,253.836 C517.495,275.259 462.976,302.206 415,328 C401.33,335.35 386.901,343.499 373.133,351.473 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="574.023,248.088,566.8833,247.0755,563.2027,253.2766,570.3424,254.2891,574.023,248.088" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="380.9488" y="353.6571">*</text><path d="M304,255.208 C304,283.975 304,321.313 304,349.863 " fill="none" style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 7.0,7.0;"/><polygon fill="none" points="297,255.168,304,235.168,311,255.168,297,255.168" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M174.578,392.395 C187.459,392.455 200.793,392.518 213.789,392.578 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="none" points="213.85,385.579,233.817,392.672,213.785,399.578,213.85,385.579" style="stroke: #A80036; stroke-width: 1.0;"/><path d="M893.034,96.234 C855.347,114.198 811.62,135.058 772,154 C757.919,160.732 742.92,167.913 728.448,174.847 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="897.6,94.057,887.7546,94.3181,893.0864,96.2081,891.1964,101.5399,897.6,94.057" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="29" x="737.9316" y="172.5997">(#3)</text><path d="M651,99.234 C651,123.432 651,152.291 651,174.757 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="651,94.145,647,103.145,651,99.145,655,103.145,651,94.145" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="29" x="640.7675" y="163.7974">(#2)</text><path d="M422.202,96.525 C471.291,121.3 531.25,151.562 577.472,174.89 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="417.486,94.145,423.7178,101.7716,421.9495,96.3982,427.3229,94.6299,417.486,94.145" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="29" x="543.5816" y="163.8965">(#1)</text><path d="M730.01,223.883 C747.372,224.356 765.904,224.384 783.735,223.975 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="788.744,223.848,779.6452,220.0781,783.7456,223.9751,779.8486,228.0756,788.744,223.848" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="29" x="737.9867" y="234.9615">(#4)</text><path d="M770.324,430.304 C771.487,463.058 773.145,509.7401 774.142,537.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="769.86,417.214,766.0755,423.3522,770.2859,429.2064,774.0705,423.0682,769.86,417.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="8" x="774.0672" y="526.8799">1</text><path d="M812.49,424.956 C857.175,457.79 925.744,508.1725 966.108,537.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="801.953,417.214,804.4191,423.9903,811.6226,424.3202,809.1566,417.5439,801.953,417.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="950.2652" y="526.9727">*</text><path d="M483.021,423.939 C430.066,456.721 347.553,507.8008 299.132,537.7752 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="494.176,417.034,486.969,416.7914,483.9731,423.3507,491.1801,423.5933,494.176,417.034" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="331.4344" y="526.7786">*</text><path d="M531.676,430.304 C530.513,463.058 528.855,509.7401 527.858,537.8313 " fill="none" style="stroke: #A80036; stroke-width: 1.0;"/><polygon fill="#A80036" points="532.14,417.214,527.9295,423.0682,531.7141,429.2064,535.9245,423.3522,532.14,417.214" style="stroke: #A80036; stroke-width: 1.0;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="7" x="529.3654" y="527.0219">*</text></g></svg> \ No newline at end of file