// ======================================================================== // 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; import java.math.BigDecimal; import javax.enterprise.inject.Produces; import javax.inject.Inject; import javax.persistence.EntityManager; import zeroth.actor.service.domain.PersistenceServiceAnnotation.CustomerPersistenceService; import zeroth.actor.service.domain.PersistenceServiceAnnotation.LevelPersistenceService; import zeroth.actor.service.domain.PersistenceServiceAnnotation.MemberPersistenceService; import zeroth.actor.service.domain.PersistenceServiceAnnotation.OrganPersistenceService; import zeroth.actor.service.domain.PersistenceServiceAnnotation.PartnerPersistenceService; import zeroth.actor.service.domain.PersistenceServiceAnnotation.SupplierPersistenceService; import zeroth.actor.service.domain.PersistenceServiceAnnotation.TitlePersistenceService; 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 @CustomerPersistenceService public QueryPersistenceService<Customer, BigDecimal> createCustomerPersistenceService() { return factory.createQueryPersistenceService(manager, Customer.class); } /** * 職級の先進データ永続化サービスを作成 * @return 職級の先進データ永続化サービス */ @Produces @LevelPersistenceService public QueryPersistenceService<Level, BigDecimal> createLevelPersistenceService() { return factory.createQueryPersistenceService(manager, Level.class); } /** * 社員の先進データ永続化サービスを作成 * @return 社員の先進データ永続化サービス */ @Produces @MemberPersistenceService public QueryPersistenceService<Member, BigDecimal> createMemberPersistenceService() { return factory.createQueryPersistenceService(manager, Member.class); } /** * 組織の先進データ永続化サービスを作成 * @return 組織の先進データ永続化サービス */ @Produces @OrganPersistenceService public QueryPersistenceService<Organ, BigDecimal> createOrganPersistenceService() { return factory.createQueryPersistenceService(manager, Organ.class); } /** * 外注の先進データ永続化サービスを作成 * @return 外注の先進データ永続化サービス */ @Produces @PartnerPersistenceService public QueryPersistenceService<Partner, BigDecimal> createPartnerPersistenceService() { return factory.createQueryPersistenceService(manager, Partner.class); } /** * 調達先の先進データ永続化サービスを作成 * @return 調達先の先進データ永続化サービス */ @Produces @SupplierPersistenceService public QueryPersistenceService<Supplier, BigDecimal> createSupplierPersistenceService() { return factory.createQueryPersistenceService(manager, Supplier.class); } /** * 職名の先進データ永続化サービスを作成 * @return 職名の先進データ永続化サービス */ @Produces @TitlePersistenceService public QueryPersistenceService<Title, BigDecimal> createTitlePersistenceService() { return factory.createQueryPersistenceService(manager, Title.class); } }