Subversion Repositories XServices

Rev

Rev 192 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

/*
 *   Copyright 2017 Brian Rosenberger (Brutex Network)
 *
 *   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 net.brutex.xservices.ws;

import java.util.GregorianCalendar;
import java.util.List;

import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebService;
import javax.jws.soap.SOAPBinding;
import javax.xml.bind.annotation.XmlElement;

import org.apache.cxf.annotations.WSDLDocumentation;

import net.brutex.mgmt.api.xml.AnyEntity;
import net.brutex.mgmt.api.xml.Customer;
import net.brutex.mgmt.api.xml.Project;
import net.brutex.mgmt.api.xml.TimesheetEntry;
import net.brutex.mgmt.api.xml.TimesheetFilter;
import net.brutex.mgmt.api.xml.User;
import net.brutex.xservices.types.ant.AttachmentType;
import net.brutex.xservices.util.BrutexNamespaces;



/**
 * OpenAir proxy services
 * @author Brian Rosenberger
 * @since 20160531
 *
 */
@WebService(targetNamespace = BrutexNamespaces.WS_XSERVICES)
public interface OpenAirProxyService {
        
        public static final String SERVICE_NAME = "OpenAirProxyService";
        final String OPERATION_GETTIMEENTRIES = "getTimeentries";
        final String OPERATION_GETEXCELTIMESHEET = "getExcelTimesheet";
        final String OPERATION_GETEXCELTIMESHEET2 = "getExcelTimesheet2";
        final String OPERATION_GETPROJECTBYEXTERNALID = "getProjectsByExternalId";
        final String OPERATION_GETPROJECTBYOPPID = "getProjectsByOppId";
        final String OPERATION_GETCUSTOMERBYID = "getCustomerById";
        final String OPERATION_GETUSERBYID = "getUserById";
        final String OPERATION_GETUSERBYUSERNAME = "getUserByUsername";
        final String OPERATION_GETANYOBJECT = "getAnyObject";
        final String OPERATION_GETUPDATEDCOMPANIES = "getUpdatedCustomer";
        final String OPERATION_GETUPDATEDPROJECTS = "getUpdatedProject";

        
        final String PARAM_PROJECTID = "oa_projectid";
        final String PARAM_CUSTOMERID = "oa_customerid";
        final String PARAM_USERID = "oa_userid";
        final String PARAM_USERNAME = "oa_username";
        final String PARAM_TEMPLATE ="template";
        final String PARAM_STARTDATE = "startdate";
        final String PARAM_ENDDATE = "enddate";
        final String PARAM_ENTRYLIST = "timeentries";
        final String PARAM_EXTERNALID = "externalid";
        final String PARAM_OPPID = "oppid";
        final String PARAM_INCLUDENONBILLABLE = "includeNonBillable";
        final String PARAM_OBJECTTYPE = "objecttype";
        final String PARAM_QUERIES = "queries";
        final String PARAM_DATE = "datetime";
        final String PARAM_OFFSET = "offset_minutes";
        final String PARAM_TIMESHEETSTATUS = "timesheetstatus";
                
