/**
* This file is licensed under the University of Illinois/NCSA Open Source License. See LICENSE.TXT for details.
*/
package edu.illinois.codingtracker.tests.postprocessors;
import java.util.List;
import edu.illinois.codingtracker.operations.UserOperation;
import edu.illinois.codingtracker.operations.refactorings.NewStartedRefactoringOperation;
import edu.illinois.codingtracker.recording.TextRecorder;
/**
* This class fixes negative timestamps of NewStartedRefactoringOperation.
*
* @author Stas Negara
*
*/
public class RefactoringTimestampsPostprocessor extends CodingTrackerPostprocessor {
private final static String BUGGY_VERSION= "1.0.0.201105242245";
@Override
protected void checkPostprocessingPreconditions() {
//no preconditions
}
@Override
protected boolean shouldPostprocessVersionFolder(String folderName) {
return folderName.equals(BUGGY_VERSION);
}
@Override
protected String getRecordFileName() {
return "codechanges.txt";
}
@Override
protected void postprocess(List<UserOperation> userOperations) {
for (int i= 0; i < userOperations.size(); i++) {
UserOperation userOperation= userOperations.get(i);
if (userOperation instanceof NewStartedRefactoringOperation && userOperation.getTime() == -1) {
NewStartedRefactoringOperation originalOperation= (NewStartedRefactoringOperation)userOperation;
long newTimestamp= userOperations.get(i + 1).getTime();
NewStartedRefactoringOperation replacementOperation= new NewStartedRefactoringOperation(originalOperation.getShouldAlwaysReplay(), originalOperation.getRefactoringMode(),
originalOperation.getID(), originalOperation.getProject(), originalOperation.getFlags(), originalOperation.getArguments(), newTimestamp);
TextRecorder.record(replacementOperation);
} else {
TextRecorder.record(userOperation);
}
}
}
}