/bak/tool-testdata-bak/src/main/java/edu/umd/cs/guitar/testdata/guitar/CoverageProcessor.java

https://github.com/bryantrobbins/guitar2 · Java · 90 lines · 68 code · 17 blank · 5 comment · 2 complexity · 96b909674b5c68e410ce45f4f3744ec7 MD5 · raw file

  1. package edu.umd.cs.guitar.testdata.guitar;
  2. import com.mongodb.BasicDBObject;
  3. import com.mongodb.DB;
  4. import com.mongodb.DBCollection;
  5. import com.mongodb.DBObject;
  6. import com.mongodb.gridfs.GridFS;
  7. import com.mongodb.gridfs.GridFSInputFile;
  8. import edu.umd.cs.guitar.model.data.TestCase;
  9. import edu.umd.cs.guitar.testdata.TestDataManager;
  10. import edu.umd.cs.guitar.testdata.TestDataManagerDefaults;
  11. import edu.umd.cs.guitar.testdata.loader.ArtifactProcessor;
  12. import edu.umd.cs.guitar.testdata.loader.GsonProcessor;
  13. import edu.umd.cs.guitar.testdata.util.CoberturaUtils;
  14. import net.sourceforge.cobertura.coveragedata.ProjectData;
  15. import org.apache.log4j.LogManager;
  16. import org.apache.log4j.Logger;
  17. import java.io.File;
  18. import java.io.IOException;
  19. import java.util.Iterator;
  20. import java.util.List;
  21. /**
  22. * Created by bryan on 4/5/14.
  23. */
  24. public class CoverageProcessor implements ArtifactProcessor<ProjectData> {
  25. private static Logger logger = LogManager.getLogger(CoverageProcessor.class);
  26. private DB db = null;
  27. @Override
  28. public String process(String path) throws Exception {
  29. // Now we need to handle the ser binary file from Cobertura
  30. // We will use GridFS from Mongo
  31. File serFileHandle = new File(path);
  32. String serFileId = TestDataManager.generateId("serFile_");
  33. GridFS gfsCoverage = new GridFS(db,
  34. TestDataManagerDefaults.COLLECTION_COVERAGE);
  35. GridFSInputFile gfsFile = null;
  36. try {
  37. gfsFile = gfsCoverage.createFile(serFileHandle);
  38. } catch (IOException e) {
  39. logger.error("Could not create file from " + serFileHandle
  40. + " in GridFS.", e);
  41. }
  42. if (gfsFile == null) {
  43. return null;
  44. }
  45. gfsFile.setFilename(serFileId);
  46. gfsFile.save();
  47. return serFileId;
  48. }
  49. @Override
  50. public ProjectData objectify(String json) {
  51. ProjectData covObject;
  52. try {
  53. covObject = CoberturaUtils.getCoverageObjectFromGFS(
  54. db, json);
  55. } catch (IOException e) {
  56. logger.error("Error retrieving coverage data from GridFS", e);
  57. return null;
  58. }
  59. return covObject;
  60. }
  61. @Override
  62. public String getKey() {
  63. return "coverage";
  64. }
  65. @Override
  66. public void setDB(DB db) {
  67. this.db = db;
  68. }
  69. @Override
  70. public Iterator<String> getIterator(List<Object> objs) {
  71. throw new UnsupportedOperationException("Iterator not supported for CoverageProcessor");
  72. }
  73. }