/**
*
* marcosnr
* 28/02/2012
*/
package au.org.aurin.wif.suitability;
import java.io.File;
import java.util.Iterator;
import java.util.Set;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.data.simple.SimpleFeatureIterator;
import org.opengis.feature.simple.SimpleFeature;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.testng.AbstractTestNGSpringContextTests;
import org.testng.Assert;
import org.testng.annotations.Test;
import au.org.aurin.wif.io.GeodataFinder;
import au.org.aurin.wif.model.allocation.AllocationLU;
import au.org.aurin.wif.model.suitability.FactorImportance;
import au.org.aurin.wif.model.suitability.FactorTypeRating;
import au.org.aurin.wif.model.suitability.SuitabilityRule;
import au.org.aurin.wif.model.suitability.SuitabilityScenario;
import au.org.aurin.wif.repo.WifProjectDao;
import au.org.aurin.wif.repo.suitability.SuitabilityScenarioDao;
import au.org.aurin.wif.svc.WifKeys;
import au.org.aurin.wif.svc.suitability.SuitabilityScenarioService;
import com.fasterxml.jackson.databind.ObjectMapper;
/**
* Integration test for the whole What If implementation
*
* @author marcosnr
*
*/
@ContextConfiguration(locations = { "/test-integration-context.xml" })
public class UpdateSuitabilityGeoJSONOutcomeTest extends
AbstractTestNGSpringContextTests {
@Autowired
private GeodataFinder geodataFinder;
@Autowired
private WifProjectDao wifProjectDao;
/** The allocation lu dao. */
@Autowired
private SuitabilityScenarioDao suitabilityScenarioDao;
@Autowired
private SuitabilityScenarioService suitabilityScenarioService;
@Test(enabled = false, groups = { "suitability", "integration" })
public void getOutcomeTest() throws Exception {
// Making changes
ObjectMapper mapper = new ObjectMapper();
File input = geodataFinder
.getJsonFile("JSONs/CBUpdateSuitabilityScenarioOutcome.json");
SuitabilityScenario suitabilityScenario = mapper.readValue(input,
SuitabilityScenario.class);
System.out
.println("update suitabilityScenario from Jackson test, suitabilityScenario label: "
+ suitabilityScenario.getLabel());
suitabilityScenario.setId(WifKeys.TEST_SUITABILITY_SCENARIO_ID);
// Updating changes
suitabilityScenarioService.updateSuitabilityScenario(
suitabilityScenario, WifKeys.TEST_PROJECT_ID.toString());
// Checking values where updated
SuitabilityScenario suitabilityScenario2 = suitabilityScenarioService
.getSuitabilityScenario(suitabilityScenario.getId().toString(),
WifKeys.TEST_PROJECT_ID.toString());
Set<SuitabilityRule> suitabilityRules2 = suitabilityScenario2
.getSuitabilityRules();
boolean found = false;
boolean notFound = true;
// Assert.assertTrue(found);
// Assert.assertTrue(notFound);
String areaAnalyzed = WifKeys.POLYGON_TEST;
String crsArea = WifKeys.CRS_TEST;
SimpleFeatureCollection suitabilityAnalysis = suitabilityScenarioService
.getOutcome(WifKeys.TEST_SUITABILITY_SCENARIO_ID, areaAnalyzed,
crsArea);
SimpleFeatureIterator it = suitabilityAnalysis.features();
System.out
.println("results feature size " + suitabilityAnalysis.size());
Assert.assertEquals(suitabilityAnalysis.size(), (8));
Double score = 0.0;
try {
while (it.hasNext()) {
SimpleFeature uazFeature = it.next();
score += (Double) uazFeature.getAttribute("SCORE_1");
}
} finally {
it.close();
}
Assert.assertEquals(score, new Double(90000));
}
@Test(enabled = false, groups = { "suitability", "integration" }, dependsOnMethods = { "getOutcomeTest" })
public void rollBackTest() throws Exception {
// Making changes
ObjectMapper mapper = new ObjectMapper();
// Putting the DB to its previous state
File input2 = geodataFinder.getJsonFile("JSONs/Suburbanization.json");
SuitabilityScenario savedSuitabilityScenario = mapper.readValue(input2,
SuitabilityScenario.class);
System.out
.println("update savedSuitabilityScenario from Jackson test, suitabilityScenario label: "
+ savedSuitabilityScenario.getLabel());
savedSuitabilityScenario.setId(WifKeys.TEST_SUITABILITY_SCENARIO_ID);
suitabilityScenarioService.updateSuitabilityScenario(
savedSuitabilityScenario, WifKeys.TEST_PROJECT_ID.toString());
}
}