Exemplo n.º 1
0
        public static Address FromXmlType(AdresseType oio)
        {
            if (oio != null && oio.Item != null)
            {
                var ret = new Address()
                {
                    AddressId = Guid.NewGuid(),
                    IsUnknown = oio.Item.UkendtAdresseIndikator,
                    Note      = oio.Item.NoteTekst
                };

                if (oio.Item is DanskAdresseType)
                {
                    ret.DenmarkAddress = DenmarkAddress.FromXmlType(oio.Item as DanskAdresseType);
                }
                else if (oio.Item is GroenlandAdresseType)
                {
                    ret.DenmarkAddress = DenmarkAddress.FromXmlType(oio.Item as GroenlandAdresseType);
                }
                else if (oio.Item is VerdenAdresseType)
                {
                    ret.ForeignAddress = ForeignAddress.FromXmlType(oio.Item as VerdenAdresseType);
                }
                return(ret);
            }
            return(null);
        }
Exemplo n.º 2
0
        public static AdresseType ToXmlType(Address db)
        {
            if (db != null)
            {
                var ret = new AdresseType()
                {
                    Item = null,
                };

                if (db.DenmarkAddress != null)
                {
                    ret.Item = DenmarkAddress.ToXmlType(db.DenmarkAddress);
                }
                else if (db.ForeignAddress != null)
                {
                    ret.Item = ForeignAddress.ToXmlType(db.ForeignAddress);
                }
                if (ret != null)
                {
                    ret.Item.NoteTekst = db.Note;
                    ret.Item.UkendtAdresseIndikator = db.IsUnknown;
                }
                return(ret);
            }
            return(null);
        }
Exemplo n.º 3
0
        public void Importer(AddressData address)
        {
            // create ShortKey and Uuid if not supplied
            EnsureKeys(address);

            log.Debug("Attempting Import on Address with uuid " + address.Uuid);

            // create timestamp object to be used on all registrations, properties and relations
            VirkningType virkning = helper.GetVirkning(address.Timestamp);

            // setup registration
            RegistreringType1 registration = helper.CreateRegistration(address.Timestamp, LivscyklusKodeType.Importeret);

            // add properties
            helper.AddProperties(address.AddressText, address.ShortKey, virkning, registration);

            // wire everything together
            AdresseType     addresseType = helper.GetAdresseType(address.Uuid, registration);
            ImportInputType inportInput  = new ImportInputType();

            inportInput.Adresse = addresseType;

            // construct request
            importerRequest request = new importerRequest();

            request.ImporterRequest1                  = new ImporterRequestType();
            request.ImporterRequest1.ImportInput      = inportInput;
            request.ImporterRequest1.AuthorityContext = new AuthorityContextType();
            request.ImporterRequest1.AuthorityContext.MunicipalityCVR = OrganisationRegistryProperties.GetMunicipality();

            // send request
            AdressePortType channel = StubUtil.CreateChannel <AdressePortType>(AdresseStubHelper.SERVICE, "Importer", helper.CreatePort());

            try
            {
                importerResponse response = channel.importer(request);
                int statusCode            = Int32.Parse(response.ImporterResponse1.ImportOutput.StandardRetur.StatusKode);
                if (statusCode != 20)
                {
                    if (statusCode == 49) // object already exists is the most likely scenario here
                    {
                        // TODO: a better approach would be to try the read-then-update-if-exists-else-create approach we use elsewhere
                        log.Info("Skipping import on Address " + address.Uuid + " as Organisation returned status 49. The most likely cause is that the object already exists");
                        return;
                    }

                    string message = StubUtil.ConstructSoapErrorMessage(statusCode, "Import", AdresseStubHelper.SERVICE, response.ImporterResponse1.ImportOutput.StandardRetur.FejlbeskedTekst);
                    log.Error(message);
                    throw new SoapServiceException(message);
                }

                log.Debug("Import successful on Address with uuid " + address.Uuid);
            }
            catch (Exception ex) when(ex is CommunicationException || ex is IOException || ex is TimeoutException || ex is WebException)
            {
                throw new ServiceNotFoundException("Failed to establish connection to the Importer service on Adresse", ex);
            }
        }
