Passar registro de um DataTable para outro DataTable

Olá pessoal, sou novo aqui no forum e também no ramo da programaçao, estou tendo dificuldades em implementar algumas coisas no meu sistema. Uma delas é conseguir fazer com que os dados do meu DataTable Itens do Deposito ao apertar no botao “+” seja transferido para mu DataTable controle de estoque e o DataTable Itens do deposito fique sem nada e se caso o usuario quiser voltar a ação basta apenas apertar no botao “-”. alguém conhece uma forma de se fazer isso?

Meu managerBean:
package br.com.deposito.bean;

import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.event.ActionEvent;

import org.omnifaces.util.Messages;

import br.com.deposito.DAO.ControleEstoqueDAO;
import br.com.deposito.DAO.ProdutoDAO;
import br.com.deposito.domain.ControleEstoque;
import br.com.deposito.domain.Produto;

@ManagedBean
@ViewScoped
public class itemDepositoBean {

private Produto produto;

public Produto getProduto() {
	return produto;
}

public void setProduto(Produto produto) {
	this.produto = produto;
}

private ControleEstoque controleEstoque;

private List<Produto> produtos;

private List<ControleEstoque> controlesEstoque;

public List<ControleEstoque> getControlesEstoque() {
	return controlesEstoque;
}

public void setControlesEstoque(List<ControleEstoque> controlesEstoque) {
	this.controlesEstoque = controlesEstoque;
}

public List<Produto> getProdutos() {
	return produtos;
}

public void setProdutos(List<Produto> produtos) {
	this.produtos = produtos;
}

public ControleEstoque getControleEstoque() {
	return controleEstoque;
}

public void setControleEstoque(ControleEstoque controleEstoque) {
	this.controleEstoque = controleEstoque;
}

@PostConstruct
public void listar() {
	try {
		ProdutoDAO produtoDAO = new ProdutoDAO();
		this.produtos = produtoDAO.listar();

		controlesEstoque = new ArrayList<>();
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao tentar carregar Itens do deposito");
		erro.printStackTrace();
	}
}

public void novo() {
	try {
		controleEstoque = new ControleEstoque();
		ProdutoDAO produtoDAO = new ProdutoDAO();
		produtos = produtoDAO.listar();

		controlesEstoque = new ArrayList<>();
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao tentar carregar a tela de controle de estoque");
		erro.printStackTrace();
	}
}

public void adicionar(ActionEvent evento) {
	Produto produto = (Produto) evento.getComponent().getAttributes().get("produtoSelecionado");

	ControleEstoque controleEstoque = new ControleEstoque();
	controleEstoque.setEstadoItem(produto.getEstadoItem());
	controleEstoque.setProduto(produto);
	controlesEstoque.add(controleEstoque);

}

public void remover(ActionEvent evento) {
	ControleEstoque controleEstoque = (ControleEstoque) evento.getComponent().getAttributes().get("itemSelecionado");

	int achou = -1;
	for (int posicao = 0; posicao < controlesEstoque.size(); posicao++) {
		if (controlesEstoque.get(posicao).getProduto().equals(controleEstoque.getProduto())) {
			achou = posicao;
		}
	}

	if (achou > -1) {
		controlesEstoque.remove(achou);
	}
}

public void acaoProduto() {

	try {
		
		ControleEstoqueDAO controleEstoqueDAO = new ControleEstoqueDAO();
		
		produto.getQuantidade();
		
		controleEstoqueDAO.salvar(controleEstoque);
		controlesEstoque = controleEstoqueDAO.listar();
		
		Messages.addGlobalInfo("Funcionario salvo com sucesso");
	} catch (RuntimeException erro) {
		Messages.addGlobalError("Ocorreu um erro ao tentar salvar o funcionario");
		erro.printStackTrace();
	}
	
}

}

minha pagina XHTML

<?xml version="1.0" encoding="UTF-8" ?>

