adapting tests to modified cyprus map request parameter creation
[cdmlib.git] / cdmlib-ext / src / test / java / eu / etaxonomy / cdm / ext / geo / EditGeoServiceTest.java
index 35be7ca832952cac97377df2f1fd1b98b7efd58e..265e73497699da490bdf3ea0e019ce9d2fd8bab4 100644 (file)
@@ -15,6 +15,7 @@ import static org.junit.Assert.assertTrue;
 import java.awt.Color;\r
 import java.io.IOException;\r
 import java.io.InputStream;\r
+import java.io.InputStreamReader;\r
 import java.net.HttpURLConnection;\r
 import java.net.MalformedURLException;\r
 import java.net.URI;\r
@@ -28,19 +29,20 @@ import java.util.Map;
 import java.util.Set;\r
 import java.util.UUID;\r
 \r
+import org.apache.commons.lang.StringUtils;\r
 import org.apache.http.client.ClientProtocolException;\r
 import org.apache.log4j.Logger;\r
-import org.junit.After;\r
-import org.junit.AfterClass;\r
 import org.junit.Before;\r
 import org.junit.Test;\r
 import org.unitils.spring.annotation.SpringBeanByType;\r
 \r
 import eu.etaxonomy.cdm.api.service.ITermService;\r
-import eu.etaxonomy.cdm.common.CdmUtils;\r
+import eu.etaxonomy.cdm.api.service.IVocabularyService;\r
 import eu.etaxonomy.cdm.common.StreamUtils;\r
 import eu.etaxonomy.cdm.common.UriUtils;\r
+import eu.etaxonomy.cdm.model.common.DefinedTermBase;\r
 import eu.etaxonomy.cdm.model.common.Language;\r
+import eu.etaxonomy.cdm.model.common.TermType;\r
 import eu.etaxonomy.cdm.model.common.TermVocabulary;\r
 import eu.etaxonomy.cdm.model.description.AbsenceTerm;\r
 import eu.etaxonomy.cdm.model.description.Distribution;\r
@@ -50,28 +52,32 @@ import eu.etaxonomy.cdm.model.location.NamedArea;
 import eu.etaxonomy.cdm.model.location.NamedAreaLevel;\r
 import eu.etaxonomy.cdm.model.location.NamedAreaType;\r
 import eu.etaxonomy.cdm.persistence.dao.common.IDefinedTermDao;\r
-import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;\r
+import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;\r
 \r
 /**\r
  * @author a.mueller\r
  * @created 08.10.2008\r
  */\r
-public class EditGeoServiceTest extends CdmIntegrationTest {\r
-    @SuppressWarnings("unused")\r
+public class EditGeoServiceTest extends CdmTransactionalIntegrationTest {\r
     private static final Logger logger = Logger.getLogger(EditGeoServiceTest.class);\r
 \r
-    private static final String EDIT_MAPSERVICE_URI_STING = "http://edit.br.fgov.be/edit_wp5/v1/areas.php";\r
+    private static final String EDIT_MAPSERVICE_URI_STING = "http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php";\r
     private static URI editMapServiceUri;\r
 \r
     //@SpringBeanByType\r
     private IDefinedTermDao termDao;\r
-    \r
+\r
     @SpringBeanByType\r
     private ITermService termService;\r
 \r
+    @SpringBeanByType\r
+    private IVocabularyService vocabService;\r
+\r
     @SpringBeanByType\r
     private GeoServiceAreaAnnotatedMapping mapping;\r
 \r
+    @SpringBeanByType\r
+    private IEditGeoService editGeoService;\r
 //\r
 //     /**\r
 //      * @throws java.lang.Exception\r
@@ -82,13 +88,6 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
 //             initializer.initialize();\r
 //     }\r
 \r
-    /**\r
-     * @throws java.lang.Exception\r
-     */\r
-    @AfterClass\r
-    public static void tearDownAfterClass() throws Exception {\r
-    }\r
-\r
     /**\r
      * @throws java.lang.Exception\r
      */\r
@@ -99,12 +98,6 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
         editMapServiceUri = new URI(EDIT_MAPSERVICE_URI_STING);\r
     }\r
 \r
-    /**\r
-     * @throws java.lang.Exception\r
-     */\r
-    @After\r
-    public void tearDown() throws Exception {\r
-    }\r
 \r
 //******************************************** TESTS**************\r
     @Test\r
@@ -132,14 +125,15 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
         //TODO Set semantics is not determined\r
         //String expected = "http://www.test.de/webservice?l=tdwg3&ad=tdwg3:a:GER|b:OKL|c:BGM|b:SPA|d:FRA&as=a:005500|b:00FF00|c:FFFFFF|d:001100&bbox=-20,40,40,40&ms=400x300";\r
         System.out.println(result);\r
-        assertTrue(result.matches(".*l=earth.*"));\r
+//        assertTrue(result.matches(".*l=earth.*"));\r
         assertTrue(result.matches(".*ms=600,300.*"));\r
         assertTrue(result.matches(".*ad=tdwg[1-4].*"));\r
         assertTrue(result.matches(".*tdwg2:[a-d]:14[\\|&].*") );\r
         assertTrue(result.matches(".*[a-d]:FRA,BGM[\\|&].*") || result.matches(".*[a-d]:BGM,FRA[\\|&].*") );\r
         assertTrue(result.matches(".*[a-d]:GER[\\|&].*") );\r
         assertTrue(result.matches(".*[a-d]:SPA[\\|&].*") );\r
-        assertTrue(result.matches(".*tdwg4:[a-d]:INDAP[\\|&].*") );\r
+//        assertTrue(result.matches(".*tdwg4:[a-d]:INDAP[\\|&].*") );\r
+        assertTrue(result.matches(".*tdwg4:[a-h]:INDAP[\\|&].*") );\r
         //assertTrue(result.matches("0000ff"));\r
         //TODO continue\r
 \r
@@ -171,7 +165,7 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
         String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions, mapping, presenceAbsenceColorMap, 600, 300, bbox,backLayer, null, languages );\r
         //TODO Set semantics is not determined\r
         //String expected = "http://www.test.de/webservice?l=tdwg3&ad=tdwg3:a:GER|b:OKL|c:BGM|b:SPA|d:FRA&as=a:005500|b:00FF00|c:FFFFFF|d:001100&bbox=-20,40,40,40&ms=400x300";\r