Exemplo n.º 4
0
        public AdresseType ToAddressType(String addressString)
        {
            try
            {
                addressString = HttpUtility.UrlEncode(addressString, Encoding.UTF8);
                String urlString     = "http://dawa.aws.dk/adresser?q=" + addressString;
                var    url           = new Uri(urlString);
                var    responseBytes = new System.Net.WebClient().DownloadData(url);
                var    charset       = Encoding.UTF8;
                String response      = charset.GetString(responseBytes);

                JArray adresses = JArray.Parse(response);

                if (adresses.Count > 0)
                {
                    String streetName = null, houseNumber = null, floor = null, door = null, districtSubdivision = null, postCode = null, postDistrict = null;

                    streetName          = GetString(adresses[0], "adgangsadresse/vejstykke/navn");
                    houseNumber         = GetString(adresses[0], "adgangsadresse/husnr");
                    floor               = GetString(adresses[0], "etage");
                    door                = GetString(adresses[0], "dør");
                    districtSubdivision = GetString(adresses[0], "adgangsadresse/supplerendebynavn");
                    postCode            = GetString(adresses[0], "adgangsadresse/postnummer/nr");
                    postDistrict        = GetString(adresses[0], "adgangsadresse/postnummer/navn");

                    AdresseType      ret          = new AdresseType();
                    DanskAdresseType danskAdresse = new DanskAdresseType();
                    danskAdresse.PostDistriktTekst = postDistrict;
                    ret.Item = danskAdresse;

                    AddressCompleteType addressComplete = new AddressCompleteType();
                    danskAdresse.AddressComplete = addressComplete;

                    AddressAccessType addressAccess = new AddressAccessType();
                    addressAccess.StreetBuildingIdentifier = houseNumber;
                    addressComplete.AddressAccess          = addressAccess;

                    AddressPostalType addressPostal = new AddressPostalType();
                    addressPostal.StreetName      = streetName;
                    addressPostal.FloorIdentifier = floor;
                    addressPostal.SuiteIdentifier = door;
                    addressPostal.DistrictSubdivisionIdentifier = districtSubdivision;
                    addressPostal.PostCodeIdentifier            = postCode;
                    addressPostal.DistrictName    = postDistrict;
                    addressComplete.AddressPostal = addressPostal;

                    return(ret);
                }
            }
            catch (Exception ex)
            {
                cpreader.Logger.error(ex);
            }
            return(null);
        }
Exemplo n.º 5
0
        internal AdresseType GetAdresseType(string uuid, RegistreringType1 registration)
        {
            AdresseType organisationType = new AdresseType();

            organisationType.UUIDIdentifikator = uuid;

            RegistreringType1[] registreringTypes = new RegistreringType1[1];
            registreringTypes[0]          = registration;
            organisationType.Registrering = registreringTypes;

            return(organisationType);
        }
Exemplo n.º 6
0
        public List <SoegObjektType> ToSoegObjektTypes(String name, String address)
        {
            List <NavnStrukturType> navnStrukturTypes = new List <NavnStrukturType>();
            List <SoegObjektType>   soegObjekts       = new List <SoegObjektType>();

            if (name != "" && name.Split(' ').Length == 1)
            {
                for (int i = 0; i < 3; i++)
                {
                    navnStrukturTypes.Add(ToNavnStrukturType(name, i));
                }
            }
            else
            {
                navnStrukturTypes.Add(ToNavnStrukturType(name));
            }

            foreach (NavnStrukturType navnStrukturType in navnStrukturTypes)
            {
                AdresseType addressObject = ToAddressType(address);
                if (navnStrukturType == null && addressObject == null)
                {
                    return(null);
                }

                SoegAttributListeType soegAttributListeType = new SoegAttributListeType();

                // Now fill Egenskab & registerOplysning
                SoegEgenskabType soegEgenskabType = new SoegEgenskabType();
                soegEgenskabType.NavnStruktur      = navnStrukturType;
                soegAttributListeType.SoegEgenskab = new SoegEgenskabType[] { soegEgenskabType };

                if (addressObject != null)
                {
                    RegisterOplysningType registerOplysningType = new RegisterOplysningType();

                    CprBorgerType cprBorgerType = new CprBorgerType();
                    cprBorgerType.FolkeregisterAdresse = addressObject;
                    registerOplysningType.Item         = cprBorgerType;

                    soegAttributListeType.SoegRegisterOplysning = new RegisterOplysningType[] { registerOplysningType };
                }

                SoegObjektType soegObjekt = new SoegObjektType();
                soegObjekt.SoegAttributListe = soegAttributListeType;

                soegObjekts.Add(soegObjekt);
            }

            return(soegObjekts);
        }
