Skip to content

Commit

Permalink
add new DTOs to support pagination
Browse files Browse the repository at this point in the history
Signed-off-by: Harsh Modi <[email protected]>
  • Loading branch information
hjmodi committed Apr 4, 2024
1 parent 54a0800 commit 02fe80c
Show file tree
Hide file tree
Showing 9 changed files with 162 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
import org.commonjava.indy.service.repository.model.RemoteRepository;
import org.commonjava.indy.service.repository.model.StoreKey;
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
import org.eclipse.microprofile.context.ManagedExecutor;
import org.eclipse.microprofile.rest.client.inject.RestClient;
import org.slf4j.Logger;
Expand All @@ -39,6 +40,7 @@
import jakarta.inject.Inject;
import jakarta.ws.rs.core.Response;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;

import static jakarta.ws.rs.core.Response.Status.FORBIDDEN;
Expand Down Expand Up @@ -114,19 +116,20 @@ public List<ArtifactStore> getAllOfType( final StoreType type )
}


public List<ArtifactStore> getAllOfType( final String packageType, final StoreType type, String page )
public ListArtifactStoreDTO getAllOfType( final String packageType, final StoreType type, String page )
throws IndyWorkflowException
{
try
{
ArtifactStoreQuery<ArtifactStore> query = storeManager.query().storeTypes( type );
if ( !ALL_PACKAGE_TYPES.equals( packageType ) )
{
return new ArrayList<>( storeManager.getArtifactStoresByPkgAndType( packageType, type, page ) );
return storeManager.getArtifactStoresByPkgAndType( packageType, type, page );
}
else
{
return query.getAllByDefaultPackageTypes();
List<ArtifactStore> result = query.getAllByDefaultPackageTypes();
return new ListArtifactStoreDTO( new HashSet<>(result) );
}
}
catch ( final IndyDataException e )
Expand All @@ -140,7 +143,8 @@ public List<ArtifactStore> getAllOfType( final String packageType, final StoreTy
public List<ArtifactStore> getAllOfType( final String packageType, final StoreType type )
throws IndyWorkflowException
{
return getAllOfType( packageType, type, "" );
ListArtifactStoreDTO result = getAllOfType( packageType, type, "" );
return new ArrayList<>(result.getItems());
}

public List<ArtifactStore> getAllStores()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.audit.ChangeSummary;
import org.commonjava.indy.service.repository.exception.IndyDataException;
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;

import java.util.Collection;
import java.util.Map;
Expand Down Expand Up @@ -165,6 +166,6 @@ Set<Group> affectedBy( Collection<StoreKey> keys )

Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType );

Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page );
ListArtifactStoreDTO getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page );

}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@
import org.commonjava.indy.service.repository.model.RemoteRepository;
import org.commonjava.indy.service.repository.model.StoreKey;
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
import org.commonjava.indy.service.repository.model.dto.ListDtxArtifactStoreDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -184,22 +186,22 @@ public Set<StoreKey> getStoreKeysByPkgAndType( final String pkg, final StoreType
}

@Override
public Set<ArtifactStore> getArtifactStoresByPkgAndType( final String pkg, final StoreType type, String page )
public ListArtifactStoreDTO getArtifactStoresByPkgAndType( final String pkg, final StoreType type, String page )
{

logger.trace( "Get stores: {}/{}", pkg, type );

Set<DtxArtifactStore> dtxArtifactStoreSet = storeQuery.getArtifactStoresByPkgAndType( pkg, type, page );
ListDtxArtifactStoreDTO result = storeQuery.getArtifactStoresByPkgAndType( pkg, type, page );
Set<DtxArtifactStore> dtxArtifactStoreSet = result.getItems();
Set<ArtifactStore> storeSet = new HashSet<>();
dtxArtifactStoreSet.forEach( dtxArtifactStore -> storeSet.add( toArtifactStore( dtxArtifactStore ) ) );
return storeSet;
return new ListArtifactStoreDTO( storeSet, result.getCurrentPage(), result.getNextPage());
}

