public void connect(MessageContext messageContext) throws ConnectException { try { String spreadsheetName = GoogleSpreadsheetUtils.lookupFunctionParam(messageContext, SPREADSHEET_NAME); if (spreadsheetName == null || "".equals(spreadsheetName.trim())) { log.error("Please make sure you have given a name for the spreadsheet"); ConnectException connectException = new ConnectException("Please make sure you have given a name for the spreadsheet"); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, connectException); return; } SpreadsheetService ssService = new GoogleSpreadsheetClientLoader(messageContext).loadSpreadsheetService(); GoogleSpreadsheet gss = new GoogleSpreadsheet(ssService); SpreadsheetEntry ssEntry = gss.getSpreadSheetsByTitle(spreadsheetName); GoogleSpreadsheetWorksheet gssWorksheet = new GoogleSpreadsheetWorksheet(ssService, ssEntry.getWorksheetFeedUrl()); List<String> resultData = gssWorksheet.getAllWorksheets(); int resultSize = resultData.size(); if (messageContext.getEnvelope().getBody().getFirstElement() != null) { messageContext.getEnvelope().getBody().getFirstElement().detach(); } OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace ns = factory.createOMNamespace("http://org.wso2.esbconnectors.googlespreadsheet", "ns"); OMElement searchResult = factory.createOMElement("getAllWorksheetsResult", ns); OMElement result = factory.createOMElement("result", ns); searchResult.addChild(result); result.setText("true"); OMElement data = factory.createOMElement("data", ns); searchResult.addChild(data); for (int iterateCount = 0; iterateCount < resultSize; iterateCount++) { if (resultData.get(iterateCount) != null) { OMElement title = factory.createOMElement("title", ns); data.addChild(title); title.setText(resultData.get(iterateCount)); } } messageContext.getEnvelope().getBody().addChild(searchResult); } catch (IOException te) { log.error("Failed to show status: " + te.getMessage(), te); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, te); } catch (ServiceException te) { log.error("Failed to show status: " + te.getMessage(), te); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, te); } catch (Exception te) { log.error("Failed to show status: " + te.getMessage(), te); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, te); } }
public void connect(MessageContext messageContext) throws ConnectException { try { String worksheetName = GoogleSpreadsheetUtils.lookupFunctionParam(messageContext, WORKSHEET_NAME); String spreadsheetName = GoogleSpreadsheetUtils.lookupFunctionParam(messageContext, SPREADSHEET_NAME); if ((worksheetName == null || "".equals(worksheetName.trim())) && (spreadsheetName == null || "".equals(spreadsheetName.trim()))) { log.error( "Please make sure you have given a valid input for the worksheet or spreadsheet name"); ConnectException connectException = new ConnectException( "Please make sure you have given a valid input for the worksheet or spreadsheet name"); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, connectException); return; } SpreadsheetService ssService = new GoogleSpreadsheetClientLoader(messageContext).loadSpreadsheetService(); GoogleSpreadsheet gss = new GoogleSpreadsheet(ssService); SpreadsheetEntry ssEntry = gss.getSpreadSheetsByTitle(spreadsheetName); if (ssEntry != null) { List<Person> resultData = null; resultData = gss.getAuthors(ssEntry); if (worksheetName != null) { GoogleSpreadsheetWorksheet gssWorksheet = new GoogleSpreadsheetWorksheet(ssService, ssEntry.getWorksheetFeedUrl()); WorksheetEntry wsEntry = gssWorksheet.getWorksheetByTitle(worksheetName); if (wsEntry != null) { if (gssWorksheet.getAuthors(wsEntry).size() > 0) { resultData.clear(); resultData = gssWorksheet.getAuthors(wsEntry); } } else { ConnectException connectException = new ConnectException( "Cannot retrieve the authors. Worksheet with the given name is not available."); log.error("Error occured: " + connectException.getMessage(), connectException); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, connectException); return; } } int resultSize = resultData.size(); GoogleSpreadsheetUtils.removeTransportHeaders(messageContext); if (messageContext.getEnvelope().getBody().getFirstElement() != null) { messageContext.getEnvelope().getBody().getFirstElement().detach(); } OMFactory factory = OMAbstractFactory.getOMFactory(); OMNamespace ns = factory.createOMNamespace("http://org.wso2.esbconnectors.googlespreadsheet", "ns"); OMElement searchResult = factory.createOMElement("getAuthorsResult", ns); OMElement result = factory.createOMElement("result", ns); searchResult.addChild(result); result.setText("true"); OMElement data = factory.createOMElement("data", ns); searchResult.addChild(data); for (int iterateCount = 0; iterateCount < resultSize; iterateCount++) { if (resultData.get(iterateCount) != null) { OMElement author = factory.createOMElement("author", ns); data.addChild(author); author.setText(resultData.get(iterateCount).getName()); } } messageContext.getEnvelope().getBody().addChild(searchResult); } else { ConnectException connectException = new ConnectException( "Cannot retrieve the authors. Spreadsheet with the given name is not available."); log.error("Error occured: " + connectException.getMessage(), connectException); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, connectException); } } catch (IOException te) { log.error("Error occured " + te.getMessage(), te); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, te); } catch (ServiceException te) { log.error("Error occured " + te.getMessage(), te); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, te); } catch (Exception te) { log.error("Error occured " + te.getMessage(), te); GoogleSpreadsheetUtils.storeErrorResponseStatus(messageContext, te); } }