Project

General

Profile

Download (20.7 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.cdm.ext.geo;
10

    
11
import static org.junit.Assert.assertTrue;
12

    
13
import java.awt.Color;
14
import java.io.FileNotFoundException;
15
import java.io.IOException;
16
import java.io.InputStream;
17
import java.io.InputStreamReader;
18
import java.net.HttpURLConnection;
19
import java.net.MalformedURLException;
20
import java.net.URL;
21
import java.util.ArrayList;
22
import java.util.Collection;
23
import java.util.HashMap;
24
import java.util.HashSet;
25
import java.util.List;
26
import java.util.Map;
27
import java.util.Set;
28
import java.util.UUID;
29

    
30
import org.apache.commons.lang.StringUtils;
31
import org.apache.http.client.ClientProtocolException;
32
import org.apache.log4j.Logger;
33
import org.junit.Assert;
34
import org.junit.Before;
35
import org.junit.Test;
36
import org.unitils.dbunit.annotation.DataSet;
37
import org.unitils.spring.annotation.SpringBeanByType;
38

    
39
import eu.etaxonomy.cdm.api.service.ITaxonService;
40
import eu.etaxonomy.cdm.api.service.ITermService;
41
import eu.etaxonomy.cdm.api.service.IVocabularyService;
42
import eu.etaxonomy.cdm.api.utility.DescriptionUtility;
43
import eu.etaxonomy.cdm.common.StreamUtils;
44
import eu.etaxonomy.cdm.common.URI;
45
import eu.etaxonomy.cdm.common.UriUtils;
46
import eu.etaxonomy.cdm.model.common.CdmBase;
47
import eu.etaxonomy.cdm.model.common.Language;
48
import eu.etaxonomy.cdm.model.common.MarkerType;
49
import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
50
import eu.etaxonomy.cdm.model.description.Distribution;
51
import eu.etaxonomy.cdm.model.description.Feature;
52
import eu.etaxonomy.cdm.model.description.PresenceAbsenceTerm;
53
import eu.etaxonomy.cdm.model.description.TaxonDescription;
54
import eu.etaxonomy.cdm.model.location.Country;
55
import eu.etaxonomy.cdm.model.location.NamedArea;
56
import eu.etaxonomy.cdm.model.location.NamedAreaLevel;
57
import eu.etaxonomy.cdm.model.location.NamedAreaType;
58
import eu.etaxonomy.cdm.model.taxon.Taxon;
59
import eu.etaxonomy.cdm.model.term.DefinedTermBase;
60
import eu.etaxonomy.cdm.model.term.TermType;
61
import eu.etaxonomy.cdm.model.term.TermVocabulary;
62
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
63

    
64
/**
65
 * @author a.mueller
66
 * @since 08.10.2008
67
 */
68
public class EditGeoServiceTest extends CdmTransactionalIntegrationTest {
69
    private static final Logger logger = Logger.getLogger(EditGeoServiceTest.class);
70

    
71
    private static final String EDIT_MAPSERVICE_URI_STING = "http://edit.africamuseum.be/edit_wp5/v1.2/rest_gen.php";
72
    private static URI editMapServiceUri;
73

    
74
    @SpringBeanByType
75
    private ITermService termService;
76

    
77
    @SpringBeanByType
78
    private IVocabularyService vocabService;
79

    
80
    @SpringBeanByType
81
    private GeoServiceAreaAnnotatedMapping mapping;
82

    
83
    @SpringBeanByType
84
    private IEditGeoService editGeoService;
85

    
86
    @SpringBeanByType
87
    private ITaxonService taxonService ;
88

    
89
    @Before
90
    public void setUp() throws Exception {
91
        System.setProperty("ONLY-A-TEST", "TRUE"); // allows EditGeoServiceUtilities to skip some line of code
92
        editMapServiceUri = new URI(EDIT_MAPSERVICE_URI_STING);
93
    }
94

    
95
//******************************************** TESTS**************
96

    
97
    @Test
98
    public void testGetWebServiceUrlCountry() {
99
        Set<Distribution> distributions = new HashSet<>();
100
        Country germany = termService.findByIdInVocabulary("DEU", Country.uuidCountryVocabulary, Country.class);
101

    
102
        distributions.add(Distribution.NewInstance(germany, PresenceAbsenceTerm.PRESENT()));
103
        distributions.add(Distribution.NewInstance(termService.findByIdInVocabulary("DE", Country.uuidCountryVocabulary, Country.class), PresenceAbsenceTerm.INTRODUCED()));
104
        Map<PresenceAbsenceTerm, Color> presenceAbsenceColorMap = new HashMap<>();
105
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.PRESENT(), Color.BLUE);
106
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.INTRODUCED(), Color.BLACK);
107
        List<Language> languages = new ArrayList<>();
108

    
109
        boolean subAreaPreference = false;
110
        boolean statusOrderPreference = false;
111

    
112
        Collection<Distribution> filteredDistributions = DescriptionUtility.filterDistributions(
113
                distributions, null, true, statusOrderPreference, subAreaPreference);
114

    
115
        String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(filteredDistributions,
116
                mapping, null, null, languages );
117
        logger.warn(result);
118
        Assert.assertTrue("WebServiceUrl must contain country part for Germany", result.matches(".*ad=country_earth(%3A|:)gmi_cntry:.:DEU.*"));
119
    }
