// ========================================================================
// Copyright (C) zeroth Project Team. All rights reserved.
// GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
// http://www.gnu.org/licenses/agpl-3.0.txt
// ========================================================================
package zeroth.actor.service.domain.misc;
import java.math.BigDecimal;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import zeroth.actor.service.domain.misc.PersistenceServiceAnnotation.IndustryClassPersistenceService;
import zeroth.actor.service.domain.misc.PersistenceServiceAnnotation.ListedSectionPersistenceService;
import zeroth.actor.service.domain.misc.PersistenceServiceAnnotation.NewsPersistenceService;
import zeroth.framework.enterprise.infra.persistence.PersistenceServiceFactory;
import zeroth.framework.enterprise.infra.persistence.PrimaryEntityManager;
import zeroth.framework.enterprise.infra.persistence.QueryPersistenceService;
/**
* データ永続化サービスのファクトリ
* @author nilcy
*/
public class PersistenceServiceProducer {
/** 基礎エンティティマネージャ */
@Inject
@PrimaryEntityManager
private EntityManager manager;
/** データ永続化サービスのファクトリ */
@Inject
private PersistenceServiceFactory factory;
/** コンストラクタ */
public PersistenceServiceProducer() {
}
/**
* 業種の先進データ永続化サービスを作成
* @return お知らせの先進データ永続化サービス
*/
@Produces
@IndustryClassPersistenceService
public QueryPersistenceService<IndustryClass, BigDecimal> createIndustryClassPersistenceService() {
return factory.createQueryPersistenceService(manager, IndustryClass.class);
}
/**
* 上場先の先進データ永続化サービスを作成
* @return 上場先の先進データ永続化サービス
*/
@Produces
@ListedSectionPersistenceService
public QueryPersistenceService<ListedSection, BigDecimal> createListedSectionPersistenceService() {
return factory.createQueryPersistenceService(manager, ListedSection.class);
}
// /**
// * 告知の先進データ永続化サービスを作成
// * @return 告知の先進データ永続化サービス
// */
// @SuppressWarnings("unchecked")
// @Produces
// @NoticePersistenceService
// public QueryPersistenceService<? extends Notice<?>, Long> createNoticePersistenceService() {
// return factory.createQueryPersistenceService(manager, Notice.class);
// }
/**
* お知らせの先進データ永続化サービスを作成
* @return お知らせの先進データ永続化サービス
*/
@SuppressWarnings("unchecked")
@Produces
@NewsPersistenceService
public QueryPersistenceService<News, BigDecimal> createNewsPersistenceService() {
return factory.createQueryPersistenceService(manager, Notice.class);
}
}