@Override
public Set<ArtifactStore> getArtifactStoresByPkgAndType( final String pkg, final StoreType type )
{

return getArtifactStoresByPkgAndType( pkg, type, "" );
ListArtifactStoreDTO result = getArtifactStoresByPkgAndType( pkg, type, "" );
return result.getItems();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import com.datastax.driver.mapping.MappingManager;
import org.commonjava.indy.service.repository.model.StoreKey;
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.model.dto.ListDtxArtifactStoreDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -143,7 +144,7 @@ public DtxArtifactStore getArtifactStore( String packageType, StoreType type, St
return toDtxArtifactStore( result.one() );
}

public Set<DtxArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType type, String page )
public ListDtxArtifactStoreDTO getArtifactStoresByPkgAndType( String packageType, StoreType type, String page )
{
BoundStatement bound =
preparedArtifactStoresQueryByKeys.bind( CassandraStoreUtil.getTypeKey( packageType, type.name() ) );
Expand Down Expand Up @@ -171,12 +172,13 @@ public Set<DtxArtifactStore> getArtifactStoresByPkgAndType( String packageType,
}
}

return dtxArtifactStoreSet;
return new ListDtxArtifactStoreDTO( dtxArtifactStoreSet, page, nextPage.toString() );
}

public Set<DtxArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType type )
{
return getArtifactStoresByPkgAndType( packageType, type, "" );
ListDtxArtifactStoreDTO result = getArtifactStoresByPkgAndType( packageType, type, "" );
return result.getItems();
}

public Set<DtxArtifactStore> getAllArtifactStores()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import org.commonjava.indy.service.repository.model.ArtifactStore;
import org.commonjava.indy.service.repository.model.StoreKey;
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Expand Down Expand Up @@ -156,19 +157,21 @@ public Stream<StoreKey> streamArtifactStoreKeys()
}

@Override
public Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page )
public ListArtifactStoreDTO getArtifactStoresByPkgAndType( String packageType, StoreType storeType, String page )
{
return stores.values()
.stream()
.filter( item -> packageType.equals( item.getPackageType() ) && storeType.equals(
item.getType() ) )
.collect( Collectors.toSet() );
Set<ArtifactStore> resultStores = stores.values()
.stream()
.filter( item -> packageType.equals( item.getPackageType() ) && storeType.equals(
item.getType() ) )
.collect( Collectors.toSet() );
return new ListArtifactStoreDTO( resultStores);
}

