package org.geoserver.inspire.web;
import static org.geoserver.inspire.wms.InspireMetadata.LANGUAGE;
import static org.geoserver.inspire.wms.InspireMetadata.SERVICE_METADATA_TYPE;
import static org.geoserver.inspire.wms.InspireMetadata.SERVICE_METADATA_URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.markup.html.form.DropDownChoice;
import org.apache.wicket.markup.html.form.IChoiceRenderer;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.PropertyModel;
import org.apache.wicket.model.ResourceModel;
import org.geoserver.catalog.MetadataMap;
import org.geoserver.web.services.AdminPagePanel;
import org.geoserver.web.util.MapModel;
import org.geoserver.wms.WMSInfo;
/**
* Panel for the WMS admin page to set the WMS INSPIRE extension preferences.
*/
public class InspireAdminPanel extends AdminPagePanel {
private static final long serialVersionUID = -7670555379263411393L;
@SuppressWarnings({ "unchecked", "rawtypes" })
public InspireAdminPanel(final String id, final IModel<WMSInfo> model) {
super(id, model);
PropertyModel<MetadataMap> metadata = new PropertyModel<MetadataMap>(model, "metadata");
add(new LanguageDropDownChoice("language", new MapModel(metadata, LANGUAGE.key)));
TextField textField = new TextField("metadataURL", new MapModel(metadata,
SERVICE_METADATA_URL.key));
add(textField);
textField.add(new AttributeModifier("title", true, new ResourceModel(
"InspireAdminPanel.metadataURL.title")));
final Map<String, String> mdUrlTypes = new HashMap<String, String>();
mdUrlTypes.put("application/vnd.ogc.csw.GetRecordByIdResponse_xml",
"CSW GetRecordById Response");
mdUrlTypes.put("application/vnd.iso.19139+xml", "ISO 19139 ServiceMetadata record");
IModel<String> urlTypeModel = new MapModel(metadata, SERVICE_METADATA_TYPE.key);
IChoiceRenderer<String> urlTypeChoiceRenderer = new IChoiceRenderer<String>() {
private static final long serialVersionUID = 1L;
public Object getDisplayValue(final String key) {
final String resourceKey = "InspireAdminPanel.metadataURLType." + key;// as found in
// GeoServerApplication.properties
final String defaultValue = key;
final String displayValue = new ResourceModel(resourceKey, defaultValue)
.getObject();
return displayValue;
}
public String getIdValue(final String key, int index) {
return key;
}
};
List<String> urlTypeChoices = new ArrayList<String>(mdUrlTypes.keySet());
DropDownChoice<String> serviceMetadataRecordType = new DropDownChoice<String>(
"metadataURLType", urlTypeModel, urlTypeChoices, urlTypeChoiceRenderer);
add(serviceMetadataRecordType);
}
}