blob: 8c149ef72be298ccb884516b3ab1b1af07e5e02b [file] [log] [blame]
/*
* Copyright 2017 The Mifos Initiative.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package io.mifos.deposit.service.internal.mapper;
import io.mifos.deposit.api.v1.definition.domain.ProductDefinition;
import io.mifos.deposit.service.internal.repository.ActionRepository;
import io.mifos.deposit.service.internal.repository.ProductDefinitionEntity;
import java.util.stream.Collectors;
public class ProductDefinitionMapper {
private ProductDefinitionMapper() {
super();
}
public static ProductDefinitionEntity map(final ProductDefinition productDefinition, final ActionRepository actionRepository) {
final ProductDefinitionEntity productDefinitionEntity = new ProductDefinitionEntity();
productDefinitionEntity.setType(productDefinition.getType());
productDefinitionEntity.setIdentifier(productDefinition.getIdentifier());
productDefinitionEntity.setName(productDefinition.getName());
productDefinitionEntity.setDescription(productDefinition.getName());
productDefinitionEntity.setCurrency(CurrencyMapper.map(productDefinition.getCurrency()));
productDefinitionEntity.setMinimumBalance(productDefinition.getMinimumBalance());
productDefinitionEntity.setEquityLedgerIdentifier(productDefinition.getEquityLedgerIdentifier());
productDefinitionEntity.setExpenseAccountIdentifier(productDefinition.getExpenseAccountIdentifier());
productDefinitionEntity.setInterest(productDefinition.getInterest());
productDefinitionEntity.setTerm(TermMapper.map(productDefinition.getTerm()));
productDefinitionEntity.setCharges(productDefinition.getCharges()
.stream()
.map(charge -> ChargeMapper.map(charge, actionRepository))
.collect(Collectors.toList())
);
productDefinitionEntity.setFlexible(productDefinition.getFlexible());
return productDefinitionEntity;
}
public static ProductDefinition map (final ProductDefinitionEntity productDefinitionEntity) {
final ProductDefinition productDefinition = new ProductDefinition();
productDefinition.setType(productDefinitionEntity.getType());
productDefinition.setIdentifier(productDefinitionEntity.getIdentifier());
productDefinition.setName(productDefinitionEntity.getName());
productDefinition.setDescription(productDefinitionEntity.getName());
productDefinition.setCurrency(CurrencyMapper.map(productDefinitionEntity.getCurrency()));
productDefinition.setMinimumBalance(productDefinitionEntity.getMinimumBalance());
productDefinition.setEquityLedgerIdentifier(productDefinitionEntity.getEquityLedgerIdentifier());
productDefinition.setExpenseAccountIdentifier(productDefinitionEntity.getExpenseAccountIdentifier());
productDefinition.setInterest(productDefinitionEntity.getInterest());
productDefinition.setTerm(TermMapper.map(productDefinitionEntity.getTerm()));
productDefinition.setCharges(productDefinitionEntity.getCharges()
.stream()
.map(ChargeMapper::map)
.collect(Collectors.toList())
);
productDefinition.setFlexible(productDefinitionEntity.getFlexible());
productDefinition.setActive(productDefinitionEntity.getActive());
return productDefinition;
}
}