code: public DataRestore getDataRestorer(DataRestoreContext dataRestoreContext) throws BackupException
     {
        try
        {
           List<DataRestore> restorers = new ArrayList<DataRestore>();
           Map<String, TableTransformationRule> tables = new LinkedHashMap<String, TableTransformationRule>();
  
           Connection jdbcConn = getJdbcConnection(dataRestoreContext);
           DBCleanerTool dbCleaner = getDbCleaner(dataRestoreContext, jdbcConn);
           File storageDir = getStorageDir(dataRestoreContext);
  
           TableTransformationRuleGenerator tableTransformationRuleGenerator =
              new TableTransformationRuleGenerator(containerConfig, storageDir);
  
           tables.put(DBInitializerHelper.getItemTableName(containerConfig),
              tableTransformationRuleGenerator.getItemTableTransformationRule());
           tables.put(DBInitializerHelper.getValueTableName(containerConfig),
              tableTransformationRuleGenerator.getValueTableTransformationRule());
           tables.put(DBInitializerHelper.getRefTableName(containerConfig),
              tableTransformationRuleGenerator.getRefTableTransformationRule());
  
           restorers.add(new DBRestore(storageDir, jdbcConn, tables, wsConfig, containerConfig.spoolConfig.fileCleaner,
              dbCleaner));
  
           if (wsConfig.getContainer().getValueStorages() != null)
           {
              List<File> dataDirsList = initDataDirs();
              List<File> backupDirsList = initBackupDirs(storageDir);
  
              if (!(dataDirsList.isEmpty() && backupDirsList.isEmpty()))
              {
                 restorers.add(new DirectoryRestore(dataDirsList, backupDirsList));
              }
           }
  
           return new ComplexDataRestore(restorers);
        }
        catch (IOException e)
        {
           throw new BackupException(e);
        }
        catch (NamingException e)
        {
           throw new BackupException(e);
        }
        catch (SQLException e)
        {
           throw new BackupException(e);
        }
        catch (RepositoryConfigurationException e)
        {
           throw new BackupException(e);
        }
     }
docs: {@inheritDoc}