mirror of
https://github.com/apache/archiva.git
synced 2025-02-22 18:31:43 +00:00
Implementing stream methods. Changing date arguments to java time API.
This commit is contained in:
parent
d4ce38836d
commit
7a5bc65de4
@ -32,6 +32,11 @@
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.time.temporal.TemporalUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
@ -91,14 +96,14 @@ public SyndFeed process( Map<String, String> reqParams )
|
||||
private SyndFeed processNewArtifactsInRepo( String repoId )
|
||||
throws FeedException
|
||||
{
|
||||
Calendar greaterThanThisDate = Calendar.getInstance( GMT_TIME_ZONE );
|
||||
greaterThanThisDate.add( Calendar.DATE, -( getNumberOfDaysBeforeNow() ) );
|
||||
greaterThanThisDate.clear( Calendar.MILLISECOND );
|
||||
|
||||
ZonedDateTime greaterThanThisDate = ZonedDateTime.of(LocalDateTime.now(), GMT_TIME_ZONE.toZoneId()).minusDays(
|
||||
getNumberOfDaysBeforeNow()
|
||||
).truncatedTo(ChronoUnit.SECONDS);
|
||||
List<ArtifactMetadata> artifacts;
|
||||
try(RepositorySession session = repositorySessionFactory.createSession())
|
||||
{
|
||||
artifacts = session.getRepository().getArtifactsByDateRange(session , repoId, greaterThanThisDate.getTime(), null );
|
||||
artifacts = session.getRepository().getArtifactsByDateRange(session , repoId, greaterThanThisDate, null );
|
||||
}
|
||||
catch ( MetadataRepositoryException e )
|
||||
{
|
||||
|
@ -23,9 +23,7 @@
|
||||
import com.sun.syndication.feed.synd.SyndFeed;
|
||||
import junit.framework.TestCase;
|
||||
import org.apache.archiva.metadata.model.ArtifactMetadata;
|
||||
import org.apache.archiva.metadata.model.MetadataFacet;
|
||||
import org.apache.archiva.metadata.repository.AbstractMetadataRepository;
|
||||
import org.apache.archiva.metadata.repository.MetadataRepositoryException;
|
||||
import org.apache.archiva.metadata.repository.RepositorySession;
|
||||
import org.apache.archiva.metadata.repository.RepositorySessionFactory;
|
||||
import org.apache.archiva.rss.RssFeedGenerator;
|
||||
@ -37,6 +35,7 @@
|
||||
import org.junit.runner.RunWith;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
@ -44,7 +43,6 @@
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.TimeZone;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@RunWith (ArchivaBlockJUnit4ClassRunner.class)
|
||||
public class NewArtifactsRssFeedProcessorTest
|
||||
@ -119,7 +117,7 @@ public void testProcess()
|
||||
// check that the date used in the call is close to the one passed (5 seconds difference at most)
|
||||
Calendar cal = Calendar.getInstance( TimeZone.getTimeZone( "GMT" ) );
|
||||
cal.add( Calendar.DATE, -30 );
|
||||
assertTrue( ( metadataRepository.getFrom().getTime() - cal.getTimeInMillis() ) < 1000 * 5 );
|
||||
assertTrue( metadataRepository.getFrom().minus(cal.getTimeInMillis(), ChronoUnit.MILLIS).toInstant().toEpochMilli() < 1000 * 5 );
|
||||
assertEquals( null, metadataRepository.getTo() );
|
||||
assertEquals( TEST_REPO, metadataRepository.getRepoId() );
|
||||
|
||||
@ -153,7 +151,7 @@ private ArtifactMetadata createArtifact( String artifactId, String version, Date
|
||||
private class MetadataRepositoryMock
|
||||
extends AbstractMetadataRepository
|
||||
{
|
||||
private Date from, to;
|
||||
private ZonedDateTime from, to;
|
||||
|
||||
private String repoId;
|
||||
|
||||
@ -162,7 +160,7 @@ private class MetadataRepositoryMock
|
||||
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repoId, Date from, Date to )
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime from, ZonedDateTime to )
|
||||
{
|
||||
setRepoId( repoId );
|
||||
setFrom( from );
|
||||
@ -170,22 +168,22 @@ public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session
|
||||
return artifactsByDateRange;
|
||||
}
|
||||
|
||||
public void setFrom( Date from )
|
||||
public void setFrom(ZonedDateTime from )
|
||||
{
|
||||
this.from = from;
|
||||
}
|
||||
|
||||
public Date getFrom()
|
||||
public ZonedDateTime getFrom()
|
||||
{
|
||||
return from;
|
||||
}
|
||||
|
||||
public void setTo( Date to )
|
||||
public void setTo(ZonedDateTime to )
|
||||
{
|
||||
this.to = to;
|
||||
}
|
||||
|
||||
public Date getTo()
|
||||
public ZonedDateTime getTo()
|
||||
{
|
||||
return to;
|
||||
}
|
||||
|
@ -23,6 +23,7 @@
|
||||
import org.apache.archiva.metadata.repository.AbstractMetadataRepository;
|
||||
import org.apache.archiva.metadata.repository.RepositorySession;
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
@ -89,7 +90,7 @@ public void removeMetadataFacet( RepositorySession session, String repoId, Strin
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repoId, Date startTime, Date endTime )
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime startTime, ZonedDateTime endTime )
|
||||
{
|
||||
return artifacts;
|
||||
}
|
||||
|
@ -28,7 +28,6 @@
|
||||
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
@ -112,7 +111,7 @@ public void removeMetadataFacet( RepositorySession session, String repositoryId,
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repositoryId, Date startTime, Date endTime )
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
|
@ -24,12 +24,9 @@
|
||||
import org.apache.archiva.metadata.model.ProjectMetadata;
|
||||
import org.apache.archiva.metadata.model.ProjectVersionMetadata;
|
||||
import org.apache.archiva.metadata.model.ProjectVersionReference;
|
||||
import org.apache.maven.index_shaded.lucene.util.packed.DirectMonotonicReader;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.Collection;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@ -192,25 +189,51 @@ MetadataFacet getMetadataFacet( RepositorySession session, String repositoryId,
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns the facet instance using the proper class.
|
||||
* Returns the facet instance for the given class, which is stored on repository level for the given name.
|
||||
* If the given name does not point to a instance that can be represented by this class, <code>null</code> will be returned.
|
||||
* If the facet is not found the method returns <code>null</code>.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The repository
|
||||
* @param repositoryId The id of the repository
|
||||
* @param clazz The facet object class
|
||||
* @param name The name of the facet
|
||||
* @param <T> The facet object
|
||||
* @return The facet instance if it exists.
|
||||
* @param name The name of the facet (name or path)
|
||||
* @param <T> The type of the facet object
|
||||
* @return The facet instance, if it exists.
|
||||
* @throws MetadataRepositoryException
|
||||
*/
|
||||
<T extends MetadataFacet> T getMetadataFacet(RepositorySession session, String repositoryId, Class<T> clazz, String name)
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Adss a facet to the repository level.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param metadataFacet The facet to add
|
||||
* @throws MetadataRepositoryException if the facet cannot be stored.
|
||||
*/
|
||||
void addMetadataFacet( RepositorySession session, String repositoryId, MetadataFacet metadataFacet )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Removes all facets with the given facetId from the repository level.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param facetId The facet id
|
||||
* @throws MetadataRepositoryException if the removal fails
|
||||
*/
|
||||
void removeMetadataFacets( RepositorySession session, String repositoryId, String facetId )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Removes the given facet from the repository level, if it exists.
|
||||
*
|
||||
* @param session The repository session
|
||||
* @param repositoryId The id of the repository
|
||||
* @param facetId The facet id
|
||||
* @param name The facet name or path
|
||||
*/
|
||||
void removeMetadataFacet( RepositorySession session, String repositoryId, String facetId, String name )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
@ -225,9 +248,18 @@ void removeMetadataFacet( RepositorySession session, String repositoryId, String
|
||||
* @return
|
||||
* @throws MetadataRepositoryException
|
||||
*/
|
||||
List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repositoryId, Date startTime, Date endTime )
|
||||
List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
/**
|
||||
* Returns all the artifacts
|
||||
* @param session
|
||||
* @param repositoryId
|
||||
* @param startTime
|
||||
* @param endTime
|
||||
* @return
|
||||
* @throws MetadataRepositoryException
|
||||
*/
|
||||
Stream<ArtifactMetadata> getArtifactsByDateRangeStream( RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException;
|
||||
|
||||
|
@ -35,7 +35,10 @@
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.TemporalUnit;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
@ -1221,7 +1224,7 @@ public void testGetArtifactsByDateRangeLowerBound( )
|
||||
getRepository( ).updateArtifact( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||
session.save( );
|
||||
|
||||
Date date = new Date( artifact.getWhenGathered( ).getTime( ) - 10000 );
|
||||
ZonedDateTime date = ZonedDateTime.from(artifact.getWhenGathered().toInstant()).minusSeconds(10);
|
||||
|
||||
tryAssert( ( ) -> {
|
||||
List<ArtifactMetadata> artifacts = getRepository( ).getArtifactsByDateRange( session, TEST_REPO_ID, date, null );
|
||||
@ -1240,7 +1243,7 @@ public void testGetArtifactsByDateRangeLowerBoundOutOfRange( )
|
||||
ArtifactMetadata artifact = createArtifact( );
|
||||
getRepository( ).updateArtifact( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||
|
||||
Date date = new Date( artifact.getWhenGathered( ).getTime( ) + 10000 );
|
||||
ZonedDateTime date = ZonedDateTime.from(artifact.getWhenGathered().toInstant()).plusSeconds(10);
|
||||
|
||||
tryAssert( ( ) -> {
|
||||
List<ArtifactMetadata> artifacts = getRepository( ).getArtifactsByDateRange( session, TEST_REPO_ID, date, null );
|
||||
@ -1260,8 +1263,8 @@ public void testGetArtifactsByDateRangeLowerAndUpperBound( )
|
||||
getRepository( ).updateArtifact( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||
session.save( );
|
||||
|
||||
Date lower = new Date( artifact.getWhenGathered( ).getTime( ) - 10000 );
|
||||
Date upper = new Date( artifact.getWhenGathered( ).getTime( ) + 10000 );
|
||||
ZonedDateTime lower = ZonedDateTime.from(artifact.getWhenGathered().toInstant()).minusSeconds(10);
|
||||
ZonedDateTime upper = ZonedDateTime.from(artifact.getWhenGathered().toInstant()).plusSeconds(10);
|
||||
|
||||
tryAssert( ( ) -> {
|
||||
List<ArtifactMetadata> artifacts = getRepository( ).getArtifactsByDateRange( session, TEST_REPO_ID, lower, upper );
|
||||
@ -1281,7 +1284,7 @@ public void testGetArtifactsByDateRangeUpperBound( )
|
||||
getRepository( ).updateArtifact( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||
session.save( );
|
||||
|
||||
Date upper = new Date( artifact.getWhenGathered( ).getTime( ) + 10000 );
|
||||
ZonedDateTime upper = ZonedDateTime.from(artifact.getWhenGathered().toInstant()).plusSeconds(10);
|
||||
|
||||
tryAssert( ( ) -> {
|
||||
List<ArtifactMetadata> artifacts = getRepository( ).getArtifactsByDateRange( session, TEST_REPO_ID, null, upper );
|
||||
@ -1301,7 +1304,7 @@ public void testGetArtifactsByDateRangeUpperBoundOutOfRange( )
|
||||
getRepository( ).updateArtifact( session, TEST_REPO_ID, TEST_NAMESPACE, TEST_PROJECT, TEST_PROJECT_VERSION, artifact );
|
||||
session.save( );
|
||||
|
||||
Date upper = new Date( artifact.getWhenGathered( ).getTime( ) - 10000 );
|
||||
ZonedDateTime upper = ZonedDateTime.from(artifact.getWhenGathered().toInstant()).minusSeconds(10);
|
||||
|
||||
tryAssert( ( ) -> {
|
||||
List<ArtifactMetadata> artifacts = getRepository( ).getArtifactsByDateRange( session, TEST_REPO_ID, null, upper );
|
||||
|
@ -64,7 +64,6 @@
|
||||
import org.apache.archiva.metadata.repository.cassandra.model.Project;
|
||||
import org.apache.archiva.metadata.repository.cassandra.model.ProjectVersionMetadataModel;
|
||||
import org.apache.archiva.metadata.repository.cassandra.model.Repository;
|
||||
import org.apache.archiva.repository.RepositoryException;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.modelmapper.ModelMapper;
|
||||
import org.slf4j.Logger;
|
||||
@ -1748,8 +1747,8 @@ public void removeMetadataFacet( RepositorySession session, final String reposit
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, final String repositoryId, final Date startTime,
|
||||
final Date endTime )
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, final String repositoryId, final ZonedDateTime startTime,
|
||||
final ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
|
||||
@ -1761,11 +1760,11 @@ public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session
|
||||
|
||||
if ( startTime != null )
|
||||
{
|
||||
query = query.addGteExpression( WHEN_GATHERED.toString(), startTime.getTime() );
|
||||
query = query.addGteExpression( WHEN_GATHERED.toString(), startTime.toInstant().toEpochMilli() );
|
||||
}
|
||||
if ( endTime != null )
|
||||
{
|
||||
query = query.addLteExpression( WHEN_GATHERED.toString(), endTime.getTime() );
|
||||
query = query.addLteExpression( WHEN_GATHERED.toString(), endTime.toInstant().toEpochMilli() );
|
||||
}
|
||||
QueryResult<OrderedRows<String, String, Long>> result = query.execute();
|
||||
|
||||
|
@ -486,7 +486,7 @@ public void removeMetadataFacet( RepositorySession session, String repoId, Strin
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repoId, Date startTime, Date endTime )
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime startTime, ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
try
|
||||
@ -520,8 +520,8 @@ public Stream<ArtifactMetadata> getArtifactsByDateRangeStream( RepositorySession
|
||||
return null;
|
||||
}
|
||||
|
||||
private void getArtifactsByDateRange( RepositorySession session, List<ArtifactMetadata> artifacts, String repoId, String ns, Date startTime,
|
||||
Date endTime )
|
||||
private void getArtifactsByDateRange( RepositorySession session, List<ArtifactMetadata> artifacts, String repoId, String ns, ZonedDateTime startTime,
|
||||
ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
try
|
||||
@ -537,9 +537,9 @@ private void getArtifactsByDateRange( RepositorySession session, List<ArtifactMe
|
||||
{
|
||||
for ( ArtifactMetadata artifact : getArtifacts( session, repoId, ns, project, version ) )
|
||||
{
|
||||
if ( startTime == null || startTime.before( artifact.getWhenGathered() ) )
|
||||
if ( startTime == null || startTime.isBefore( ZonedDateTime.from(artifact.getWhenGathered().toInstant()) ) )
|
||||
{
|
||||
if ( endTime == null || endTime.after( artifact.getWhenGathered() ) )
|
||||
if ( endTime == null || endTime.isAfter( ZonedDateTime.from(artifact.getWhenGathered().toInstant()) ) )
|
||||
{
|
||||
artifacts.add( artifact );
|
||||
}
|
||||
|
@ -73,20 +73,8 @@
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Set;
|
||||
import java.util.Spliterator;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
@ -549,15 +537,18 @@ public <T extends MetadataFacet> Stream<T> getMetadataFacetStream( RepositorySes
|
||||
final MetadataFacetFactory<T> factory = metadataService.getFactory( facetClazz );
|
||||
final String facetId = factory.getFacetId( );
|
||||
final String facetPath = '/'+getFacetPath( repositoryId, facetId );
|
||||
String q = "SELECT * FROM ["+FACET_NODE_TYPE+"] AS facet WHERE ISDESCENDANTNODE(facet, ["+facetPath+"]) ORDER BY [facet].[archiva:name]";
|
||||
Map<String, String> params = new HashMap<>( );
|
||||
StringBuilder query = new StringBuilder("SELECT * FROM [");
|
||||
query.append(FACET_NODE_TYPE).append("] AS facet WHERE ISDESCENDANTNODE(facet, [")
|
||||
.append(facetPath).append("]) ORDER BY [facet].[archiva:name]");
|
||||
String q = query.toString();
|
||||
Map<String, String> params = new HashMap<>( );
|
||||
QueryResult result = runNativeJcrQuery( jcrSession, q, params, offset, maxEntries );
|
||||
return StreamSupport.stream( createResultSpliterator( result, (Row row)-> {
|
||||
try
|
||||
{
|
||||
Node node = row.getNode( "facet" );
|
||||
String facetName = node.getProperty( "archiva:name" ).getString();
|
||||
return createFacet( factory, node, repositoryId, facetName );
|
||||
return createFacetFromNode( factory, node, repositoryId, facetName );
|
||||
}
|
||||
catch ( RepositoryException e )
|
||||
{
|
||||
@ -606,7 +597,7 @@ public <T extends MetadataFacet> T getMetadataFacet( RepositorySession session,
|
||||
return null;
|
||||
}
|
||||
|
||||
return createFacet( factory, node, repositoryId, name );
|
||||
return createFacetFromNode( factory, node, repositoryId, name );
|
||||
}
|
||||
catch ( PathNotFoundException e )
|
||||
{
|
||||
@ -619,12 +610,21 @@ public <T extends MetadataFacet> T getMetadataFacet( RepositorySession session,
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private <T extends MetadataFacet> T createFacet( MetadataFacetFactory<T> factory, Node node, String repositoryId, String name ) throws RepositoryException
|
||||
private <T extends MetadataFacet> T createFacetFromNode(final MetadataFacetFactory<T> factory, final Node node) throws RepositoryException {
|
||||
return createFacetFromNode(factory, node, null, null);
|
||||
}
|
||||
|
||||
private <T extends MetadataFacet> T createFacetFromNode(final MetadataFacetFactory<T> factory, final Node node,
|
||||
final String repositoryId, final String name ) throws RepositoryException
|
||||
{
|
||||
if ( factory != null )
|
||||
{
|
||||
T metadataFacet = factory.createMetadataFacet( repositoryId, name );
|
||||
T metadataFacet;
|
||||
if (repositoryId!=null) {
|
||||
metadataFacet = factory.createMetadataFacet( repositoryId, name );
|
||||
} else {
|
||||
metadataFacet = factory.createMetadataFacet();
|
||||
}
|
||||
Map<String, String> map = new HashMap<>();
|
||||
for ( Property property : JcrUtils.getProperties( node ) )
|
||||
{
|
||||
@ -745,38 +745,53 @@ public void removeMetadataFacet( RepositorySession session, String repositoryId,
|
||||
}
|
||||
}
|
||||
|
||||
private String buildArtifactByDateRangeQuery(String repoId, ZonedDateTime startTime, ZonedDateTime endTime) {
|
||||
StringBuilder q = getArtifactQuery( repoId );
|
||||
|
||||
if ( startTime != null )
|
||||
{
|
||||
q.append(" AND [artifact].[whenGathered] >= $start");
|
||||
}
|
||||
if ( endTime != null )
|
||||
{
|
||||
q.append(" AND [artifact].[whenGathered] <= $end");
|
||||
}
|
||||
q.append(" ORDER BY [artifact].[whenGathered]");
|
||||
return q.toString();
|
||||
}
|
||||
|
||||
private QueryResult queryArtifactByDateRange(Session jcrSession, String repositoryId,
|
||||
ZonedDateTime startTime, ZonedDateTime endTime,
|
||||
long offset, long maxEntries) throws MetadataRepositoryException {
|
||||
String q = buildArtifactByDateRangeQuery(repositoryId, startTime, endTime);
|
||||
|
||||
try {
|
||||
Query query = jcrSession.getWorkspace().getQueryManager().createQuery(q, Query.JCR_SQL2);
|
||||
query.setOffset(offset);
|
||||
query.setLimit(maxEntries);
|
||||
ValueFactory valueFactory = jcrSession.getValueFactory();
|
||||
if (startTime != null) {
|
||||
query.bindValue("start", valueFactory.createValue(createCalendar(startTime)));
|
||||
}
|
||||
if (endTime != null) {
|
||||
query.bindValue("end", valueFactory.createValue(createCalendar(endTime)));
|
||||
}
|
||||
return query.execute();
|
||||
} catch (RepositoryException e) {
|
||||
throw new MetadataRepositoryException(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session, String repoId, Date startTime, Date endTime )
|
||||
public List<ArtifactMetadata> getArtifactsByDateRange(RepositorySession session, String repoId, ZonedDateTime startTime, ZonedDateTime endTime )
|
||||
throws MetadataRepositoryException
|
||||
{
|
||||
final Session jcrSession = getSession( session );
|
||||
|
||||
List<ArtifactMetadata> artifacts;
|
||||
|
||||
String q = getArtifactQuery( repoId );
|
||||
|
||||
if ( startTime != null )
|
||||
{
|
||||
q += " AND [whenGathered] >= $start";
|
||||
}
|
||||
if ( endTime != null )
|
||||
{
|
||||
q += " AND [whenGathered] <= $end";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
Query query = jcrSession.getWorkspace().getQueryManager().createQuery( q, Query.JCR_SQL2 );
|
||||
ValueFactory valueFactory = jcrSession.getValueFactory();
|
||||
if ( startTime != null )
|
||||
{
|
||||
query.bindValue( "start", valueFactory.createValue( createCalendar( startTime ) ) );
|
||||
}
|
||||
if ( endTime != null )
|
||||
{
|
||||
query.bindValue( "end", valueFactory.createValue( createCalendar( endTime ) ) );
|
||||
}
|
||||
QueryResult result = query.execute();
|
||||
QueryResult result = queryArtifactByDateRange(jcrSession, repoId, startTime, endTime, 0, Long.MAX_VALUE);
|
||||
|
||||
artifacts = new ArrayList<>();
|
||||
for ( Node n : JcrUtils.getNodes( result ) )
|
||||
@ -794,7 +809,15 @@ public List<ArtifactMetadata> getArtifactsByDateRange( RepositorySession session
|
||||
@Override
|
||||
public Stream<ArtifactMetadata> getArtifactsByDateRangeStream( RepositorySession session, String repositoryId, ZonedDateTime startTime, ZonedDateTime endTime, long offset, long maxEntries ) throws MetadataRepositoryException
|
||||
{
|
||||
return null;
|
||||
final Session jcrSession = getSession( session );
|
||||
QueryResult result = queryArtifactByDateRange(jcrSession, repositoryId, startTime, endTime, offset, maxEntries);
|
||||
return StreamSupport.stream(createResultSpliterator(result, (row) -> {
|
||||
try {
|
||||
return getArtifactFromNode(repositoryId, row.getNode("artifact"));
|
||||
} catch (RepositoryException e) {
|
||||
return null;
|
||||
}
|
||||
}), false);
|
||||
}
|
||||
|
||||
|
||||
@ -970,7 +993,7 @@ public List<ArtifactMetadata> getArtifacts( RepositorySession session, String re
|
||||
final Session jcrSession = getSession( session );
|
||||
List<ArtifactMetadata> artifacts;
|
||||
|
||||
String q = getArtifactQuery( repositoryId );
|
||||
String q = getArtifactQuery( repositoryId ).toString();
|
||||
|
||||
try
|
||||
{
|
||||
@ -993,9 +1016,9 @@ public List<ArtifactMetadata> getArtifacts( RepositorySession session, String re
|
||||
return artifacts;
|
||||
}
|
||||
|
||||
private static String getArtifactQuery( String repositoryId )
|
||||
private static StringBuilder getArtifactQuery( String repositoryId )
|
||||
{
|
||||
return new StringBuilder(QUERY_ARTIFACT_1).append(getRepositoryContentPath( repositoryId )).append(QUERY_ARTIFACT_2).toString();
|
||||
return new StringBuilder(QUERY_ARTIFACT_1).append(getRepositoryContentPath( repositoryId )).append(QUERY_ARTIFACT_2);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1210,17 +1233,7 @@ private void retrieveFacetProperties( FacetedMetadata metadata, Node node ) thro
|
||||
}
|
||||
else
|
||||
{
|
||||
MetadataFacet facet = factory.createMetadataFacet();
|
||||
Map<String, String> map = new HashMap<>();
|
||||
for ( Property property : JcrUtils.getProperties( n ) )
|
||||
{
|
||||
String p = property.getName();
|
||||
if ( !p.startsWith( "jcr:" ) )
|
||||
{
|
||||
map.put( p, property.getString() );
|
||||
}
|
||||
}
|
||||
facet.fromProperties( map );
|
||||
MetadataFacet facet = createFacetFromNode(factory, n);
|
||||
metadata.addFacet( facet );
|
||||
}
|
||||
}
|
||||
@ -1869,11 +1882,9 @@ private Node getOrAddArtifactNode( Session jcrSession, String repositoryId, Stri
|
||||
return node;
|
||||
}
|
||||
|
||||
private static Calendar createCalendar( Date time )
|
||||
private static Calendar createCalendar( ZonedDateTime time )
|
||||
{
|
||||
Calendar cal = Calendar.getInstance();
|
||||
cal.setTime( time );
|
||||
return cal;
|
||||
return GregorianCalendar.from(time);
|
||||
}
|
||||
|
||||
private String join( Collection<String> ids )
|
||||
|
Loading…
x
Reference in New Issue
Block a user