/** * ============================================================================= * * ORCID (R) Open Source * http://orcid.org * * Copyright (c) 2012-2014 ORCID, Inc. * Licensed under an MIT-Style License (MIT) * http://orcid.org/open-source-license * * This copyright and license information (including a link to the full license) * shall be included in its entirety in all copies or substantial portion of * the software. * * ============================================================================= */ package org.orcid.core.manager.read_only.impl; import java.util.List; import java.util.Optional; import javax.annotation.Resource; import javax.persistence.NoResultException; import org.orcid.core.adapter.JpaJaxbGroupIdRecordAdapter; import org.orcid.core.exception.GroupIdRecordNotFoundException; import org.orcid.core.exception.OrcidValidationException; import org.orcid.core.manager.read_only.GroupIdRecordManagerReadOnly; import org.orcid.jaxb.model.groupid_v2.GroupIdRecord; import org.orcid.jaxb.model.groupid_v2.GroupIdRecords; import org.orcid.persistence.dao.GroupIdRecordDao; import org.orcid.persistence.jpa.entities.GroupIdRecordEntity; public class GroupIdRecordManagerReadOnlyImpl implements GroupIdRecordManagerReadOnly { @Resource protected JpaJaxbGroupIdRecordAdapter jpaJaxbGroupIdRecordAdapter; protected GroupIdRecordDao groupIdRecordDao; public void setGroupIdRecordDao(GroupIdRecordDao groupIdRecordDao) { this.groupIdRecordDao = groupIdRecordDao; } @Override public GroupIdRecord getGroupIdRecord(Long putCode) { GroupIdRecordEntity groupIdRecordEntity = groupIdRecordDao.find(putCode); if (groupIdRecordEntity == null) { throw new GroupIdRecordNotFoundException(); } return jpaJaxbGroupIdRecordAdapter.toGroupIdRecord(groupIdRecordEntity); } @Override public Optional<GroupIdRecord> findByGroupId(String groupId) { try { GroupIdRecordEntity entity = groupIdRecordDao.findByGroupId(groupId); return Optional.of(jpaJaxbGroupIdRecordAdapter.toGroupIdRecord(entity)); } catch(NoResultException nre) { return Optional.empty(); } } @Override public Optional<GroupIdRecord> findGroupIdRecordByName(String name) { try { GroupIdRecordEntity entity = groupIdRecordDao.findByName(name); return Optional.of(jpaJaxbGroupIdRecordAdapter.toGroupIdRecord(entity)); } catch(NoResultException nre) { return Optional.empty(); } } @Override public GroupIdRecords getGroupIdRecords(String pageSize, String pageNum) { int pageNumInt = convertToInteger(pageNum); int pageSizeInt = convertToInteger(pageSize); GroupIdRecords records = new GroupIdRecords(); records.setPage(pageNumInt); records.setPageSize(pageSizeInt); List<GroupIdRecordEntity> recordEntities = groupIdRecordDao.getGroupIdRecords(pageSizeInt, pageNumInt); List<GroupIdRecord> recordsReturned = jpaJaxbGroupIdRecordAdapter.toGroupIdRecords(recordEntities); if (recordsReturned != null) { records.setTotal(recordsReturned.size()); records.getGroupIdRecord().addAll(recordsReturned); } else { records.setTotal(0); } return records; } @Override public boolean exists(String groupId) { return groupIdRecordDao.exists(groupId); } private int convertToInteger(String param) { int returnVal = 0; try { returnVal = Integer.valueOf(param); } catch (NumberFormatException e) { throw new OrcidValidationException(); } return returnVal; } }