120

    
121
    @Test
122
    public void testGetWebServiceUrlTdwg() throws MalformedURLException, IOException {
123
        //String webServiceUrl = "http://www.test.de/webservice";
124
        Set<Distribution> distributions = new HashSet<>();
125
        distributions.add(Distribution.NewInstance(termService.getAreaByTdwgAbbreviation("SPA"), PresenceAbsenceTerm.PRESENT()));
126
        distributions.add(Distribution.NewInstance(termService.getAreaByTdwgAbbreviation("GER"), PresenceAbsenceTerm.INTRODUCED()));
127
        distributions.add(Distribution.NewInstance(termService.getAreaByTdwgAbbreviation("14"), PresenceAbsenceTerm.CULTIVATED()));
128
        distributions.add(Distribution.NewInstance(termService.getAreaByTdwgAbbreviation("BGM"), PresenceAbsenceTerm.ABSENT()));
129
        distributions.add(Distribution.NewInstance(termService.getAreaByTdwgAbbreviation("FRA"), PresenceAbsenceTerm.ABSENT()));
130
        distributions.add(Distribution.NewInstance(termService.getAreaByTdwgAbbreviation("IND-AP"), PresenceAbsenceTerm.PRESENT()));
131

    
132
        Map<PresenceAbsenceTerm, Color> presenceAbsenceColorMap = new HashMap<>();
133
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.PRESENT(), Color.BLUE);
134
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.INTRODUCED(), Color.BLACK);
135
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.CULTIVATED(), Color.YELLOW);
136
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.ABSENT(), Color.DARK_GRAY);
137
//        String backLayer ="";
138
        presenceAbsenceColorMap = null;
139
//        String bbox="-20,0,120,70";
140
        List<Language> languages = new ArrayList<>();
141

    
142
//        boolean subAreaPreference = false;
143
//        boolean statusOrderPreference = false;
144
        String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(
145
                distributions,
146
                mapping,
147
                null, // presenceAbsenceTermColors
148
                null, // projectToLayer
149
                languages );
150
        //TODO Set semantics is not determined
151
        //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";
152
        logger.debug(result);
153
        assertTrue(result.matches(".*ad=tdwg[1-4].*"));
154
        assertTrue(result.matches(".*tdwg2:[a-d]:14[\\|&].*") );
155
        assertTrue(result.matches(".*[a-d]:FRA,BGM[\\|&].*") || result.matches(".*[a-d]:BGM,FRA[\\|&].*") );
156
        assertTrue(result.matches(".*[a-d]:GER[\\|&].*") );