        /**
         * Get a list of time entries.
         * 
         * @return List of time entries
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETTIMEENTRIES)
        @WSDLDocumentation(value="Get list of time entries")
        public abstract List<TimesheetEntry> getTimeEntryList(
                        @WebParam(name=PARAM_PROJECTID) int oa_projectid,
                        @WebParam(name=PARAM_CUSTOMERID) int oa_customerid,
                        @WebParam(name=PARAM_USERID) int oa_userid,
                        @WebParam(name=PARAM_STARTDATE) GregorianCalendar startdate,
                        @WebParam(name=PARAM_ENDDATE) GregorianCalendar enddate,
                        @WebParam(name=PARAM_INCLUDENONBILLABLE) boolean includeNonBillable,
                        @WebParam(name=PARAM_TIMESHEETSTATUS) java.util.List<TimesheetFilter.TimesheetFilterType> filter) 
                                        throws XServicesFault;
        
        

        /**
         * Get an excel time sheet file.
         * 
         * @return List of time entries
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETEXCELTIMESHEET)
        @WSDLDocumentation(value="Get an excel time sheet file.")
        public abstract AttachmentType getExcelTimesheet(
                        @WebParam(name=PARAM_PROJECTID) int oa_projectid,
                        @WebParam(name=PARAM_CUSTOMERID) int oa_customerid,
                        @WebParam(name=PARAM_USERID) int oa_userid,
                        @WebParam(name=PARAM_STARTDATE) GregorianCalendar startdate,
                        @WebParam(name=PARAM_ENDDATE) GregorianCalendar enddate,
                        @WebParam(name=PARAM_INCLUDENONBILLABLE) boolean includeNonBillable,
                        @WebParam(name=PARAM_TIMESHEETSTATUS) java.util.List<TimesheetFilter.TimesheetFilterType> filter,
                        @WebParam(name=PARAM_TEMPLATE) AttachmentType templatefile) throws XServicesFault;      
        
        /**
         * Get an excel time sheet file.
         * 
         * @return List of time entries
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETEXCELTIMESHEET2)
        @WSDLDocumentation(value="Get an excel time sheet file.")
        public abstract AttachmentType getExcelTimesheet2(
                        @WebParam(name=PARAM_ENTRYLIST) List<TimesheetEntry> entries,
                        @WebParam(name=PARAM_INCLUDENONBILLABLE) boolean includeNonBillable,
                        @WebParam(name=PARAM_TEMPLATE) AttachmentType templatefile) throws XServicesFault;      
        
        
        /**
         * Get a project from External Id
         * 
         * @return List of projects with this ExternalId
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETPROJECTBYEXTERNALID)
        @WSDLDocumentation(value="Get a project from External Id")
        public abstract List<Project> getProjectsByExternalId(
                        @WebParam(name=PARAM_EXTERNALID) String externalid) throws XServicesFault;      
        
        /**
         * Get a project from Opportunity
         * 
         * @return List of projects with this Opportunity
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETPROJECTBYOPPID)
        @WSDLDocumentation(value="Get a project from Opportunity Id")
        public abstract List<Project> getProjectsByOppId(
                        @WebParam(name=PARAM_OPPID) String oppid) throws XServicesFault;
        
        /**
         * Get a customer by its ID
         * 
         * @return Customer object
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETCUSTOMERBYID)
        @WSDLDocumentation(value="Get a customer by its Id")
        public abstract Customer getCustomerById(
                        @WebParam(name=PARAM_CUSTOMERID) int customerid) throws XServicesFault;
        
        /**
         * Get a user record by its ID
         * 
         * @return user object
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETUSERBYID)
        @WSDLDocumentation(value="Get a user by its Id")
        public abstract User getUserById(
                        @WebParam(name=PARAM_USERID) int userid) throws XServicesFault;
        
        
        /**
         * Get a user record by its username
         * 
         * @return user object
         * @throws XServicesFault
         */
        @WebMethod(operationName=OPERATION_GETUSERBYUSERNAME)
        @WSDLDocumentation(value="Get a user by its username")
        public abstract User getUserByUsername(
                        @WebParam(name=PARAM_USERNAME) String username) throws XServicesFault;
        
        @WebMethod(operationName=OPERATION_GETANYOBJECT)
        @WSDLDocumentation(value="Get any Object by Query")
        public abstract List<AnyEntity> getAnyObject(
                        @WebParam(name=PARAM_OBJECTTYPE) @XmlElement(required=true) String objecttype,
                        @WebParam(name=PARAM_QUERIES) List<QueryParameter> queries) throws XServicesFault;
        
        
        @WebMethod(operationName=OPERATION_GETUPDATEDCOMPANIES)
        @WSDLDocumentation(value="Get updated customers")
        public abstract List<Customer> getUpdatedCustomer(
                        @WebParam(name=PARAM_DATE) @XmlElement(required=true) GregorianCalendar date,
                        @WebParam(name=PARAM_OFFSET) @XmlElement(required=true) int offset)
                        throws XServicesFault;
        
        @WebMethod(operationName=OPERATION_GETUPDATEDPROJECTS)
        @WSDLDocumentation(value="Get updated projects")
        
        public abstract List<Project> getUpdatedProjects(
                        @WebParam(name=PARAM_DATE) @XmlElement(required=true) GregorianCalendar date,
                        @WebParam(name=PARAM_OFFSET) @XmlElement(required=true) int offset)
                        throws XServicesFault;
        
        
        public class QueryParameter {
                @XmlElement(required=true)
                public String field;
                @XmlElement(required=true)
                public String value;
        }
}