package com.ldbc.driver.workloads.ldbc.snb.interactive;
import com.ldbc.driver.Operation;
import com.ldbc.driver.SerializingMarshallingException;
import com.ldbc.driver.util.ListUtils;
import org.codehaus.jackson.map.ObjectMapper;
import java.io.IOException;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import static java.lang.String.format;
public class LdbcUpdate4AddForum extends Operation<LdbcNoResult>
{
private static final ObjectMapper objectMapper = new ObjectMapper();
public static final int TYPE = 1004;
private final long forumId;
private final String forumTitle;
private final Date creationDate;
private final long moderatorPersonId;
private final List<Long> tagIds;
public LdbcUpdate4AddForum( long forumId, String forumTitle, Date creationDate, long moderatorPersonId,
List<Long> tagIds )
{
this.forumId = forumId;
this.forumTitle = forumTitle;
this.creationDate = creationDate;
this.moderatorPersonId = moderatorPersonId;
this.tagIds = tagIds;
}
public long forumId()
{
return forumId;
}
public String forumTitle()
{
return forumTitle;
}
public Date creationDate()
{
return creationDate;
}
public long moderatorPersonId()
{
return moderatorPersonId;
}
public List<Long> tagIds()
{
return tagIds;
}
@Override
public boolean equals( Object o )
{
if ( this == o )
{ return true; }
if ( o == null || getClass() != o.getClass() )
{ return false; }
LdbcUpdate4AddForum that = (LdbcUpdate4AddForum) o;
if ( forumId != that.forumId )
{ return false; }
if ( moderatorPersonId != that.moderatorPersonId )
{ return false; }
if ( creationDate != null ? !creationDate.equals( that.creationDate ) : that.creationDate != null )
{ return false; }
if ( forumTitle != null ? !forumTitle.equals( that.forumTitle ) : that.forumTitle != null )
{ return false; }
if ( tagIds != null ? !ListUtils.listsEqual( sort( tagIds ), sort( that.tagIds ) ) : that.tagIds != null )
{ return false; }
return true;
}
private <T extends Comparable> List<T> sort( List<T> list )
{
Collections.sort( list );
return list;
}
@Override
public int hashCode()
{
int result = (int) (forumId ^ (forumId >>> 32));
result = 31 * result + (forumTitle != null ? forumTitle.hashCode() : 0);
result = 31 * result + (creationDate != null ? creationDate.hashCode() : 0);
result = 31 * result + (int) (moderatorPersonId ^ (moderatorPersonId >>> 32));
result = 31 * result + (tagIds != null ? tagIds.hashCode() : 0);
return result;
}
@Override
public String toString()
{
return "LdbcUpdate4AddForum{" +
"forumId=" + forumId +
", forumTitle='" + forumTitle + '\'' +
", creationDate=" + creationDate +
", moderatorPersonId=" + moderatorPersonId +
", tagIds=" + tagIds +
'}';
}
@Override
public LdbcNoResult marshalResult( String serializedOperationResult )
{
return LdbcNoResult.INSTANCE;
}
@Override
public String serializeResult( Object operationResultInstance ) throws SerializingMarshallingException
{
try
{
return objectMapper.writeValueAsString(
LdbcSnbInteractiveWorkloadConfiguration.WRITE_OPERATION_NO_RESULT_DEFAULT_RESULT );
}
catch ( IOException e )
{
throw new SerializingMarshallingException( format( "Error while trying to serialize result\n%s",
operationResultInstance ), e );
}
}
@Override
public int type()
{
return TYPE;
}
}