157
        assertTrue(result.matches(".*[a-d]:SPA[\\|&].*") );
158
        assertTrue(result.matches(".*tdwg4:[a-d]:INDAP[\\|&].*") );
159
        //assertTrue(result.matches("0000ff"));
160
        //TODO continue
161

    
162
        // request map image from webservice
163
        subTestWithEditMapService(result);
164
    }
165

    
166
    @Test
167
    public void testGetWebServiceUrlCyprus() throws ClientProtocolException, IOException {
168
        makeCyprusAreas();
169
        Set<Distribution> distributions = new HashSet<>();
170
        distributions.add(Distribution.NewInstance(divisions.get("1"), PresenceAbsenceTerm.PRESENT()));
171
        distributions.add(Distribution.NewInstance(divisions.get("2"), PresenceAbsenceTerm.INTRODUCED()));
172
        distributions.add(Distribution.NewInstance(divisions.get("3"), PresenceAbsenceTerm.CULTIVATED()));
173
        distributions.add(Distribution.NewInstance(divisions.get("4"), PresenceAbsenceTerm.ABSENT()));
174
        distributions.add(Distribution.NewInstance(divisions.get("5"), PresenceAbsenceTerm.ABSENT()));
175
        distributions.add(Distribution.NewInstance(divisions.get("6"), PresenceAbsenceTerm.PRESENT()));
176

    
177
        Map<PresenceAbsenceTerm, Color> presenceAbsenceColorMap = new HashMap<>();
178
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.PRESENT(), Color.BLUE);
179
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.INTRODUCED(), Color.BLACK);
180
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.CULTIVATED(), Color.YELLOW);
181
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.ABSENT(), Color.DARK_GRAY);
182
        presenceAbsenceColorMap = null;
183
        List<Language> languages = new ArrayList<>();
184

    
185
        String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(
186
                distributions,
187
                mapping,
188
                null, null, languages );
189
        //TODO Set semantics is not determined
190
        //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";
191
        assertTrue(result.matches(".*ad=cyprusdivs%3Abdcode:.*"));
192
        assertTrue(result.matches(".*[a-d]:5,4[\\|&].*") || result.matches(".*[a-d]:4,5[\\|&].*") );
193
        assertTrue(result.matches(".*[a-d]:1,6[\\|&].*") || result.matches(".*[a-d]:6,1[\\|&].*") );
194
        assertTrue(result.matches(".*[a-d]:2[\\|&].*") );
195
        assertTrue(result.matches(".*[a-d]:3[\\|&].*") );
196

    
197
        // request map image from webservice
198
        subTestWithEditMapService(result);
199
    }
200

    
201
    private void subTestWithEditMapService(String queryString)throws MalformedURLException, IOException {
202
        if(UriUtils.isServiceAvailable(editMapServiceUri)){
203
            URL requestUrl = new URL(editMapServiceUri.toString() + "?img=false&bbox=-180,-90,180,90&ms=1000&" + queryString);
204
            logger.debug("editMapServiceUri: " + requestUrl);
205
            HttpURLConnection connection = (HttpURLConnection) requestUrl.openConnection();
206
            connection.connect();
207
//            connection.setReadTimeout(10000);  //timeout after 10 sec, does not seem to work
208
            assertTrue(connection.getResponseCode() == 200);
209
            InputStream contentStream = connection.getInputStream();
210
            String content = StreamUtils.readToString(contentStream);
211
            logger.debug("EditMapService response body:\n" + content);
212
            assertTrue(content.startsWith("[{"));
213
            assertTrue(content.endsWith("}]"));
214
            assertTrue(content.matches(".*\"bbox\":.*"));
215
            assertTrue(content.matches(".*\"legend\":.*"));
216
            assertTrue(content.matches(".*\"layers\":.*"));
217
            assertTrue(content.matches(".*\"sld\":.*"));
218
            assertTrue(content.matches(".*\"geoserver\":.*"));
219
        }
220
    }
