List of usage examples for org.xml.sax SAXException getClass
@HotSpotIntrinsicCandidate public final native Class<?> getClass();
From source file:org.energyos.espi.common.service.impl.ImportServiceImpl.java
@Override public void importData(InputStream stream, Long retailCustomerId) throws IOException, SAXException, ParserConfigurationException { // setup the parser JAXBContext context = marshaller.getJaxbContext(); SAXParserFactory factory = SAXParserFactory.newInstance(); factory.setNamespaceAware(true);//from w ww.j av a 2s . co m XMLReader reader = factory.newSAXParser().getXMLReader(); // EntryProcessor processor = new EntryProcessor(resourceLinker, new // ResourceConverter(), resourceService); ATOMContentHandler atomContentHandler = new ATOMContentHandler(context, entryProcessorService); reader.setContentHandler(atomContentHandler); // do the parse/import try { reader.parse(new InputSource(stream)); } catch (SAXException e) { System.out.printf( "\nImportServiceImpl -- importData: SAXException\n Cause = %s\n Description = %s\n\n", e.getClass(), e.getMessage()); throw new SAXException(e.getMessage(), e); } catch (Exception e) { System.out.printf("\nImportServiceImpl -- importData:\n Cause = %s\n Description = %s\n\n", e.getClass(), e.getMessage()); e.printStackTrace(); } // context of the import used for linking things up // and establishing notifications // entries = atomContentHandler.getEntries(); minUpdated = atomContentHandler.getMinUpdated(); maxUpdated = atomContentHandler.getMaxUpdated(); // cleanup/end processing // 1 - associate to usage points to the right retail customer // 2 - make sure authorization/subscriptions have the right URIs // 3 - place the imported usagePoints in to the subscriptions // List<UsagePoint> usagePointList = new ArrayList<UsagePoint>(); // now perform any associations (to RetailCustomer) and stage the // Notifications (if any) RetailCustomer retailCustomer = null; if (retailCustomerId != null) { retailCustomer = retailCustomerService.findById(retailCustomerId); } Iterator<EntryType> its = entries.iterator(); while (its.hasNext()) { EntryType entry = its.next(); UsagePoint usagePoint = entry.getContent().getUsagePoint(); if (usagePoint != null) { // see if we already have a retail customer association RetailCustomer tempRc = usagePoint.getRetailCustomer(); if (tempRc != null) { // hook it to the retailCustomer if (!(tempRc.equals(retailCustomer))) { // we have a conflict in association meaning to Retail // Customers // TODO: resolve how to handle the conflict mentioned // above. // TODO: Only works for a single customer and not // multiple customers retailCustomer = tempRc; } } else { // associate the usagePoint with the Retail Customer if (retailCustomer != null) { usagePointService.associateByUUID(retailCustomer, usagePoint.getUUID()); } } usagePointList.add(usagePoint); } } // now if we have a retail customer, check for any subscriptions that // need associated if (retailCustomer != null) { Subscription subscription = null; // find and iterate across all relevant authorizations // List<Authorization> authorizationList = authorizationService .findAllByRetailCustomerId(retailCustomer.getId()); for (Authorization authorization : authorizationList) { try { subscription = subscriptionService.findByAuthorizationId(authorization.getId()); } catch (Exception e) { // an Authorization w/o an associated subscription breaks // the propagation chain System.out.printf("**** End of Notification Propagation Chain\n"); } if (subscription != null) { String resourceUri = authorization.getResourceURI(); // this is the first time this authorization has been in // effect. We must set up the appropriate resource links if (resourceUri == null) { ApplicationInformation applicationInformation = authorization.getApplicationInformation(); resourceUri = applicationInformation.getDataCustodianResourceEndpoint(); resourceUri = resourceUri + "/Batch/Subscription/" + subscription.getId(); authorization.setResourceURI(resourceUri); resourceService.merge(authorization); } // make sure the UsagePoint(s) we just imported are linked // up // with // the Subscription for (UsagePoint usagePoint : usagePointList) { boolean addNew = false; for (UsagePoint up : subscription.getUsagePoints()) { if (up.equals(usagePoint)) addNew = true; } if (addNew) subscriptionService.addUsagePoint(subscription, usagePoint); } } } } }