// Path: 52n-sps-api/src/main/java/org/n52/sps/service/CapabilitiesInterceptor.java
// public interface CapabilitiesInterceptor {
// 
//     /**
//      * Enriches passed capabilities with appropriate information. This includes for example <b>Profile</b>
//      * description(s) of the intercepting SPS component. Another example is adding an <b>OperationMetadata</b>
//      * section describing operation information.
//      * 
//      * @param capabilities
//      *        the capabilities to intercept.
//      * @param httpBindings
//      *        the supported operation bindings
//      */
//     public void interceptCapabilities(CapabilitiesType capabilities, List<HttpBinding> httpBindings);
// }
// 
// Path: 52n-sps-api/src/main/java/org/n52/sps/service/InternalServiceException.java
// public abstract class InternalServiceException extends Exception {
//     
//     private static final long serialVersionUID = -1598594769157092219L;
//     
//     public static final int BAD_REQUEST = 400;
//     
//     private List<String> detailedMessages = new ArrayList<String>();
//     private String exceptionCode;
//     private String locator;
// 
//     public InternalServiceException(String exceptionCode, String locator) {
//         this.exceptionCode = exceptionCode;
//         this.locator = locator;
//     }
// 
//     public String getExceptionCode() {
//         return exceptionCode;
//     }
// 
//     public void setExceptionCode(String exceptionCode) {
//         this.exceptionCode = exceptionCode;
//     }
// 
//     public String getLocator() {
//         return locator;
//     }
// 
//     public void setLocator(String locator) {
//         this.locator = locator;
//     }
// 
//     public void addDetailedMessage(String detailedMessage) {
//         detailedMessages.add(detailedMessage);
//     }
//     
//     public Iterable<String> getDetailedMessages() {
//         return detailedMessages;
//     }
// 
//     public abstract int getHttpStatusCode();
// 
//     
// }
// 
// Path: 52n-sps-api/src/main/java/org/n52/sps/service/SpsOperationExtension.java
// public interface SpsOperationExtension {
//     
//     public boolean isInterceptCapabilities();
//     
//     public void setExtensionBinding(HttpBinding httpBinding);
// }


import org.n52.ows.exception.OwsException;
import org.n52.ows.exception.OwsExceptionReport;
import org.n52.sps.service.CapabilitiesInterceptor;
import org.n52.sps.service.InternalServiceException;
import org.n52.sps.service.SpsOperationExtension;
import org.x52North.schemas.sps.v2.InsertSensorOfferingDocument;
import java.util.List;
import org.apache.xmlbeans.XmlObject;

/**
 * ﻿Copyright (C) 2012-${latestYearOfContribution} 52°North Initiative for Geospatial Open Source
 * Software GmbH
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License version 2 as publishedby the Free
 * Software Foundation.
 *
 * If the program is linked with libraries which are licensed under one of the
 * following licenses, the combination of the program with the linked library is
 * not considered a "derivative work" of the program:
 *
 *     - Apache License, version 2.0
 *     - Apache Software License, version 1.0
 *     - GNU Lesser General Public License, version 3
 *     - Mozilla Public License, versions 1.0, 1.1 and 2.0
 *     - Common Development and Distribution License (CDDL), version 1.0
 *
 * Therefore the distribution of the program linked with libraries licensed under
 * the aforementioned licenses, is permitted by the copyright holders if the
 * distribution is compliant with both the GNU General Public License version 2
 * and the aforementioned licenses.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
 */
package org.n52.sps.service.admin;



public interface SpsAdmin extends CapabilitiesInterceptor, SpsOperationExtension {
    
    final static String INSERT_SENSOR_OFFERING = "InsertSensorOffering";
    
    final static String INSERT_RESOURCE = "insert";
    
    final static String DELETE_SENSOR_OFFERING = "DeleteSensorOffering";
    
    final static String DELETE_RESOURCE = "delete";
    
    public void setInsertSensorOfferingListeners(List<InsertSensorOfferingListener> insertSensorOfferingListeners);
    