221

    
222
    public static final UUID uuidCyprusDivisionsVocabulary = UUID.fromString("2119f610-1f93-4d87-af28-40aeefaca100");
223
    private final Map<String, NamedArea> divisions = new HashMap<>();
224

    
225
    private boolean makeCyprusAreas() throws IOException {
226
        //divisions
227

    
228
        NamedAreaType areaType = NamedAreaType.NATURAL_AREA();
229
        NamedAreaLevel areaLevel = NamedAreaLevel.NewInstance("Cyprus Division", "Cyprus Division", null);
230

    
231
        termService.saveOrUpdate(areaLevel);
232

    
233
        TermVocabulary<NamedArea> areaVocabulary = TermVocabulary.NewInstance(TermType.NamedArea,
234
                NamedArea.class, "Cyprus devisions", "Cyprus divisions", null, null);
235
        areaVocabulary.setUuid(uuidCyprusDivisionsVocabulary);
236

    
237
        for(int i = 1; i <= 8; i++){
238
            UUID divisionUuid = getNamedAreaUuid(String.valueOf(i));
239
            NamedArea division = this.newNamedArea(
240
                    divisionUuid,
241
                    "Division " + i,
242
                    "Cyprus: Division " + i,
243
                    String.valueOf(i), // id in vocab
244
                    areaType,
245
                    areaLevel,
246
                    areaVocabulary);
247
            divisions.put(String.valueOf(i), division);
248
        }
249

    
250
        vocabService.saveOrUpdate(areaVocabulary);
251
        commitAndStartNewTransaction(null);
252

    
253
        // import and map shapefile attributes from csv
254
        InputStream is = getClass().getClassLoader().getResourceAsStream("eu/etaxonomy/cdm/ext/geo/cyprusdivs.csv");
255
        List<String> idSearchFields = new ArrayList<String>();
256
        idSearchFields.add("bdcode");
257
        String wmsLayerName = "cyprusdivs";
258
        editGeoService.mapShapeFileToNamedAreas(new InputStreamReader(is), idSearchFields, wmsLayerName, uuidCyprusDivisionsVocabulary, null);
259

    
260
        divisions.clear();
261
        Set<DefinedTermBase> terms = vocabService.load(uuidCyprusDivisionsVocabulary).getTerms();
262
        for(DefinedTermBase<?> dtb : terms){
263
            divisions.put(dtb.getIdInVocabulary(), (NamedArea) dtb);
264
        }
265

    
266
//		indigenousStatus = (PresenceTerm)getTermService().find(CyprusTransformer.indigenousUuid);
267
//		casualStatus = (PresenceTerm)getTermService().find(CyprusTransformer.casualUuid);
268
//		nonInvasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.nonInvasiveUuid);
269
//		invasiveStatus = (PresenceTerm)getTermService().find(CyprusTransformer.invasiveUuid);
270
//		questionableStatus = (PresenceTerm)getTermService().find(CyprusTransformer.questionableUuid);
271

    
272
        return true;
273
    }
274

    
275
    public static final UUID uuidDivision1 = UUID.fromString("ab17eee9-1abb-4ce9-a9a2-563f840cdbfc");
276
    public static final UUID uuidDivision2 = UUID.fromString("c3606165-efb7-4224-a168-63e009eb4aa5");
277
    public static final UUID uuidDivision3 = UUID.fromString("750d4e07-e34b-491f-a7b7-09723afdc960");
278
    public static final UUID uuidDivision4 = UUID.fromString("8a858922-e8e5-4791-ad53-906e50633ec7");
279
    public static final UUID uuidDivision5 = UUID.fromString("16057133-d541-4ebd-81d4-cb92265ec54c");
280
    public static final UUID uuidDivision6 = UUID.fromString("fbf21230-4a42-4f4c-9af8-5da52123c264");
281
    public static final UUID uuidDivision7 = UUID.fromString("d31dd96a-36ea-4428-871c-d8552a9565ca");
