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 LdbcSnbBiQuery2TopTags extends Operation<List<LdbcSnbBiQuery2TopTagsResult>> { public static final int TYPE = 2; public static final int DEFAULT_LIMIT = 100; private final long dateA; private final long dateB; private final List<String> countries; private final int messageThreshold; private final long endOfSimulationTime; private final int limit; public LdbcSnbBiQuery2TopTags( long dateA, long dateB, List<String> countries, int messageThreshold, long endOfSimulationTime, int limit ) { this.dateA = dateA; this.dateB = dateB; this.countries = countries; this.messageThreshold = messageThreshold; this.endOfSimulationTime = endOfSimulationTime; this.limit = limit; } public long dateA() { return dateA; } public long dateB() { return dateB; } public List<String> countries() { return countries; } public int messageThreshold() { return messageThreshold; } public long endOfSimulationTime() { return endOfSimulationTime; } public int limit() { return limit; } @Override public boolean equals( Object o ) { if ( this == o ) { return true; } if ( o == null || getClass() != o.getClass() ) { return false; } LdbcSnbBiQuery2TopTags that = (LdbcSnbBiQuery2TopTags) o; if ( dateA != that.dateA ) { return false; } if ( dateB != that.dateB ) { return false; } if ( messageThreshold != that.messageThreshold ) { return false; } if ( endOfSimulationTime != that.endOfSimulationTime ) { return false; } if ( limit != that.limit ) { return false; } return !(countries != null ? !countries.equals( that.countries ) : that.countries != null); } @Override public int hashCode() { int result = (int) (dateA ^ (dateA >>> 32)); result = 31 * result + (int) (dateB ^ (dateB >>> 32)); result = 31 * result + (countries != null ? countries.hashCode() : 0); result = 31 * result + messageThreshold; result = 31 * result + (int) (endOfSimulationTime ^ (endOfSimulationTime >>> 32)); result = 31 * result + limit; return result; } @Override public List<LdbcSnbBiQuery2TopTagsResult> marshalResult( String serializedResults ) throws SerializingMarshallingException { List<List<Object>> resultsAsList = SerializationUtil.marshalListOfLists( serializedResults ); List<LdbcSnbBiQuery2TopTagsResult> result = new ArrayList<>(); for ( int i = 0; i < resultsAsList.size(); i++ ) { List<Object> row = resultsAsList.get( i ); String country = (String) row.get( 0 ); int month = ((Number) row.get( 1 )).intValue(); String gender = (String) row.get( 2 ); int ageGroup = ((Number) row.get( 3 )).intValue(); String tag = (String) row.get( 4 ); int count = ((Number) row.get( 5 )).intValue(); result.add( new LdbcSnbBiQuery2TopTagsResult( country, month, gender, ageGroup, tag, count ) ); } return result; } @Override public String serializeResult( Object resultsObject ) throws SerializingMarshallingException { List<LdbcSnbBiQuery2TopTagsResult> result = (List<LdbcSnbBiQuery2TopTagsResult>) resultsObject; List<List<Object>> resultsFields = new ArrayList<>(); for ( int i = 0; i < result.size(); i++ ) { LdbcSnbBiQuery2TopTagsResult row = result.get( i ); List<Object> resultFields = new ArrayList<>(); resultFields.add( row.country() ); resultFields.add( row.month() ); resultFields.add( row.gender() ); resultFields.add( row.ageGroup() ); resultFields.add( row.tag() ); resultFields.add( row.count() ); resultsFields.add( resultFields ); } return SerializationUtil.toJson( resultsFields ); } @Override public int type() { return TYPE; } }