@Override
public Set<ArtifactStore> getArtifactStoresByPkgAndType( String packageType, StoreType storeType )
{
return getArtifactStoresByPkgAndType( packageType, storeType, "" );
ListArtifactStoreDTO result = getArtifactStoresByPkgAndType( packageType, storeType, "" );
return result.getItems();
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
import org.commonjava.indy.service.repository.model.RemoteRepository;
import org.commonjava.indy.service.repository.model.StoreKey;
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
import org.commonjava.indy.service.repository.model.dto.StoreListingDTO;
import org.commonjava.indy.service.repository.util.jackson.MapperUtil;
import org.commonjava.indy.service.security.common.SecurityManager;
Expand Down Expand Up @@ -59,6 +60,7 @@
import java.io.IOException;
import java.net.URI;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
Expand Down Expand Up @@ -326,11 +328,13 @@ public Response getAll( final @Parameter(
Response response;
try
{
final List<ArtifactStore> stores = adminController.getAllOfType( packageType, st, page );
final ListArtifactStoreDTO result = adminController.getAllOfType( packageType, st, page );

logger.info( "Returning listing containing stores:\n\t{}", new JoinString( "\n\t", stores ) );
logger.info( "Returning listing for page {} containing stores:\n\t{}", result.getCurrentPage(),
new JoinString( "\n\t", result.getItems() ) );

final StoreListingDTO<ArtifactStore> dto = new StoreListingDTO<>( stores );
final StoreListingDTO<ArtifactStore> dto = new StoreListingDTO<>( new ArrayList<>(result.getItems()), result.getCurrentPage(),
result.getNextPage() );

response = responseHelper.formatOkResponseWithJsonEntity( dto );
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package org.commonjava.indy.service.repository.model.dto;

import org.commonjava.indy.service.repository.model.ArtifactStore;

import java.util.Set;

public class ListArtifactStoreDTO
{
private Set<ArtifactStore> items;

private String currentPage;

private String nextPage;

public ListArtifactStoreDTO()
{

}

public ListArtifactStoreDTO( Set<ArtifactStore> items, String currentPage, String nextPage )
{
this.items = items;
this.currentPage = currentPage;
this.nextPage = nextPage;
}

public ListArtifactStoreDTO( Set<ArtifactStore> items )
{
this.items = items;
}

public Set<ArtifactStore> getItems()
{
return items;
}

public void setItems( Set<ArtifactStore> items )
{
this.items = items;
}

public String getCurrentPage()
{
return currentPage;
}

public void setCurrentPage( String currentPage )
{
this.currentPage = currentPage;
}

public String getNextPage()
{
return nextPage;
}

public void setNextPage( String nextPage )
{
this.nextPage = nextPage;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package org.commonjava.indy.service.repository.model.dto;

import org.commonjava.indy.service.repository.data.cassandra.DtxArtifactStore;

import java.util.Set;

public class ListDtxArtifactStoreDTO
{
private Set<DtxArtifactStore> items;

private String currentPage;

private String nextPage;

public ListDtxArtifactStoreDTO()
{

}

public ListDtxArtifactStoreDTO( Set<DtxArtifactStore> items, String currentPage, String nextPage )
{
this.items = items;
this.currentPage = currentPage;
this.nextPage = nextPage;
}

public Set<DtxArtifactStore> getItems()
{
return items;
}

public void setItems( Set<DtxArtifactStore> items )
{
this.items = items;
}

public String getCurrentPage()
{
return currentPage;
}

public void setCurrentPage( String currentPage )
{
this.currentPage = currentPage;
}

public String getNextPage()
{
return nextPage;
}

public void setNextPage( String nextPage )
{
this.nextPage = nextPage;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@
import org.commonjava.indy.service.repository.model.RemoteRepository;
import org.commonjava.indy.service.repository.model.StoreKey;
import org.commonjava.indy.service.repository.model.StoreType;
import org.commonjava.indy.service.repository.model.dto.ListArtifactStoreDTO;
import org.junit.jupiter.api.Test;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.enterprise.inject.Alternative;
import jakarta.ws.rs.core.Response;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;

import static org.commonjava.indy.service.repository.model.pkg.MavenPackageTypeDescriptor.MAVEN_PKG_KEY;
Expand Down Expand Up @@ -67,7 +69,7 @@ public List<ArtifactStore> getAllOfType( final String packageType, final StoreTy
}

@Override
public List<ArtifactStore> getAllOfType( final String packageType, final StoreType type, String page )
public ListArtifactStoreDTO getAllOfType( final String packageType, final StoreType type, String page )
throws IndyWorkflowException
{
if ( MAVEN_PKG_KEY.equals( packageType ) )
Expand All @@ -76,11 +78,11 @@ public List<ArtifactStore> getAllOfType( final String packageType, final StoreTy
{
RemoteRepository repo1 = new RemoteRepository( MAVEN_PKG_KEY, "test1", "http://repo.test1" );
RemoteRepository repo2 = new RemoteRepository( MAVEN_PKG_KEY, "test2", "http://repo.test2" );
return Arrays.asList( repo1, repo2 );
return new ListArtifactStoreDTO( new HashSet<>(Arrays.asList( repo1, repo2 )));
}
if ( type == StoreType.hosted )
{
return Collections.emptyList();
return new ListArtifactStoreDTO( new HashSet<>(Collections.emptyList()));
}
}
throw new IndyWorkflowException( Response.Status.NOT_FOUND.getStatusCode(), "Not found" );
Expand Down

0 comments on commit 02fe80c

Please sign in to comment.