/* jBilling - The Enterprise Open Source Billing System Copyright (C) 2003-2011 Enterprise jBilling Software Ltd. and Emiliano Conde This file is part of jbilling. jbilling is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. jbilling is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with jbilling. If not, see <http://www.gnu.org/licenses/>. */ package com.sapienter.jbilling.server.pluggableTask; import java.util.Collection; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; import com.sapienter.jbilling.common.SessionInternalError; import com.sapienter.jbilling.server.pluggableTask.admin.PluggableTaskBL; import com.sapienter.jbilling.server.pluggableTask.admin.PluggableTaskDAS; import com.sapienter.jbilling.server.pluggableTask.admin.PluggableTaskDTO; import com.sapienter.jbilling.server.pluggableTask.admin.PluggableTaskParameterDTO; import com.sapienter.jbilling.server.util.Context; /** * * This is the session facade for the invoices in general. It is a statless * bean that provides services not directly linked to a particular operation * * @author emilc * * Even when using JPA, container transactions are required. This is because * transactional demarcation is taked from the application server. **/ @Transactional( propagation = Propagation.REQUIRED ) public class PluggableTaskSessionBean implements IPluggableTaskSessionBean { //private static final Logger LOG = Logger.getLogger(PluggableTaskSessionBean.class); public PluggableTaskDTO getDTO(Integer typeId, Integer entityId) throws SessionInternalError { try { PluggableTaskBL bl = new PluggableTaskBL(); bl.set(entityId, typeId); return bl.getDTO(); } catch (Exception e) { throw new SessionInternalError(e); } } public PluggableTaskDTO[] getAllDTOs(Integer entityId) throws SessionInternalError { PluggableTaskDAS das = (PluggableTaskDAS) Context.getBean(Context.Name.PLUGGABLE_TASK_DAS); Collection<PluggableTaskDTO> tasks = das.findAllByEntity(entityId); for (PluggableTaskDTO task : tasks) { task.populateParamValues(); } PluggableTaskDTO[] retValue = new PluggableTaskDTO[tasks.size()]; retValue = (PluggableTaskDTO[]) tasks.toArray(retValue); return retValue; } public void createParameter(Integer executorId, Integer taskId, PluggableTaskParameterDTO dto) { PluggableTaskBL bl = new PluggableTaskBL(); bl.createParameter(taskId, dto); } @Transactional( propagation = Propagation.REQUIRES_NEW ) public void update(Integer executorId, PluggableTaskDTO dto) { PluggableTaskBL bl = new PluggableTaskBL(); bl.update(executorId, dto); } @Transactional( propagation = Propagation.REQUIRES_NEW ) public PluggableTaskDTO[] updateAll(Integer executorId, PluggableTaskDTO dto[]) { PluggableTaskBL bl = new PluggableTaskBL(); for (int f = 0; f < dto.length; f++) { bl.update(executorId, dto[f]); dto[f] = bl.getDTO(); // replace with the new version } return dto; } public void delete(Integer executorId, Integer id) { PluggableTaskBL bl = new PluggableTaskBL(id); bl.delete(executorId); } public void deleteParameter(Integer executorId, Integer id) { PluggableTaskBL bl = new PluggableTaskBL(); bl.deleteParameter(executorId, id); } @Transactional( propagation = Propagation.REQUIRES_NEW ) public void updateParameters(Integer executorId, PluggableTaskDTO dto) throws SessionInternalError { PluggableTaskBL bl = new PluggableTaskBL(); bl.updateParameters(dto); } }