/*
* Constellation - An open source and standard compliant SDI
* http://www.constellation-sdi.org
*
* Copyright 2014 Geomatys.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.constellation.util;
import org.geotoolkit.util.NamesExt;
import org.junit.Test;
import java.util.Date;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.fail;
/**
*
* @author Quentin Boileau (Geomatys).
*/
public class DataReferenceTest {
@Test
public void testDataReference () {
Date currentDate = new Date();
long time = currentDate.getTime();
DataReference dataRef = new DataReference("${providerLayerType|myProvider|myLayer}");
assertEquals("providerLayerType", dataRef.getDataType());
assertEquals("myProvider", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myLayer"), dataRef.getLayerId());
assertNull(dataRef.getDataVersion());
assertNull(dataRef.getServiceSpec());
//with date
dataRef = new DataReference("${providerLayerType|myProvider|myLayer|"+time+"}");
assertEquals("providerLayerType", dataRef.getDataType());
assertEquals("myProvider", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myLayer"), dataRef.getLayerId());
assertEquals(currentDate, dataRef.getDataVersion());
assertNull(dataRef.getServiceSpec());
dataRef = new DataReference("${serviceType|http://serviceURL/|WMS|defaultInstance|myLayer}");
assertEquals("serviceType", dataRef.getDataType());
assertEquals("http://serviceURL/", dataRef.getServiceURL());
assertEquals("WMS", dataRef.getServiceSpec());
assertEquals("defaultInstance", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myLayer"), dataRef.getLayerId());
assertNull(dataRef.getDataVersion());
//with date
dataRef = new DataReference("${serviceType|http://serviceURL/|WMS|defaultInstance|myLayer|"+time+"}");
assertEquals("serviceType", dataRef.getDataType());
assertEquals("http://serviceURL/", dataRef.getServiceURL());
assertEquals("WMS", dataRef.getServiceSpec());
assertEquals("defaultInstance", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myLayer"), dataRef.getLayerId());
assertEquals(currentDate, dataRef.getDataVersion());
dataRef = DataReference.createProviderDataReference(DataReference.PROVIDER_STYLE_TYPE, "myStyleProvider", "myStyle");
assertEquals("providerStyleType", dataRef.getDataType());
assertEquals("myStyleProvider", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myStyle"), dataRef.getLayerId());
assertNull(dataRef.getDataVersion());
assertNull(dataRef.getServiceSpec());
assertEquals("${providerStyleType|myStyleProvider|myStyle}", dataRef.getReference());
dataRef = DataReference.createProviderDataReference(DataReference.PROVIDER_LAYER_TYPE, "myProvider", "myLayer", currentDate);
assertEquals("providerLayerType", dataRef.getDataType());
assertEquals("myProvider", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myLayer"), dataRef.getLayerId());
assertEquals(currentDate, dataRef.getDataVersion());
assertNull(dataRef.getServiceSpec());
assertEquals("${providerLayerType|myProvider|myLayer|"+time+"}", dataRef.getReference());
dataRef = DataReference.createServiceDataReference("http://localhost:8080/cstl/WS/WMS/defaultInstance2","WMS", "defaultInstance2", "myLayer10");
assertEquals("serviceType", dataRef.getDataType());
assertEquals("http://localhost:8080/cstl/WS/WMS/defaultInstance2", dataRef.getServiceURL());
assertEquals("WMS", dataRef.getServiceSpec());
assertEquals("defaultInstance2", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("myLayer10"), dataRef.getLayerId());
assertEquals("${serviceType|http://localhost:8080/cstl/WS/WMS/defaultInstance2|WMS|defaultInstance2|myLayer10}", dataRef.getReference());
//with namespace
dataRef = new DataReference("${providerLayerType|dcns-coastline|{http://geotoolkit.org}isoline}");
assertEquals("providerLayerType", dataRef.getDataType());
assertEquals("dcns-coastline", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("{http://geotoolkit.org}isoline"), dataRef.getLayerId());
assertNull(dataRef.getServiceSpec());
dataRef = new DataReference("${serviceType|http://localhost:8080/cstl/WS/wfs/default3|WFS|default3|{shp}Countries}");
assertEquals("serviceType", dataRef.getDataType());
assertEquals("http://localhost:8080/cstl/WS/wfs/default3", dataRef.getServiceURL());
assertEquals("WFS", dataRef.getServiceSpec());
assertEquals("default3", dataRef.getProviderOrServiceId());
assertEquals(NamesExt.valueOf("{shp}Countries"), dataRef.getLayerId());
}
@Test
public void testDataReferencePatternFail () {
DataReference dataRef = null;
try {
dataRef = new DataReference("providerLayerType|myProvider|myLayer");
fail();
dataRef = new DataReference("${providerLayerType|myProvider|myLayer");
fail();
dataRef = new DataReference("$providerLayerType|myProvider|myLayer}");
fail();
dataRef = new DataReference("${unknowType|myProvider|myLayer}");
fail();
dataRef = new DataReference("${providerLayerType|otherParam|myProvider|myLayer}");
fail();
dataRef = new DataReference("${providerLayerType|otherParam|myProvider|myLayer}");
fail();
} catch (IllegalArgumentException ex) {
}
}
}