private Set<OrganizacionEvento> buscarEventos(Element eventsEl, Organizacion organizacion) { if (eventsEl == null) return null; Set<OrganizacionEvento> ret = new HashSet<OrganizacionEvento>(); NodeList nodeLst = eventsEl.getElementsByTagName("event"); for (int s = 0; s < nodeLst.getLength(); s++) { Node fstNode = nodeLst.item(s); if (fstNode.getNodeType() == Node.ELEMENT_NODE) { Element elEvento = (Element) fstNode; String localization = XmlParserUtil.getStringNodeValue(elEvento, "localization"); String title = XmlParserUtil.getStringNodeValue(elEvento, "title"); String description = XmlParserUtil.getStringNodeValue(elEvento, "description"); String date = XmlParserUtil.getStringNodeValue(elEvento, "date"); Date fecha = null; try { fecha = formatter.parse(date); } catch (ParseException e) { } Evento evento = null; if (organizacion.getEventos() != null) { for (OrganizacionEvento oe : organizacion.getEventos()) { Evento e = oe.getEvento(); if (e.getTitulo().equals(title)) { evento = e; break; } } } if (evento == null) { evento = new Evento(); evento.setLocalizacion(localization); evento.setTitulo(title); evento.setDescripcion(description); evento.setFecha(fecha); try { organizacionService.saveEvento(evento); OrganizacionEvento eventoOrg = new OrganizacionEvento(); eventoOrg.setEvento(evento); eventoOrg.setOrganizacion(organizacion); ret.add(eventoOrg); } catch (ServiceException e) { logger.error(e.getMessage()); } } } } return ret; }
private Organizacion parseOrganizacion(String xmlString) throws ParserConfigurationException, SAXException, IOException, ServiceException { Document doc = XmlParserUtil.createDocumentFromString(xmlString); Organizacion ret = null; NodeList nodeLst = doc.getElementsByTagName(ORGANIZATION_TAG); for (int s = 0; s < nodeLst.getLength(); s++) { Node fstNode = nodeLst.item(s); if (fstNode.getNodeType() == Node.ELEMENT_NODE) { Element elOrg = (Element) fstNode; String legalId = XmlParserUtil.getStringNodeValue(elOrg, "legalID"); if (!legalId.isEmpty()) { ret = organizacionService.findByCIF(legalId); if (ret == null) { if (logger.isTraceEnabled()) ; logger.trace("Organizacion con CIF: " + legalId + " no encontrada, AGREGANDO"); ret = new Organizacion(); } else { if (logger.isTraceEnabled()) ; logger.trace("Organizacion con CIF: " + legalId + " encontrada, ACTUALIZANDO"); } String name = XmlParserUtil.getStringNodeValue(elOrg, "name"); String description = XmlParserUtil.getStringNodeValue(elOrg, "description"); String web = XmlParserUtil.getStringNodeValue(elOrg, "web"); String logoUrl = XmlParserUtil.getStringNodeValue(elOrg, "logo_url"); String direccion = XmlParserUtil.getStringNodeValue(elOrg, "HQstreet"); String localidad = XmlParserUtil.getStringNodeValue(elOrg, "HQlocality"); String newsTitle = XmlParserUtil.getStringNodeValue(elOrg, "newsTitle"); String newsBody = XmlParserUtil.getStringNodeValue(elOrg, "newsBody"); Element provEl = XmlParserUtil.getChildren(elOrg, "HQprovince"); String provId = XmlParserUtil.getAttribute(provEl, "code"); String provincia = XmlParserUtil.getStringNodeValue(elOrg, "HQprovince"); String codPostal = XmlParserUtil.getStringNodeValue(elOrg, "HQpostalCode"); String year = XmlParserUtil.getStringNodeValue(elOrg, "year"); String partners = XmlParserUtil.getStringNodeValue(elOrg, "partners"); String corpGroup = XmlParserUtil.getStringNodeValue(elOrg, "enpresarialGroup"); String phoneNumber = XmlParserUtil.getStringNodeValue(elOrg, "telephone"); String email = XmlParserUtil.getStringNodeValue(elOrg, "email"); String research = XmlParserUtil.getStringNodeValue(elOrg, "researchAndDevelopmentProgrammes"); String relacionesComunidad = XmlParserUtil.getStringNodeValue(elOrg, "communityRelationships"); String qualityCertifications = XmlParserUtil.getStringNodeValue(elOrg, "qualityCertifications"); Element orgClassEl = XmlParserUtil.getChildren(elOrg, "organizationClasification"); String orgClassCode = XmlParserUtil.getAttribute(orgClassEl, "code"); String organizationClasification = XmlParserUtil.getStringNodeValue(elOrg, "organizationClasification"); Element orgTypeEl = XmlParserUtil.getChildren(elOrg, "organizationType"); String orgTypeCode = XmlParserUtil.getAttribute(orgTypeEl, "code"); String organizationType = XmlParserUtil.getStringNodeValue(elOrg, "organizationType"); Element degationsEl = XmlParserUtil.getChildren(elOrg, "delegations"); Element capacitiesEl = XmlParserUtil.getChildren(elOrg, "capacities"); Element demandsEl = XmlParserUtil.getChildren(elOrg, "demands"); Element eventsEl = XmlParserUtil.getChildren(elOrg, "events"); // Association Memberships Element associationsEl = XmlParserUtil.getChildren(elOrg, "associationMemberships"); // username String username = XmlParserUtil.getStringNodeValue(elOrg, "username"); // password String password = XmlParserUtil.getStringNodeValue(elOrg, "password"); ret.setCif(legalId); ret.setName(name); ret.setDescripcion(description); ret.setNewsTitle(newsTitle); ret.setNewsBody(newsBody); ret.setWeb(web); ret.setLogoUrl(logoUrl); ret.setDireccion(direccion); ret.setLocalidad(localidad); ret.setProvincia(findProvincia(provId, provincia)); ret.setCodigoPostal(Integer.parseInt(codPostal)); try { if (year != null && !year.isEmpty()) ret.setAnoConstitucion(Integer.parseInt(year)); } catch (NumberFormatException e) { } ret.setPartners(partners); ret.setGrupoEmpresarial(corpGroup); ret.setTelefono(phoneNumber); ret.setEmail(email); ret.setActividadesImasD(!research.isEmpty()); ret.setParticipacionImasD(research); ret.setRelacionesComunidad(relacionesComunidad); ret.setCertificacionesCalidad(Organizacion.decoded(qualityCertifications)); if (orgClassEl != null && StringUtils.hasLength(orgClassCode)) { ret.setClasificacionOrganizacion( findClasificacionOrganizacion(orgClassCode, organizationClasification)); } if (orgTypeEl != null && StringUtils.hasLength(orgTypeCode)) { ret.setFormaJuridica(findFormaJuridica(orgTypeCode, organizationType)); } if (degationsEl != null) { Set<OrganizacionSede> sedes = buscarSedes(degationsEl, ret); if (ret.getSedes() == null) { ret.setSedes(sedes); } else { ret.getSedes().addAll(sedes); } } if (capacitiesEl != null) { Set<OrganizacionCapacidadOferta> ofertas = buscarOfertas(capacitiesEl, ret); if (ret.getOfertas() == null) { ret.setOfertas(ofertas); } else { ret.getOfertas().addAll(ofertas); } } if (demandsEl != null) { Set<OrganizacionCapacidadDemanda> demandas = buscarDemandas(demandsEl, ret); if (ret.getDemandas() == null) { ret.setDemandas(demandas); } else { ret.getDemandas().addAll(demandas); } } if (associationsEl != null) { Set<OrganizacionAsociacion> organizacionAsociacions = buscarAsociaciones(associationsEl, ret); if (ret.getOrganizacionAsociacions() == null) { ret.setOrganizacionAsociacions(organizacionAsociacions); } else { ret.getOrganizacionAsociacions().addAll(organizacionAsociacions); } } if (eventsEl != null) { Set<OrganizacionEvento> eventos = buscarEventos(eventsEl, ret); if (ret.getEventos() == null) { ret.setEventos(eventos); } else { ret.getEventos().addAll(eventos); } } ret.setUsername(username); ret.setPassword(password); } } } return ret; }