Sale.xml
Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
>
<class
name="entidades.Venda"
table="venda"
>
<id
name="codigo"
column="cod_venda"
type="int"
>
<generator class="increment">
</generator>
</id>
// other implementancion
<set
name="itens"
lazy="true"
inverse="true"
cascade="all-delete-orphan"
sort="unsorted"
>
<key
column="cod_venda"
>
</key>
<one-to-many
class="entidades.VendaItem"
/>
</set>
</class>
</hibernate-mapping>
SaleItemsCode:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
>
<class
name="entidades.VendaItem"
table="item_venda"
>
<composite-id
name="id"
class="entidades.VendaItemPK"
>
<key-many-to-one
name="venda"
class="entidades.Venda"
column="cod_venda"
/>
<key-property
name="codItem"
type="int"
column="cod_item"
/>
</composite-id>
// other implementacions
</class>
</hibernate-mapping>
MyProgramCode:
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Hashtable;
import java.util.Iterator;
import javax.ejb.EJBException;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.jboss.naming.Util;
import biblioteca.arquivos.ManipulaArquivo;
import entidades.Caixa;
import entidades.CaixaOperador;
import entidades.Funcionario;
import entidades.Troca;
import entidades.Venda;
import entidades.VendaItem;
import entidades.VendaItemPK;
public class Teste {
private static final String SESSION_FACTORY_NAME = "java:/hibernate/SessionFactory";
// other implementacions
/**
*
* @ejb.interface-method view-type = "remote"
*
* @throws EJBException
* Thrown if method fails due to system-level error.
*
*/
public void salvar(File arquivo, Calendar dataMovimento, int loja) throws FileNotFoundException, IOException {
Hashtable movimento = ManipulaArquivo.Carregar(arquivo);
Populuns p = new Populuns();
Venda v = null;
// Varre todo o arquivo gravando linha a linha
for (int x = 0; x < (movimento.size()); x++) {
String linha = ((String) movimento.get(String.valueOf(x)));
String codigo = linha.substring(0, 2);
// Início de Venda
if( codigo.equalsIgnoreCase("05") ) {
v = new Venda();
v = (Venda) p.setVariaveis( codigo, v, linha );
}
// Venda de Item
else if( codigo.equalsIgnoreCase("06") ) {
VendaItem i = new VendaItem();
i = (VendaItem) p.setVariaveis( codigo, i, linha );
// Criando a PK
VendaItemPK vipk = new VendaItemPK();
vipk.setCodItem( v.getItens().size() + 1 );
vipk.setVenda(v);
i.setId( vipk );
// Adiciona a lista para que possa ser gerada a sequencia
v.getItens().add( p.setVariaveis( codigo, i, linha ) );
}
// Fim de Venda
else if( codigo.equalsIgnoreCase("07") ) {
v = (Venda) p.setVariaveis( codigo, v, linha );
// Salva
Session s = getSession();
Transaction tx = s.beginTransaction();
s.save(v);
tx.commit();
}
}
}
private Session getSession() {
try {
SessionFactory sf = (SessionFactory) Util.lookup(
SESSION_FACTORY_NAME, SessionFactory.class);
return sf.getCurrentSession();
} catch (HibernateException e) {
throw e;
} catch (Exception e) {
throw new HibernateException("Unable to locate current session", e);
}
}
}