    public void setDeleteSensorOfferingListeners(List<DeleteSensorOfferingListener> deleteSensorOfferingListeners);
    

// Path: 52n-sps-api/src/main/java/org/n52/sps/service/CapabilitiesInterceptor.java
// public interface CapabilitiesInterceptor {
// 
//     /**
//      * Enriches passed capabilities with appropriate information. This includes for example <b>Profile</b>
//      * description(s) of the intercepting SPS component. Another example is adding an <b>OperationMetadata</b>
//      * section describing operation information.
//      * 
//      * @param capabilities
//      *        the capabilities to intercept.
//      * @param httpBindings
//      *        the supported operation bindings
//      */
//     public void interceptCapabilities(CapabilitiesType capabilities, List<HttpBinding> httpBindings);
// }
// 
// Path: 52n-sps-api/src/main/java/org/n52/sps/service/InternalServiceException.java
// public abstract class InternalServiceException extends Exception {
//     
//     private static final long serialVersionUID = -1598594769157092219L;
//     
//     public static final int BAD_REQUEST = 400;
//     
//     private List<String> detailedMessages = new ArrayList<String>();
//     private String exceptionCode;
//     private String locator;
// 
//     public InternalServiceException(String exceptionCode, String locator) {
//         this.exceptionCode = exceptionCode;
//         this.locator = locator;
//     }
// 
//     public String getExceptionCode() {
//         return exceptionCode;
//     }
// 
//     public void setExceptionCode(String exceptionCode) {
//         this.exceptionCode = exceptionCode;
//     }
// 
//     public String getLocator() {
//         return locator;
//     }
// 
//     public void setLocator(String locator) {
//         this.locator = locator;
//     }
// 
//     public void addDetailedMessage(String detailedMessage) {
//         detailedMessages.add(detailedMessage);
//     }
//     
//     public Iterable<String> getDetailedMessages() {
//         return detailedMessages;
//     }
// 
//     public abstract int getHttpStatusCode();
// 
//     
// }
// 
// Path: 52n-sps-api/src/main/java/org/n52/sps/service/SpsOperationExtension.java
// public interface SpsOperationExtension {
//     
//     public boolean isInterceptCapabilities();
//     
//     public void setExtensionBinding(HttpBinding httpBinding);
// }


// Path: 52n-sps-api/src/main/java/org/n52/sps/service/admin/SpsAdmin.java
import org.n52.ows.exception.OwsException;
import org.n52.ows.exception.OwsExceptionReport;
import org.n52.sps.service.CapabilitiesInterceptor;
import org.n52.sps.service.InternalServiceException;
import org.n52.sps.service.SpsOperationExtension;
import org.x52North.schemas.sps.v2.InsertSensorOfferingDocument;
import java.util.List;
import org.apache.xmlbeans.XmlObject;

/**
 * ﻿Copyright (C) 2012-${latestYearOfContribution} 52°North Initiative for Geospatial Open Source
 * Software GmbH
 *
 * This program is free software; you can redistribute it and/or modify it under
 * the terms of the GNU General Public License version 2 as publishedby the Free
 * Software Foundation.
 *
 * If the program is linked with libraries which are licensed under one of the
 * following licenses, the combination of the program with the linked library is
 * not considered a "derivative work" of the program:
 *
 *     - Apache License, version 2.0
 *     - Apache Software License, version 1.0
 *     - GNU Lesser General Public License, version 3
 *     - Mozilla Public License, versions 1.0, 1.1 and 2.0
 *     - Common Development and Distribution License (CDDL), version 1.0
 *
 * Therefore the distribution of the program linked with libraries licensed under
 * the aforementioned licenses, is permitted by the copyright holders if the
 * distribution is compliant with both the GNU General Public License version 2
 * and the aforementioned licenses.
 *
 * This program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 * PARTICULAR PURPOSE. See the GNU General Public License for more details.
 */
package org.n52.sps.service.admin;



public interface SpsAdmin extends CapabilitiesInterceptor, SpsOperationExtension {
    
    final static String INSERT_SENSOR_OFFERING = "InsertSensorOffering";
    
    final static String INSERT_RESOURCE = "insert";
    
    final static String DELETE_SENSOR_OFFERING = "DeleteSensorOffering";
    
    final static String DELETE_RESOURCE = "delete";
    
    public void setInsertSensorOfferingListeners(List<InsertSensorOfferingListener> insertSensorOfferingListeners);
    
    public void setDeleteSensorOfferingListeners(List<DeleteSensorOfferingListener> deleteSensorOfferingListeners);
    

    public void insertSensorOffering(InsertSensorOfferingDocument offering, OwsExceptionReport exceptionReport) throws OwsException, InternalServiceException;
