summaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/util/client/ur/URClient.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/util/client/ur/URClient.java')
-rw-r--r--src/main/java/at/gv/util/client/ur/URClient.java307
1 files changed, 0 insertions, 307 deletions
diff --git a/src/main/java/at/gv/util/client/ur/URClient.java b/src/main/java/at/gv/util/client/ur/URClient.java
deleted file mode 100644
index 4988a0f..0000000
--- a/src/main/java/at/gv/util/client/ur/URClient.java
+++ /dev/null
@@ -1,307 +0,0 @@
-package at.gv.util.client.ur;
-
-import java.math.BigInteger;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Resource;
-import javax.net.ssl.SSLContext;
-import javax.xml.bind.JAXBElement;
-import javax.xml.namespace.QName;
-import javax.xml.ws.BindingProvider;
-import javax.xml.ws.WebServiceContext;
-import javax.xml.ws.handler.Handler;
-
-import org.apache.commons.lang.RandomStringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.w3c.dom.Element;
-import org.w3c.dom.NodeList;
-
-import at.gv.util.xsd.ur.xmlsw.ResultCriteriaType;
-import at.gv.util.xsd.ur.xmlsw.ResultRecord;
-import at.gv.util.xsd.ur.xmlsw.SearchByExampleType;
-import at.gv.util.xsd.ur.xmlsw.SearchCriteriaType;
-import at.gv.util.xsd.ur.xmlsw.SearchResponseType;
-import at.gv.util.DOMUtils;
-import at.gv.util.LaxHostNameVerifier;
-import at.gv.util.LoggingHandler;
-import at.gv.util.MiscUtil;
-import at.gv.util.client.szr.SZRSOAPHandler;
-import at.gv.util.config.EgovUtilConfiguration;
-import at.gv.util.ex.EgovUtilException;
-import at.gv.util.wsdl.ur.URSuche;
-import at.gv.util.wsdl.ur.URSucheService;
-import at.gv.util.xsd.szr.pvp.PvpTokenType;
-import at.gv.util.xsd.ur.pd.IdentificationType;
-import at.gv.util.xsd.ur.pd.NichtNatuerlichePersonTyp;
-import at.gv.util.xsd.ur.pd.PersonenDatenTyp;
-import at.gv.util.xsd.ur.search.Funktion;
-import at.gv.util.xsd.ur.search.ObjectFactory;
-import at.gv.util.xsd.ur.search.SucheUnternehmenNachBpkRequest;
-import at.gv.util.xsd.ur.search.SucheUnternehmenNachIdsRequest;
-import at.gv.util.xsd.ur.search.SucheUnternehmenRequest;
-import at.gv.util.xsd.ur.search.SucheUnternehmensdaten;
-
-import com.sun.xml.ws.developer.JAXWSProperties;
-
-public class URClient {
-
- @Resource
- WebServiceContext wsContext;
-
- private EgovUtilConfiguration config = null;
- private Logger log = LoggerFactory.getLogger(URClient.class);
- private boolean logEnabled = true;
- private boolean evbCheck = true;
-
- private URSuche urSuche = null;
-
- private final static String version = "V2.0";
- private List<String> allowedKeys = null;
-
- private final static String EVB = "einzelvertretungsbefugt";
-
- public URClient(EgovUtilConfiguration config, List<String> allowedKeys, boolean evbCheck, boolean logEnabled) throws EgovUtilException {
- MiscUtil.assertNotNull(config, "config");
- this.config = config;
- this.allowedKeys = allowedKeys;
- this.logEnabled = logEnabled;
- this.evbCheck = evbCheck;
- initialize();
- }
-
- public List<NichtNatuerlichePersonTyp> searchByBpk(String vzbpk) throws URClientException {
- SucheUnternehmenNachBpkRequest request = new SucheUnternehmenNachBpkRequest();
- ObjectFactory of = new ObjectFactory();
- request.setVersion(version);
- request.setBpkWTUREncoded(vzbpk);
- List<ResultRecord> results = searchByExample(of.createSucheUnternehmenNachBpkRequest(request), -1);
- return getNichtNatuerlichePersonen(results);
- }
-
- public List<NichtNatuerlichePersonTyp> searchByRegisterNumber(String number, String type, int maxResults) throws URClientException {
- SucheUnternehmenRequest request = new SucheUnternehmenRequest();
- ObjectFactory of = new ObjectFactory();
- request.setVersion(version);
- SucheUnternehmensdaten sud = new SucheUnternehmensdaten();
- sud.setId(number);
- sud.setIdArt(type);
- request.setUnternehmensdaten(sud);
- List<ResultRecord> results = searchByExample(of.createSucheUnternehmenRequest(request), maxResults);
- return getNichtNatuerlichePersonen(results);
- }
-
- public List<NichtNatuerlichePersonTyp> searchByName(String name, String plz, int maxResults) throws URClientException {
- SucheUnternehmenRequest request = new SucheUnternehmenRequest();
- ObjectFactory of = new ObjectFactory();
- request.setVersion(version);
- SucheUnternehmensdaten sud = new SucheUnternehmensdaten();
- sud.setUntName(name);
- if (MiscUtil.isNotEmpty(plz)) {
- sud.setPlz(plz);
- }
- request.setUnternehmensdaten(sud);
- List<ResultRecord> results = searchByExample(of.createSucheUnternehmenRequest(request), maxResults);
- return getNichtNatuerlichePersonen(results);
- }
-
- @SuppressWarnings("unchecked")
- private List<NichtNatuerlichePersonTyp> getNichtNatuerlichePersonen(List<ResultRecord> records) throws URClientException {
-
- if (records == null || records.size() == 0) {
- return new ArrayList<NichtNatuerlichePersonTyp>();
- }
- List<String> kurs = new ArrayList<String>();
- for (ResultRecord rr : records) {
- PersonenDatenTyp pdt = ((JAXBElement<PersonenDatenTyp>) rr.getAny().get(0)).getValue();
- NichtNatuerlichePersonTyp nnpt = ((JAXBElement<NichtNatuerlichePersonTyp>) pdt.getPerson()).getValue();
- for (IdentificationType idt : nnpt.getIdentification()) {
- if ("KUR".equals(idt.getType())) {
-
- // check evb
- if (this.evbCheck) {
- if (isEVB(pdt)) {
- kurs.add(idt.getValue().getValue());
- log.debug("EVB found for " + nnpt.getVollerName());
- } else {
- log.debug("Not EVB for " + nnpt.getVollerName());
- }
- } else {
- kurs.add(idt.getValue().getValue());
- }
- }
- }
- }
- return getNichtNatuerlichePerson(kurs);
- }
-
- // check if person is einzelvertretungsbefugt
- public static boolean isEVB(PersonenDatenTyp pdt) {
- boolean isEVB = false;
- for (Object content : pdt.getZusatzdaten().getContent()) {
- if (content instanceof JAXBElement) {
- JAXBElement jxb = (JAXBElement) content;
- if (jxb.getDeclaredType().equals(PersonenDatenTyp.class)) {
- PersonenDatenTyp pd = (PersonenDatenTyp) jxb.getValue();
- if (pd.getZusatzdaten() != null) {
- for (Object c2 : pd.getZusatzdaten().getContent()) {
-
- if (c2 instanceof Element) {
- Element fktElement = (Element) c2;
- if ("Funktion".equals(fktElement.getLocalName())) {
- NodeList nl = fktElement.getElementsByTagNameNS("http://statistik.at/namespace/ur/stammdaten/1#", "Vertretungsbefugnis");
- if (nl.getLength() > 0) {
- String vbt = DOMUtils.getText(nl.item(0));
- if (EVB.equals(vbt)) {
- return true;
- }
- }
- }
- } else if (c2 instanceof JAXBElement) {
- JAXBElement jxb2= (JAXBElement) c2;
- if (jxb2.getDeclaredType().equals(Funktion.class)) {
- Funktion fkt = (Funktion) jxb2.getValue();
- if (EVB.equals(fkt.getVertretungsbefugnis())) {
- return true;
- }
- }
- }
- }
- }
- }
- }
- }
- return false;
- }
-
- // get list of legal persons
- @SuppressWarnings("unchecked")
- public List<NichtNatuerlichePersonTyp> getNichtNatuerlichePerson(List<String> ids) throws URClientException {
- SucheUnternehmenNachIdsRequest request = new SucheUnternehmenNachIdsRequest();
- ObjectFactory of = new ObjectFactory();
- request.getKur().addAll(ids);
- List<ResultRecord> results = searchByExample(of.createSucheUnternehmenNachIdsRequest(request), -1);
- if (results.size() == 0) {
- return new ArrayList<NichtNatuerlichePersonTyp>();
- }
- List<NichtNatuerlichePersonTyp> result = new ArrayList<NichtNatuerlichePersonTyp>();
- for (ResultRecord rr : results) {
- PersonenDatenTyp pdt = ((JAXBElement<PersonenDatenTyp>)rr.getAny().get(0)).getValue();
-
- NichtNatuerlichePersonTyp nnpt = ((JAXBElement<NichtNatuerlichePersonTyp>) pdt.getPerson()).getValue();
-
- // check if we have to filter out
- if (this.allowedKeys == null || this.allowedKeys.size() == 0) {
- result.add(nnpt);
- } else {
- boolean hasKey = false;
- for (IdentificationType idt : nnpt.getIdentification()) {
- if (this.allowedKeys.contains(idt.getType())) {
- hasKey = true;
- }
- }
- if (hasKey) {
- result.add(nnpt);
- }
- }
-
- }
- return result;
- }
-
- // search by example
- public List<ResultRecord> searchByExample(Object request, int maxResults) throws URClientException {
- SearchByExampleType body = new SearchByExampleType();
- body.setSearchRequestId(createURSearchId());
- ResultCriteriaType rc = new ResultCriteriaType();
- // set only value of max results if > 0
- if (maxResults > 0) {
- rc.setMaxRecords(BigInteger.valueOf(maxResults));
- }
- body.setResultCriteria(rc);
- SearchCriteriaType sct = new SearchCriteriaType();
- sct.getAny().add(request);
- body.setSearchCriteria(sct);
- SearchResponseType srt = this.urSuche.searchByExample(body);
-
- // check number of records found
-// int numFound = 0;
-// if (srt.getResultInfo() != null) {
-// numFound = srt.getResultInfo().getReturnedRecords().intValue();
-// }
- // check whether we have an error message
- if (srt.getMessage() != null) {
- if (srt.getMessage().getCode().intValue() != 2040) { // 2040 = no records found
- throw new URClientException(srt.getMessage().getReason().get(0), srt.getMessage().getCode().intValue());
- }
- }
- if (srt.getResultRecords() == null || srt.getResultRecords().getResultRecord() == null) {
- return new ArrayList<ResultRecord>();
- }
- return srt.getResultRecords().getResultRecord();
- }
-
- @SuppressWarnings({ "rawtypes", "unchecked" })
- private void initialize() throws EgovUtilException {
- URL url = URClient.class.getResource("/wsdl/ur/URSucheService.wsdl");
- URSucheService urService = null;
- String urURL = null;
- urService = new URSucheService(url, new QName("urn:at:statistik:udb:ws", "URSucheService"));
- urSuche = urService.getURSucheService();
- if (config.isURTestEnvironment()) {
- log.trace("Initializing UR test configuration.");
- urURL = config.getURTestEnvironmentURL();
- } else {
- log.trace("Initializing UR productive configuration.");
- urURL = config.getURProductionEnvironmentURL();
- }
-
- log.trace("UR connection URL: " + urURL);
- BindingProvider bindingProvider = (BindingProvider) urSuche;
- Map<String, Object> requestContext = bindingProvider.getRequestContext();
- requestContext.put(
- BindingProvider.ENDPOINT_ADDRESS_PROPERTY, urURL);
-
- log.trace("Adding JAX-WS request/response trace handler.");
- List<Handler> handlerList = bindingProvider.getBinding().getHandlerChain();
- if (handlerList == null) {
- handlerList = new ArrayList();
- }
- LoggingHandler loggingHandler = new LoggingHandler();
- if (this.logEnabled) {
- handlerList.add(loggingHandler);
- }
- log.trace("Adding WS-Security Header handler.");
- PvpTokenType pvpToken = config.getURPVPToken();
- SZRSOAPHandler szrSOAPHandler = new SZRSOAPHandler();
- szrSOAPHandler.configure(pvpToken);
- handlerList.add(szrSOAPHandler);
- bindingProvider.getBinding().setHandlerChain(handlerList);
-
- // check for ssl
- if (urURL.toLowerCase().startsWith("https")) {
- log.trace("Using ssl for SZR client request.");
- SSLContext sslContext = this.config.getURsslConfiguration().getSSLContext(false);
- if (sslContext == null) {
- throw new EgovUtilException("SSL context from configuration is empty. Please configure an SSL context in the configuration first.");
- }
- requestContext.put(JAXWSProperties.SSL_SOCKET_FACTORY, sslContext.getSocketFactory());
-
- // check for lax hostname
- if (this.config.getURsslConfiguration().useLaxHostNameVerifier()) {
- log.trace("LaxHostnameVerifier enabled. This setting is not recommended to use.");
- requestContext.put(JAXWSProperties.HOSTNAME_VERIFIER, new LaxHostNameVerifier());
- }
- }
- }
-
- private String createURSearchId() {
- return RandomStringUtils.randomAlphanumeric(8) + "-" +
- RandomStringUtils.randomAlphanumeric(4) + "-" + RandomStringUtils.randomAlphanumeric(4) + "-" +
- RandomStringUtils.randomAlphanumeric(12);
- }
-
-}