-        assertTrue(result.matches(".*l=earth.*"));\r
+//        assertTrue(result.matches(".*l=earth.*"));\r
         assertTrue(result.matches(".*ms=600,300.*"));\r
         assertTrue(result.matches(".*ad=cyprusdivs%3Abdcode:.*"));\r
         assertTrue(result.matches(".*[a-d]:5,4[\\|&].*") || result.matches(".*[a-d]:4,5[\\|&].*") );\r
@@ -186,12 +180,13 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
     private void subTestWithEditMapService(String result)throws MalformedURLException, IOException {\r
         if(UriUtils.isServiceAvailable(editMapServiceUri)){\r
             URL requestUrl = new URL(editMapServiceUri.toString() + "?img=false&" + result);\r
+            logger.debug("editMapServiceUri: " + requestUrl);\r
             HttpURLConnection connection = (HttpURLConnection) requestUrl.openConnection();\r
             connection.connect();\r
             assertTrue(connection.getResponseCode() == 200);\r
             InputStream contentStream = connection.getInputStream();\r
             String content = StreamUtils.readToString(contentStream);\r
-            System.out.println(content);\r
+            logger.debug("EditMapService response body:\n" + content);\r
             assertTrue(content.startsWith("[{"));\r
             assertTrue(content.endsWith("}]"));\r
             assertTrue(content.matches(".*\"bbox\":.*"));\r
@@ -203,24 +198,52 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
     }\r
 \r
     public static final UUID uuidCyprusDivisionsVocabulary = UUID.fromString("2119f610-1f93-4d87-af28-40aeefaca100");\r
-    private Map<String, NamedArea> divisions = new HashMap<String, NamedArea>();\r
+    private final Map<String, NamedArea> divisions = new HashMap<String, NamedArea>();\r
 \r
-    private boolean makeCyprusAreas() {\r
+    private boolean makeCyprusAreas() throws IOException {\r
         //divisions\r
 \r
 \r
         NamedAreaType areaType = NamedAreaType.NATURAL_AREA();\r
         NamedAreaLevel areaLevel = NamedAreaLevel.NewInstance("Cyprus Division", "Cyprus Division", null);\r
 \r
-        TermVocabulary areaVocabulary = TermVocabulary.NewInstance("Cyprus devisions", "Cyprus divisions", null, null);\r
+        termService.saveOrUpdate(areaLevel);\r
+\r
+        TermVocabulary<NamedArea> areaVocabulary = TermVocabulary.NewInstance(TermType.NamedArea, "Cyprus devisions", "Cyprus divisions", null, null);\r
         areaVocabulary.setUuid(uuidCyprusDivisionsVocabulary);\r
 \r
+\r
         for(int i = 1; i <= 8; i++){\r
             UUID divisionUuid = getNamedAreaUuid(String.valueOf(i));\r
-            NamedArea division = this.getNamedArea(divisionUuid, "Division " + i, "Cyprus: Division " + i, String.valueOf(i), areaType, areaLevel, areaVocabulary);\r
+            NamedArea division = this.newNamedArea(\r
+                    divisionUuid,\r
+                    "Division " + i,\r
+                    "Cyprus: Division " + i,\r
+                    String.valueOf(i), // id in vocab\r
+                    areaType,\r
+                    areaLevel,\r
+                    areaVocabulary);\r
             divisions.put(String.valueOf(i), division);\r
         }\r
 \r
+        vocabService.saveOrUpdate(areaVocabulary);\r
+        commitAndStartNewTransaction(null);\r
+\r
+\r
+        // import and map shapefile attributes from csv\r
+        InputStream is = getClass().getClassLoader().getResourceAsStream("eu/etaxonomy/cdm/ext/geo/cyprusdivs.csv");\r
+        List<String> idSearchFields = new ArrayList<String>();\r
+        idSearchFields.add("bdcode");\r
+        String wmsLayerName = "cyprusdivs";\r
+        editGeoService.mapShapeFileToNamedAreas(new InputStreamReader(is), idSearchFields, wmsLayerName, uuidCyprusDivisionsVocabulary, null);\r
+\r
+        divisions.clear();\r
+        Set<DefinedTermBase> terms = vocabService.load(uuidCyprusDivisionsVocabulary).getTerms();\r
+        for(DefinedTermBase dtb : terms){\r
+            divisions.put(dtb.getIdInVocabulary(), (NamedArea) dtb);\r
+        }\r
+\r
+\r
 //             indigenousStatus = (PresenceTerm)getTermService().find(CyprusTransformer.indigenousUuid);\r
 //             casualStatus = (PresenceTerm)getTermService().find(CyprusTransformer.casualUuid);\r
 //             nonInvasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.nonInvasiveUuid);\r
@@ -243,7 +266,7 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
 \r
 \r
     public UUID getNamedAreaUuid(String key) {\r
-        if (CdmUtils.isEmpty(key)){return null;\r
+        if (StringUtils.isBlank(key)){return null;\r
         }else if (key.equalsIgnoreCase("1")){return uuidDivision1;\r
         }else if (key.equalsIgnoreCase("2")){return uuidDivision2;\r
         }else if (key.equalsIgnoreCase("3")){return uuidDivision3;\r
@@ -257,19 +280,20 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
         }\r
     }\r
 \r
-    protected NamedArea getNamedArea(UUID uuid, String label, String text, String labelAbbrev, NamedAreaType areaType, NamedAreaLevel level, TermVocabulary voc){\r
-        NamedArea namedArea = NamedArea.NewInstance(text, label, labelAbbrev);\r
+    protected NamedArea newNamedArea(UUID uuid, String label, String text, String IdInVocabulary, NamedAreaType areaType, NamedAreaLevel level, TermVocabulary<NamedArea> voc){\r
+        NamedArea namedArea = NamedArea.NewInstance(text, label, null);\r
         voc.addTerm(namedArea);\r
         namedArea.setType(areaType);\r
         namedArea.setLevel(level);\r
         namedArea.setUuid(uuid);\r
+        namedArea.setIdInVocabulary(IdInVocabulary);\r
         return namedArea;\r
     }\r
 \r
     @Test\r
     public void testGetWebServiceUrlBangka() throws ClientProtocolException, IOException, URISyntaxException {\r
         NamedArea areaBangka = NamedArea.NewInstance("Bangka", "Bangka", null);\r
-        TermVocabulary<NamedArea> voc = TermVocabulary.NewInstance("test Voc", "test voc", null, null);\r
+        TermVocabulary<NamedArea> voc = TermVocabulary.NewInstance(TermType.NamedArea, "test Voc", "test voc", null, null);\r
         voc.addTerm(areaBangka);\r
 \r
         GeoServiceArea geoServiceArea = new GeoServiceArea();\r
@@ -297,7 +321,7 @@ public class EditGeoServiceTest extends CdmIntegrationTest {
 \r
         System.out.println(result);\r
 \r
-        assertTrue(result.matches(".*l=earth.*"));\r
+//        assertTrue(result.matches(".*l=earth.*"));\r
         assertTrue(result.matches(".*ms=600,300.*"));\r
         assertTrue(result.matches(".*ad=vmap0_as_bnd_political_boundary_a%3Anam:.*"));\r
         assertTrue(result.matches(".*(PULAU\\+BANGKA%23SUMATERA\\+SELATAN).*") );\r