Package pl.zgora.uz.wmie.fe.service.impl

Source Code of pl.zgora.uz.wmie.fe.service.impl.StanowiskoService

package pl.zgora.uz.wmie.fe.service.impl;

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

import javax.ejb.ApplicationException;
import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.ejb.Stateless;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.jws.WebMethod;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.transaction.TransactionManager;

import org.hibernate.Hibernate;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

import pl.zgora.uz.wmie.fe.enums.DzialType;
import pl.zgora.uz.wmie.fe.hbm.classes.Dzial;
import pl.zgora.uz.wmie.fe.hbm.classes.Stanowisko;
import pl.zgora.uz.wmie.fe.service.DzialService;

/**
* @author Miro007
*/
@Stateless
@TransactionManagement(TransactionManagementType.CONTAINER)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class StanowiskoService extends BaseService<Stanowisko, Integer>
    implements pl.zgora.uz.wmie.fe.service.StanowiskoService {

  @EJB
  private DzialService dzialService;

  public List<Stanowisko> getStanowiskaWithPracownicy() throws Exception {
    List<Stanowisko> result = new ArrayList<Stanowisko>();
    try {
      Session session = getSession();

      // pobranie seta
      result = session.createCriteria(Stanowisko.class).list();
      for (Stanowisko stanowisko : result) {
        Hibernate.initialize(stanowisko.getPracowniks());
        session.evict(stanowisko);
      }
    } catch (HibernateException e) {
      handleException(e);
    }
    return result;

  }

  /*
   * Przyklad metody z obsluga transakcji. Jezeli w BaseService nie ma
   * oznaczenia @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
   * to bedzie znaczylo ze wszystko idzie w jednej transakcji i zostanie
   * skomitowana na koncu metody, poniewaz load(-1) powoduje blad to nie
   * zostanie nic zapisane. W sytuacji
   * @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) metody save
   * zostana wykonane w osobnych transakcji:) zgodnie z kolejnoscia. UWAGA w
   * konfiguracji hibernate trzeba dodac <property
   * name="hibernate.transaction.auto_close_session">true</property> i
   * <property name="hibernate.connection.isolation">2</property> aby
   * zapisywal dane do bazy.
   *
   */
  public String getStanowiskoName(Integer id) throws Exception {
    Context context = new InitialContext();
    TransactionManager txm = (TransactionManager) context
        .lookup("java:/TransactionManager");
    javax.transaction.Transaction tx = txm.getTransaction();
    System.out.println(tx);
    Stanowisko s = new Stanowisko();
    s.setNazwa("mirek");
    pl.zgora.uz.wmie.fe.service.StanowiskoService stanowiskoService = (StanowiskoService) new InitialContext()
        .lookup("StanowiskoService/remote");
    stanowiskoService.save(s); // uwzgledni atrybut transakcji;samo save(s)
    // nieuwzgledni
    // inni tez maja ten problem u rozwiazuje sie go tak ze sie nie tworzy
    // klas o roznych zakresach transakcji
    Dzial d = new Dzial();
    d.setNazwaDzialu("d");
    d.setTyp(DzialType.N);
    dzialService.save(d);
    load(-10);
    return "mirek";
  }
}
TOP

Related Classes of pl.zgora.uz.wmie.fe.service.impl.StanowiskoService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.