Exemplo n.º 7
0
        public AdresseType ToAddressType(String addressString)
        {
            String comma = "((\\s+)|(\\s*[,;\\.]{1,2}\\s*))";
            String pat   = "(?<streetName>[^0-9]+)" + comma
                           + "(?<houseNumber>[0-9]+[a-zA-Z]*)" + comma
                           + "(" + "(?<floor>([0-9]{1,2})|st)?(\\.)?(sal)?" + comma + ")?"
                           + "(" + "(?<door>[a-zA-Z]+)" + comma + ")?"
                           + "(?<postCode>[0-9]{4})" + comma
                           + "(?<postDistrict>\\p{L}+(\\s+\\p{L}+)*)\\Z";

            Match m = Regex.Match(addressString, pat);

            if (m.Success)
            {
                String streetName = null, houseNumber = null, floor = null, door = null, postCode = null, postDistrict = null;

                streetName   = m.Groups["streetName"].Value;
                houseNumber  = m.Groups["houseNumber"].Value;
                floor        = m.Groups["floor"].Value;
                door         = m.Groups["door"].Value;
                postCode     = m.Groups["postCode"].Value;
                postDistrict = m.Groups["postDistrict"].Value;

                AdresseType      ret          = new AdresseType();
                DanskAdresseType danskAdresse = new DanskAdresseType();
                danskAdresse.PostDistriktTekst = postDistrict;
                ret.Item = danskAdresse;

                AddressCompleteType addressComplete = new AddressCompleteType();
                danskAdresse.AddressComplete = addressComplete;

                AddressAccessType addressAccess = new AddressAccessType();
                addressAccess.StreetBuildingIdentifier = houseNumber;
                addressComplete.AddressAccess          = addressAccess;

                AddressPostalType addressPostal = new AddressPostalType();
                addressPostal.StreetName         = streetName;
                addressPostal.FloorIdentifier    = floor;
                addressPostal.SuiteIdentifier    = door;
                addressPostal.PostCodeIdentifier = postCode;
                addressPostal.DistrictName       = postDistrict;
                addressComplete.AddressPostal    = addressPostal;

                return(ret);
            }
            return(null);
        }
Exemplo n.º 8
0
        private AdresseType getAdresseType(IAddress address)
        {
            AdresseType ret = new AdresseType();

            switch (address.addressType())
            {
            case EAddressType.Danish:
                ret = getAdresseType(address as IDanishAddress);
                break;

            default:
                ret = null;
                break;
            }

            return(ret);
        }
Exemplo n.º 9
0
        private AdresseType getAdresseType(IDanishAddress address)
        {
            String streetName = null, houseNumber = null, floor = null, door = null, districtSubdivision = null, postCode = null, postDistrict = null;

            streetName          = address.streetName();
            houseNumber         = address.streetBuilding();
            floor               = address.floor();
            door                = address.suite();
            districtSubdivision = address.districtSubdivision();
            postCode            = address.postCode();
            postDistrict        = address.postDistrikt();

            AdresseType ret = new AdresseType();

            DanskAdresseType danskAdresse = new DanskAdresseType();

            danskAdresse.PostDistriktTekst = postDistrict;
            ret.Item = danskAdresse;

            AddressCompleteType addressComplete = new AddressCompleteType();

            danskAdresse.AddressComplete = addressComplete;

            AddressAccessType addressAccess = new AddressAccessType();

            addressAccess.StreetBuildingIdentifier = houseNumber;
            addressComplete.AddressAccess          = addressAccess;

            AddressPostalType addressPostal = new AddressPostalType();

            addressPostal.StreetName      = streetName;
            addressPostal.FloorIdentifier = floor;
            addressPostal.SuiteIdentifier = door;
            addressPostal.DistrictSubdivisionIdentifier = districtSubdivision;
            addressPostal.PostCodeIdentifier            = postCode;
            addressPostal.DistrictName    = postDistrict;
            addressComplete.AddressPostal = addressPostal;

            return(ret);
        }