<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:h=“http://xmlns.jcp.org/jsf/html
xmlns:f=“http://xmlns.jcp.org/jsf/core
xmlns:p=“http://primefaces.org/ui
xmlns:ui=“http://xmlns.jcp.org/jsf/facelets
template="/templates/modelo.xhtml">

	<ui:define name="conteudo">
	<h:form id="formListagem">
	<p:panel header="Itens do Deposito">
	<!-- rendered="#{itemDepositoBean.controlesEstoque.size() eq 0 }" -->
		<p:dataTable id="deposito" emptyMessage="Nenhum registro encontrado." 
			paginator="true" var="deposito"	rows="3" value="#{itemDepositoBean.produtos}" 
			paginatorPosition="top">

			<p:column headerText="codigo" sortBy="#{deposito.codigoIndetificao}">
				<h:outputText value="#{deposito.codigoIndetificao}" >
					
				</h:outputText>
			</p:column>

			<p:column headerText="Produto" filterBy="#{deposito.nome}"
				sortBy="#{deposito.nome}">
				<h:outputText value="#{deposito.nome}" />
			</p:column>

			<p:column headerText="Quantidade" sortBy="#{deposito.quantidade}">
				<h:outputText value="#{deposito.quantidade}" />
			</p:column>

			<p:column headerText="Data de Entrada"
				filterBy="#{deposito.dataEntrada}"
				sortBy="#{deposito.dataEntrada}">
				<h:outputText value="#{deposito.dataEntrada}" />
			</p:column>

			<p:column  headerText="Opções">
				<p:commandButton icon="ui-icon-plus" actionListener="#{itemDepositoBean.adicionar}"
				update=":formListagem:controleEstoque">
				<f:attribute name="produtoSelecionado" value="#{deposito}" />
				</p:commandButton>
			</p:column>
		</p:dataTable>
	</p:panel>
	
	<!--rendered="#{itemDepositoBean.controlesEstoque.size() >0}"  -->
	<p:panel id="painelControleEstoque" header="Controle de Estoque" >
	
	<p:dataTable id="controleEstoque" emptyMessage="Nenhum registro encontrado."
			paginator="true" value="#{itemDepositoBean.controlesEstoque}" var="deposito"
			rows="4" paginatorPosition="top" update=":formListagem">

			<p:column headerText="Nome">
				<h:outputText value="#{deposito.produto.nome}" />
			</p:column>

			<p:column headerText="Estado">
				<h:outputText value="#{deposito.produto.estadoItem}">
				</h:outputText>
			</p:column>

			<p:column headerText="Disponivel">
				<h:outputText value="#{deposito.produto.quantidade}" />
			</p:column>
			
			<p:column headerText="Doados">
					<h:outputText value="#{deposito.doado}" />
				</p:column>
			
			<p:column headerText="Destruídos">
				<h:outputText value="#{deposito.destruido}">
				</h:outputText>
			</p:column>
			
			<p:column headerText=" Incorporados">
				<h:outputText value="#{deposito.incorporado}">
				</h:outputText>
				</p:column>
				
				<p:column headerText=" Leiloados">
				<h:outputText value="#{ItemDeposito.leiloado}">
				</h:outputText>
			</p:column>
			
			<p:column  headerText="Opções">
				<p:commandButton icon="ui-icon-minus" actionListener="#{itemDepositoBean.remover}"
				update=":formListagem:controleEstoque">
				<f:attribute name="itemSelecionado" value="#{deposito}"/>
				</p:commandButton>
			</p:column>
		</p:dataTable>
	</p:panel>
			<p:panel header="Ações">
		<h:panelGrid id="painelAcoes" columns="3">
			<p:commandButton value="Ação"  
			update=":mensagem :formAcoes:Acoes"	oncomplete="PF('dialogo').show();"/>
		</h:panelGrid>
	</p:panel>
</h:form>

<p:dialog header="Escolher uma açao" widgetVar="dialogo"
	draggable="false" resizable="false" modal="false" closable="false">
	<h:form id="formAcoes">
		<h:panelGrid id="Acoes" columns="2">
			<p:outputLabel  for="produto" value="produto:" />
			<p:selectOneMenu id="produto" converter="omnifaces.SelectItemsConverter" filter="true"
				filterMatchMode="contains" required="true"
				requiredMessage="O campo Produto é obrigatório">
				<f:selectItem noSelectionOption="true"
					itemLabel="Selecione um produto" />
				<f:selectItems value="#{itemDepositoBean.produtos}" var="produto"
					itemValue="#{produto}" itemLabel="#{produto.nome} - #{produto.quantidade}" />
			</p:selectOneMenu>

			<p:outputLabel for="doacao" value="Doação:" />
				<p:inputText id="doacao" maxlength="20" size="15"
					value="#{controleEstoque.doado}"
					 />
					 <p:outputLabel for="destruidos" value="Destuidos:" />
				<p:inputText id="destruidos" maxlength="20" size="15"
					value="#{controleEstoque.destruido}"/>
			
			 <p:outputLabel for="incorporados" value="Incorporados:" />
				<p:inputText id="incorporados" maxlength="20" size="15"
					value="#{controleEstoque.incorporado}"/>
					
					 <p:outputLabel for="leiloados" value="Leiloados:" />
				<p:inputText id="leiloados" maxlength="20" size="15"
					value="#{controleEstoque.leiloado}"/>
		</h:panelGrid>

		<h:panelGrid columns="2">
			<p:commandButton value="Salvar"  actionListener="#{itemDepositoBean.acaoProduto}"
				update=" :formListagem:deposito :formListagem:controleEstoque :formListagem:painelAcoes"
			 oncomplete="PF('dialogo').hide();" />
			<p:commandButton value="Fechar" oncomplete="PF('dialogo').hide();" />
		</h:panelGrid>
	</h:form>
</p:dialog>

</ui:define>
</ui:composition>