/************************************************************************* * (c) Copyright 2016 Hewlett Packard Enterprise Development Company LP * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 3 of the License. * * This program 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 General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see http://www.gnu.org/licenses/. ************************************************************************/ package com.eucalyptus.portal.persist; import java.util.function.Function; import javax.annotation.Nullable; import com.eucalyptus.auth.principal.OwnerFullName; import com.eucalyptus.component.annotation.ComponentNamed; import com.eucalyptus.entities.AbstractPersistentSupport; import com.eucalyptus.portal.BillingInfo; import com.eucalyptus.portal.BillingInfos; import com.eucalyptus.portal.PortalMetadataException; import com.eucalyptus.portal.PortalMetadataNotFoundException; import com.eucalyptus.portal.common.PortalMetadata; import com.eucalyptus.util.CompatFunction; import com.eucalyptus.util.Exceptions; /** * */ @ComponentNamed public class PersistenceBillingInfos extends AbstractPersistentSupport<PortalMetadata.BillingInfoMetadata,BillingInfo,PortalMetadataException> implements BillingInfos { public PersistenceBillingInfos( ) { super( "billing-info" ); } @SuppressWarnings( "ThrowableResultOfMethodCallIgnored" ) @Override protected PortalMetadataException notFoundException( final String message, final Throwable cause ) { final PortalMetadataNotFoundException exception = Exceptions.findCause( cause, PortalMetadataNotFoundException.class ); if ( exception != null ) { return exception; } return new PortalMetadataNotFoundException( message, cause ); } @Override protected PortalMetadataException metadataException( final String message, final Throwable cause ) { final PortalMetadataException exception = Exceptions.findCause( cause, PortalMetadataException.class ); if ( exception != null ) { return exception; } return new PortalMetadataException( message, cause ); } @Override protected BillingInfo exampleWithOwner( final OwnerFullName ownerFullName ) { final BillingInfo billingInfo = new BillingInfo( ); billingInfo.setOwner( ownerFullName ); return billingInfo; } @Override protected BillingInfo exampleWithName( final OwnerFullName ownerFullName, final String name ) { final BillingInfo billingInfo = new BillingInfo( ); billingInfo.setOwner( ownerFullName ); billingInfo.setDisplayName( name ); return billingInfo; } @Override public <T> T lookupByAccount( final String accountNumber, @Nullable final OwnerFullName ownerFullName, final Function<? super BillingInfo, T> transform ) throws PortalMetadataException { return lookupByName( ownerFullName, accountNumber, CompatFunction.of( transform ) ); } @Override public <T> T updateByAccount( final String accountNumber, @Nullable final OwnerFullName ownerFullName, final Function<? super BillingInfo, T> updateTransform ) throws PortalMetadataException { return withRetries( ).updateByExample( exampleWithName( ownerFullName, accountNumber ), ownerFullName, accountNumber, CompatFunction.of( updateTransform ) ); } @Override public <T> T save( final BillingInfo account, final Function<? super BillingInfo, T> transform ) throws PortalMetadataException { return transform.apply( save( account ) ); } }