package com.ldbc.driver.workloads.ldbc.snb.bi;
import com.ldbc.driver.Operation;
import com.ldbc.driver.SerializingMarshallingException;
import java.util.ArrayList;
import java.util.List;
public class LdbcSnbBiQuery12TrendingPosts extends Operation<List<LdbcSnbBiQuery12TrendingPostsResult>>
{
public static final int TYPE = 12;
public static final int DEFAULT_LIMIT = 100;
private final long date;
private final int likeCount;
private final int limit;
public LdbcSnbBiQuery12TrendingPosts( long date, int likeCount, int limit )
{
this.date = date;
this.likeCount = likeCount;
this.limit = limit;
}
public long date()
{
return date;
}
public int likeCount()
{
return likeCount;
}
public int limit()
{
return limit;
}
@Override
public String toString()
{
return "LdbcSnbBiQuery12TrendingPosts{" +
"date=" + date +
", likeCount=" + likeCount +
", limit=" + limit +
'}';
}
@Override
public boolean equals( Object o )
{
if ( this == o )
{ return true; }
if ( o == null || getClass() != o.getClass() )
{ return false; }
LdbcSnbBiQuery12TrendingPosts that = (LdbcSnbBiQuery12TrendingPosts) o;
if ( date != that.date )
{ return false; }
if ( likeCount != that.likeCount )
{ return false; }
return limit == that.limit;
}
@Override
public int hashCode()
{
int result = (int) (date ^ (date >>> 32));
result = 31 * result + likeCount;
result = 31 * result + limit;
return result;
}
@Override
public List<LdbcSnbBiQuery12TrendingPostsResult> marshalResult( String serializedResults )
throws SerializingMarshallingException
{
List<List<Object>> resultsAsList = SerializationUtil.marshalListOfLists( serializedResults );
List<LdbcSnbBiQuery12TrendingPostsResult> result = new ArrayList<>();
for ( int i = 0; i < resultsAsList.size(); i++ )
{
List<Object> row = resultsAsList.get( i );
long postId = ((Number) row.get( 0 )).longValue();
String firstName = (String) row.get( 1 );
String lastName = (String) row.get( 2 );
long creationDate = ((Number) row.get( 3 )).longValue();
int count = ((Number) row.get( 4 )).intValue();
result.add(
new LdbcSnbBiQuery12TrendingPostsResult(
postId,
firstName,
lastName,
creationDate,
count
)
);
}
return result;
}
@Override
public String serializeResult( Object resultsObject ) throws SerializingMarshallingException
{
List<LdbcSnbBiQuery12TrendingPostsResult> result = (List<LdbcSnbBiQuery12TrendingPostsResult>) resultsObject;
List<List<Object>> resultsFields = new ArrayList<>();
for ( int i = 0; i < result.size(); i++ )
{
LdbcSnbBiQuery12TrendingPostsResult row = result.get( i );
List<Object> resultFields = new ArrayList<>();
resultFields.add( row.messageId() );
resultFields.add( row.firstName() );
resultFields.add( row.lastName() );
resultFields.add( row.creationDate() );
resultFields.add( row.likeCount() );
resultsFields.add( resultFields );
}
return SerializationUtil.toJson( resultsFields );
}
@Override
public int type()
{
return TYPE;
}
}