282
    public static final UUID uuidDivision8 = UUID.fromString("236ea447-c3ab-486d-9e06-cc5907861acc");
283

    
284
    public UUID getNamedAreaUuid(String key) {
285
        if (StringUtils.isBlank(key)){return null;
286
        }else if (key.equalsIgnoreCase("1")){return uuidDivision1;
287
        }else if (key.equalsIgnoreCase("2")){return uuidDivision2;
288
        }else if (key.equalsIgnoreCase("3")){return uuidDivision3;
289
        }else if (key.equalsIgnoreCase("4")){return uuidDivision4;
290
        }else if (key.equalsIgnoreCase("5")){return uuidDivision5;
291
        }else if (key.equalsIgnoreCase("6")){return uuidDivision6;
292
        }else if (key.equalsIgnoreCase("7")){return uuidDivision7;
293
        }else if (key.equalsIgnoreCase("8")){return uuidDivision8;
294
        }else{
295
            return null;
296
        }
297
    }
298

    
299
    protected NamedArea newNamedArea(UUID uuid, String label, String text, String IdInVocabulary, NamedAreaType areaType, NamedAreaLevel level, TermVocabulary<NamedArea> voc){
300
        NamedArea namedArea = NamedArea.NewInstance(text, label, null);
301
        voc.addTerm(namedArea);
302
        namedArea.setType(areaType);
303
        namedArea.setLevel(level);
304
        namedArea.setUuid(uuid);
305
        namedArea.setIdInVocabulary(IdInVocabulary);
306
        return namedArea;
307
    }
308

    
309
    @Test
310
    public void testGetWebServiceUrlBangka() throws ClientProtocolException, IOException {
311
        NamedArea areaBangka = NamedArea.NewInstance("Bangka", "Bangka", null);
312
        TermVocabulary<NamedArea> voc = TermVocabulary.NewInstance(TermType.NamedArea,
313
                NamedArea.class, "test Voc", "test voc", null, null);
314
        voc.addTerm(areaBangka);
315

    
316
        GeoServiceArea geoServiceArea = new GeoServiceArea();
317
        String geoServiceLayer="vmap0_as_bnd_political_boundary_a";
318
        String layerFieldName ="nam";
319
        String areaValue = "PULAU BANGKA#SUMATERA SELATAN";
320
        geoServiceArea.add(geoServiceLayer, layerFieldName, areaValue);
321
        geoServiceArea.add(geoServiceLayer, layerFieldName, "BALI");
322

    
323
        mapping.set(areaBangka, geoServiceArea);
324
        Set<Distribution> distributions = new HashSet<>();
325
        distributions.add(Distribution.NewInstance(areaBangka, PresenceAbsenceTerm.PRESENT()));
326

    
327
        Map<PresenceAbsenceTerm, Color> presenceAbsenceColorMap = new HashMap<>();
328
        presenceAbsenceColorMap.put(PresenceAbsenceTerm.PRESENT(), Color.BLUE);
329

    
330
        presenceAbsenceColorMap = null;
331
        List<Language> languages = new ArrayList<>();
332

    
333
        String result = EditGeoServiceUtilities.getDistributionServiceRequestParameterString(distributions,
334
                mapping,
335
                null, null, languages );
336
        //TODO Set semantics is not determined
337
        //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";
338

    
339
        logger.debug(result);
340
        assertTrue(result.matches(".*ad=vmap0_as_bnd_political_boundary_a%3Anam:.*"));
341
        assertTrue(result.matches(".*(PULAU\\+BANGKA%23SUMATERA\\+SELATAN).*") );
342
        assertTrue(result.matches(".*(BALI).*") );
343

    
344
        // request map image from webservice
345
        subTestWithEditMapService(result);
346
    }
347

    
348
    @SuppressWarnings("deprecation")
349
//    @Test
350
    @DataSet( value="EditGeoServiceTest.getDistributionServiceRequestParameterString.xml")
