예제 #1
0
        public REP_CapabilitiesType GetCapabilities()
        {
            //Build Cababilities.XML
            //ServiceIndentification
            REP_CapabilitiesType rootCapabilities = new REP_CapabilitiesType();

            rootCapabilities.version = "2.0.0";

            rootCapabilities.ServiceIdentification = new ServiceIdentification();
            //Title
            IList <string> values = new List <string>();

            values.Add(ServiceData.Title());
            rootCapabilities.ServiceIdentification.Title = CreateNode(values);

            values = new List <string>();
            values.Add(ServiceData.Abstract());
            //Abstract
            rootCapabilities.ServiceIdentification.Abstract = CreateNode(values);

            //Keywords
            KeywordsType keyWords = new KeywordsType();

            //TODO: Sjekk om dette fungerer!!!
            values              = ServiceData.Keywords();
            keyWords.Keyword    = CreateNode(values);
            keyWords.Type       = new CodeType();
            keyWords.Type.Value = "String";
            List <KeywordsType> lstDesc = new List <KeywordsType>();

            lstDesc.Add(keyWords);
            rootCapabilities.ServiceIdentification.Keywords = lstDesc.ToArray();



            //<ows:ServiceType>WFS</ows:ServiceType>

            //TODO: Legg til felt i databasen
            rootCapabilities.ServiceIdentification.ServiceType       = new CodeType();
            rootCapabilities.ServiceIdentification.ServiceType.Value = "WFS";

            //<ows:ServiceTypeVersion>2.0.0</ows:ServiceTypeVersion><ows:ServiceTypeVersion>1.1.0</ows:ServiceTypeVersion><ows:ServiceTypeVersion>1.0.0</ows:ServiceTypeVersion>
            //TODO Legg til felt i basen.
            rootCapabilities.ServiceIdentification.ServiceTypeVersion    = new string[3];
            rootCapabilities.ServiceIdentification.ServiceTypeVersion[0] = "2.0.0";
            rootCapabilities.ServiceIdentification.ServiceTypeVersion[1] = "1.1.0";
            rootCapabilities.ServiceIdentification.ServiceTypeVersion[2] = "1.0.0";


            rootCapabilities.ServiceIdentification.Fees = ServiceData.Fees();
            rootCapabilities.ServiceIdentification.AccessConstraints = CreateNode(ServiceData.AccessConstraints());

            ////ServiceProvider
            rootCapabilities.ServiceProvider = new ServiceProvider();
            rootCapabilities.ServiceProvider.ProviderName = ServiceData.ProviderName();

            rootCapabilities.ServiceProvider.ProviderSite      = new OnlineResourceType();
            rootCapabilities.ServiceProvider.ProviderSite.href = ServiceData.ProviderSite();

            rootCapabilities.ServiceProvider.ServiceContact = new ResponsiblePartySubsetType();
            rootCapabilities.ServiceProvider.ServiceContact.IndividualName = ServiceData.IndividualName();
            rootCapabilities.ServiceProvider.ServiceContact.PositionName   = ""; //TODO: Lgg i basen. Innstilling for dette

            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo       = new ContactType();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Phone = new TelephoneType();

            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Phone.Voice                   = CreateNode(ServiceData.Phone());
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Phone.Facsimile               = CreateNode(ServiceData.Fax());
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Address                       = new AddressType();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Address.DeliveryPoint         = CreateNode(ServiceData.Adresse());
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Address.City                  = ServiceData.City();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Address.AdministrativeArea    = ServiceData.City();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Address.Country               = ServiceData.Country();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.Address.ElectronicMailAddress = CreateNode(ServiceData.EMail());
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.OnlineResource                = new OnlineResourceType();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.OnlineResource.href           = ServiceData.OnlineResourcesUrl();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.HoursOfService                = ServiceData.HoursOfService();
            rootCapabilities.ServiceProvider.ServiceContact.ContactInfo.ContactInstructions           = ServiceData.ContactInstructions();
            rootCapabilities.ServiceProvider.ServiceContact.Role       = new CodeType();
            rootCapabilities.ServiceProvider.ServiceContact.Role.Value = ServiceData.Role();

            rootCapabilities.OperationsMetadata = new OperationsMetadata();
            List <Operation> listLst       = new List <Operation>();
            Operation        operationNode = CreateOperation("GetCapabilities", "Acceptversions", "2.0.0"); //TODO, må inn i databasen

            listLst.Add(operationNode);
            operationNode = CreateOperation("DescribeFeatureType", "", "");
            listLst.Add(operationNode);
            operationNode = CreateOperation("ListStoredChangelog", "", "");
            listLst.Add(operationNode);
            operationNode = CreateOperation("OrderChangelog", "", "");
            listLst.Add(operationNode);
            operationNode = CreateOperation("GetChangelogStatus", "", "");
            listLst.Add(operationNode);
            rootCapabilities.OperationsMetadata.Operation = listLst.ToArray();
            List <DomainType> lstDomain = new List <DomainType>();

            lstDomain.Add(CreateParameter("version", "2.0.0"));
            rootCapabilities.OperationsMetadata.Parameter = lstDomain.ToArray();
            List <DomainType> lstConstraints = new List <DomainType>();

            lstConstraints.Add(CreateConstraints("ImplementsReplicationWFS", "TRUE"));
            lstConstraints.Add(CreateConstraints("ImplementsTransactionalWFS", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsLockingWFS", "FALSE"));
            lstConstraints.Add(CreateConstraints("KVPEncoding", "TRUE"));
            lstConstraints.Add(CreateConstraints("XMLEncoding", "FALSE"));
            lstConstraints.Add(CreateConstraints("SOAPEncoding", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsInheritance", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsRemoteResolve", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsResultPaging", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsStandardJoins", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsSpatialJoins", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsTemporalJoins", "FALSE"));
            lstConstraints.Add(CreateConstraints("ImplementsFeatureVersioning", "FALSE"));
            lstConstraints.Add(CreateConstraints("ManageStoredQueries", "FALSE"));
            lstConstraints.Add(CreateConstraints("CountDefault", "1000")); //TODO: Legge denne verdie for servicen.
            lstConstraints.Add(CreateParameter("QueryExpressions", "wfs:StoredQuery"));
            rootCapabilities.OperationsMetadata.Constraint = lstConstraints.ToArray();


            rootCapabilities.datasets = CreateDatasets();

            return(rootCapabilities);
        }