package com.bitmonlab.osiris.test.acceptancetest.map.mapFile;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import javax.inject.Inject;
import javax.inject.Named;
import org.springframework.data.mongodb.core.MongoTemplate;
import com.bitmonlab.osiris.test.acceptancetest.map.commons.HttpResponse;
import com.bitmonlab.osiris.restsender.ClientResponse;
import com.bitmonlab.osiris.restsender.Headers;
import com.bitmonlab.osiris.restsender.RestRequestSender;
import com.mongodb.DB;
import com.mongodb.gridfs.GridFS;
import com.mongodb.gridfs.GridFSDBFile;
import com.mongodb.gridfs.GridFSInputFile;
import cucumber.api.java.en.Given;
import cucumber.api.java.en.When;
public class GetMapFile {
@Inject
@Named("osirisMapRequestSender")
private RestRequestSender sender;
@Inject
private HttpResponse httpResponse;
private ClientResponse<InputStream> response;
private String collectionNameMap = "files_map";
@Inject
@Named("osirisGeolocationMongoTemplate")
private MongoTemplate mongoTemplate;
@Given("^I have a map file with APPID \"([^\"]*)\"$")
public void I_a_map_with_APPID(String appId) throws IOException{
// Express the Regexp above with the code you wish you had
File mapFile = new File("src/acceptance-test/resources/maps/background_" + appId +".map");
GridFS gridFS = getGridFS(collectionNameMap);
removeFile(appId,gridFS);
saveFile(appId,mapFile,gridFS);
}
@When("^I invoke a GET to \"([^\"]*)\" and applicationIdentifier \"([^\"]*)\" to get .map file$")
public void I_invoke_a_GET_to_and_applicationIdentifier_to_get_map_file(String url, String appIdentifier) throws Throwable {
// Express the Regexp above with the code you wish you had
response = sender.download(url,"application/octet-stream", "application/octet-stream", new Headers("api_key", appIdentifier), new Headers("Authorization", "Basic cm9vdDoxMjM0"));
httpResponse.setResponse(response);
}
private GridFS getGridFS(String collectionName){
DB db=mongoTemplate.getDb();
GridFS gridFS = new GridFS(db, collectionName);
return gridFS;
}
private void removeFile(String appIdentifier,GridFS gridFS){
GridFSDBFile gridFSFileRemoveFile = gridFS.findOne(appIdentifier);
if(gridFSFileRemoveFile!=null){
gridFS.remove(gridFSFileRemoveFile);
}
}
private void saveFile(String appIdentifier, File file, GridFS gridFS) throws IOException{
GridFSInputFile gridFSInputFile = gridFS.createFile(file);
gridFSInputFile.setFilename(appIdentifier);
gridFSInputFile.save();
}
}