public static String saveTopologyData(Customer cust, TopologyData3 td) { String text = null; try { boolean needRollback = true; Connection c = ManagementContainer.getInstance().getDBConnection(ManagementContainer.POOL_NAME); try { TopologyStats ts = saveTopologyData(cust, td, c); if (td.getRunType() != DirectoryData.TYPE_MANUAL_NOCOMMIT) { c.commit(); needRollback = false; } switch (td.getRunType()) { case DirectoryData.TYPE_MANUAL_FORCED: text = s_topologySuccessMessageForced.format( new Object[] { ts.getAdminGroupCount(), ts.getRoutingGroupCount(), ts.getServerCount(), ts.getStoreCount() }); break; case DirectoryData.TYPE_MANUAL_NOCOMMIT: text = s_topologySuccessMessageNoCommit.format( new Object[] { ts.getAdminGroupCount(), ts.getRoutingGroupCount(), ts.getServerCount(), ts.getStoreCount() }); break; default: text = s_topologySuccessMessage.format( new Object[] { ts.getAdminGroupCount(), ts.getRoutingGroupCount(), ts.getServerCount(), ts.getStoreCount() }); } return text; } finally { if (needRollback) { c.rollback(); } ManagementContainer.getInstance().safeReturnDBConnection(c, ManagementContainer.POOL_NAME); // report info **after** connection is closed if (s_logger.isDebugEnabled()) { s_logger.debug("saveTopologyData completed: " + text); } } } catch (Exception e) { s_logger.error("Exception while saving the topology data.", e); return "An error occurred while saving the topology data."; } }