Exemplo n.º 10
0
        public SoegObjektType AddressToSoegObjekt(IAddress address)
        {
            if (address == null)
            {
                return(null);
            }

            SoegAttributListeType soegAttributListeType = new SoegAttributListeType();

            // Now fill Egenskab & registerOplysning
            SoegEgenskabType soegEgenskabType = new SoegEgenskabType();

            soegEgenskabType.NavnStruktur      = null;
            soegAttributListeType.SoegEgenskab = new SoegEgenskabType[] { soegEgenskabType };

            if (address != null)
            {
                RegisterOplysningType registerOplysningType = new RegisterOplysningType();

                CprBorgerType cprBorgerType = new CprBorgerType();
                AdresseType   addressObject = getAdresseType(address);
                if (addressObject == null)
                {
                    return(null);
                }

                cprBorgerType.FolkeregisterAdresse = addressObject;
                registerOplysningType.Item         = cprBorgerType;

                soegAttributListeType.SoegRegisterOplysning = new RegisterOplysningType[] { registerOplysningType };
            }

            SoegObjektType soegObjekt = new SoegObjektType();

            soegObjekt.SoegAttributListe = soegAttributListeType;
            return(soegObjekt);
        }
        public AdresseType ToAddressType(String addressString)
        {
            try
            {
                // Prepare addressString
                // Since DAWA cannot understand "12 B" as a houseNumber, only "12B" we will combine addresses like this.
                addressString = Regex.Replace(addressString, @"(^[^0-9]+[0-9]+)[ ]?([a-zæøåA-ZÆØÅ])", "$1$2");


                // Lookup the address as a query to Dawa
                addressString = System.Web.HttpUtility.UrlEncode(addressString);
                String urlString = "http://dawa.aws.dk/adresser?q=" + addressString;

                var client       = new System.Net.Http.HttpClient();
                var responseTask = client.GetStringAsync(urlString);
                responseTask.Wait();

                var adresses = Newtonsoft.Json.JsonConvert.DeserializeObject <JArray>(responseTask.Result);

                // Extract address data
                if (adresses.Count > 0)
                {
                    adresses = new JArray(adresses.First);

                    String streetName = null, houseNumber = null, floor = null, door = null, districtSubdivision = null, postCode = null, postDistrict = null;

                    streetName          = GetString(adresses, "adgangsadresse/vejstykke/navn");
                    houseNumber         = GetString(adresses, "adgangsadresse/husnr");
                    floor               = GetString(adresses, "etage");
                    door                = GetString(adresses, "dør");
                    districtSubdivision = GetString(adresses, "adgangsadresse/supplerendebynavn");
                    postCode            = GetString(adresses, "adgangsadresse/postnummer/nr");
                    postDistrict        = GetString(adresses, "adgangsadresse/postnummer/navn");

                    AdresseType ret = new AdresseType()
                    {
                        Item = new DanskAdresseType()
                        {
                            PostDistriktTekst = postDistrict,
                            AddressComplete   = new AddressCompleteType()
                            {
                                AddressAccess = new AddressAccessType()
                                {
                                    StreetBuildingIdentifier = houseNumber
                                },
                                AddressPostal = new AddressPostalType()
                                {
                                    StreetName      = streetName,
                                    FloorIdentifier = floor,
                                    SuiteIdentifier = door,
                                    DistrictSubdivisionIdentifier = districtSubdivision,
                                    PostCodeIdentifier            = postCode,
                                    DistrictName = postDistrict,
                                }
                            }
                        }
                    };

                    return(ret);
                }
            }
            catch (Exception ex)
            {
                Logger.LogException(ex);
            }
            return(null);
        }