351
//    @DataSets({
352
//        @DataSet(loadStrategy=CleanSweepInsertLoadStrategy.class, value="/eu/etaxonomy/cdm/database/ClearDB_with_Terms_DataSet.xml"),
353
//        @DataSet("/eu/etaxonomy/cdm/database/TermsDataSet-with_auditing_info.xml"),
354
//        @DataSet( value="EditGeoServiceTest.getDistributionServiceRequestParameterString.xml")
355
//    })
356
    public void getDistributionServiceRequestParameterString(){
357
        boolean subAreaPreference = false;
358
        boolean statusOrderPreference = false;
359
        Set<MarkerType> hideMarkedAreas = null;
360
        Map<PresenceAbsenceTerm, Color> presenceAbsenceTermColors = null;
361
        List<Language> langs = null;
362

    
363
        List<TaxonDescription> taxonDescriptions = new ArrayList<>();
364
        TaxonDescription description1 = TaxonDescription.NewInstance();
365
        taxonDescriptions.add(description1);
366
        Distribution distribution1 = Distribution.NewInstance(Country.GERMANY(), null);
367
        description1.addElement(distribution1);
368
        Distribution distribution2 = Distribution.NewInstance(Country.FRANCEFRENCHREPUBLIC(), null);
369
        distribution2.setFeature(Feature.COMMON_NAME());
370
        description1.addElement(distribution2);
371

    
372
        Taxon taxon = (Taxon)taxonService.find(UUID.fromString("7598f5d4-1cf2-4269-ae99-2adb79ae167c"));
373
        TaxonDescription taxDesc = taxon.getDescriptions().iterator().next();
374
        for (DescriptionElementBase deb : taxDesc.getElements()){
375
            Distribution distribution = CdmBase.deproxy(deb, Distribution.class);
376
            NamedArea area = distribution.getArea();
377
            System.out.println(area.getTitleCache());
378
        }
379
        taxonDescriptions.addAll(taxon.getDescriptions());
380

    
381
        String distributions = editGeoService.getDistributionServiceRequestParameterString(taxonDescriptions,
382
                subAreaPreference, statusOrderPreference, hideMarkedAreas, presenceAbsenceTermColors, langs);
383
        System.out.println(distributions);
384
        Assert.assertTrue("Distribution string should contain the non-persited distribution Germany", distributions.contains("DEU"));
385
        Assert.assertFalse("Distribution string should contain France as it has a non-distribution feature", distributions.contains("FRA"));
386
//        CHE,POL
387
    }
388

    
389
    @Override
390
//    @Test
391
    public void createTestDataSet() throws FileNotFoundException {
392

    
393
        List<TaxonDescription> taxonDescriptions = new ArrayList<>();
394
        TaxonDescription description1 = TaxonDescription.NewInstance();
395
        taxonDescriptions.add(description1);
396
        Distribution distribution1 = Distribution.NewInstance(Country.POLANDPOLISHPEOPLESREPUBLIC(), null);
397
        description1.addElement(distribution1);
398
        Distribution distribution2 = Distribution.NewInstance(Country.SWITZERLANDSWISSCONFEDERATION(), null);
399
//        distribution2.setFeature(Feature.COMMON_NAME());
400
        description1.addElement(distribution2);
401
        Taxon taxon = Taxon.NewInstance(null, null);
402
        taxon.setTitleCache("Dummy taxon", true);
403
        taxon.addDescription(description1);
404
        taxon.setUuid(UUID.fromString("7598f5d4-1cf2-4269-ae99-2adb79ae167c"));
405

    
406
        taxonService.save(taxon);
407

    
408
        setComplete();
409
        endTransaction();
410

    
411
        writeDbUnitDataSetFile(new String[] {
412
                "TAXONBASE",
413
                "DESCRIPTIONBASE", "DESCRIPTIONELEMENTBASE",
414
                "HIBERNATE_SEQUENCES" // IMPORTANT!!!
415
                },
416
                "getDistributionServiceRequestParameterString", true );
417
    }
418
}
(1-1/4)