示例#1
0
 public void readConfigs() throws java.io.IOException {
   long newestSourceTime = getNewestSourceTime();
   File[] readConfigs = getReadConfig();
   for (int i = 0; i < readConfigs.length; ++i) {
     try {
       File configFile = readConfigs[i];
       org.xml.sax.InputSource in = new org.xml.sax.InputSource(new FileInputStream(configFile));
       javax.xml.parsers.DocumentBuilderFactory dbf =
           javax.xml.parsers.DocumentBuilderFactory.newInstance();
       javax.xml.parsers.DocumentBuilder db = dbf.newDocumentBuilder();
       org.w3c.dom.Document doc = db.parse(in);
       readNode(doc.getDocumentElement());
     } catch (javax.xml.parsers.ParserConfigurationException e) {
       throw new RuntimeException(e);
     } catch (org.xml.sax.SAXException e) {
       throw new RuntimeException(e);
     }
   }
   setNewestSourceTime(newestSourceTime);
 }
  public String getXMLDataForItemId(String itemId) {
    String xmlstore = "";

    Connection conn = null;

    // Create a connection to the database
    try { // System.out.print("before connection");
      // Connection to db manager
      conn = DbManager.getConnection(true);
      Statement statement = conn.createStatement();
      // System.out.print("successfully connected to database");

      // Geting the items
      ResultSet result =
          statement.executeQuery("SELECT * FROM Items " + "WHERE Items.Item_ID = " + itemId);

      result.first();
      // Somethings in it

      if (result.getRow() != 0) {
        // System.out.println("I found a item " );
        DocumentBuilderFactory fac = DocumentBuilderFactory.newInstance();
        DocumentBuilder b = fac.newDocumentBuilder();
        org.w3c.dom.Document doc = b.newDocument();

        // root element
        Element root = doc.createElement("Item");
        root.setAttribute("ItemID", itemId);
        doc.appendChild(root);

        Element element_name = doc.createElement("Name");
        element_name.appendChild(doc.createTextNode(replacespecial(result.getString("Item_name"))));
        root.appendChild(element_name);

        /*         // Build Category Elements
        // Get the Categories
        Statement catstatement = conn.createStatement();
        ResultSet catresult = catstatement.executeQuery("SELECT Category "
                                                      + "FROM Category,Item_Category "
                                                      + "WHERE Item_Category.Item_ID = " + itemId + " "
                                                      + "AND Item_Category.Category_ID = Category.Category_ID");

        Element category_element;
        while (catresult.next()) {
            category_element = doc.createElement("Category");
            category_element.appendChild(doc.createTextNode(replacespecial(catresult.getString("Category"))));
            root.appendChild(category_element);
        }

        catresult.close();
        catstatement.close();*/

        // Build Item price elements
        if (result.getString("Currently") != null) {
          Element currently_element = doc.createElement("Currently");
          currently_element.appendChild(doc.createTextNode("$" + result.getString("Currently")));
          root.appendChild(currently_element);
        }

        if (result.getString("Buy_Price") != null) {
          Element buyprice_element = doc.createElement("Buy_Price");
          buyprice_element.appendChild(doc.createTextNode("$" + result.getString("Buy_Price")));
          root.appendChild(buyprice_element);
        }

        if (result.getString("First_Bid") != null) {
          Element start_element = doc.createElement("First_Bid");
          start_element.appendChild(doc.createTextNode("$" + result.getString("First_Bid")));
          root.appendChild(start_element);
        }

        // num bids
        if (result.getString("Number_of_Bids") != null) {
          Element numberbids_elements = doc.createElement("Number_of_Bids");
          numberbids_elements.appendChild(doc.createTextNode(result.getString("Number_of_Bids")));
          root.appendChild(numberbids_elements);
        }
        // description

        if (result.getString("Description") != null) {
          Element description_element = doc.createElement("Description");
          description_element.appendChild(
              doc.createTextNode(replacespecial(result.getString("Description"))));
          root.appendChild(description_element);
        }

        /*  // location
        Element location_element = doc.createElement("Location");
        location_element.appendChild(doc.createTextNode((replacespecial(result.getString("Location")))));
        root.appendChild(location_element);

        // country
        Element country_element = doc.createElement("Country");
        country_element.appendChild(doc.createTextNode((replacespecial(result.getString("Country")))));
        root.appendChild(country_element);

        // started
        Element started_elem = doc.createElement("Started");
        started_elem.appendChild(doc.createTextNode(convertDate(result.getString("Started"), "yyyy-MM-dd HH:mm:ss", "MMM-dd-yy HH:mm:ss")));
        root.appendChild(started_elem);

        // ends
        Element ends_element = doc.createElement("Ends");
        ends_element.appendChild(doc.createTextNode(convertDate(result.getString("Ends"), "yyyy-MM-dd HH:mm:ss", "MMM-dd-yy HH:mm:ss")));
        root.appendChild(ends_element);*/

        /*                // Build Bid Elements
        Statement bidstatement = conn.createStatement();
        ResultSet bidresult = bidstatement.executeQuery("SELECT * "
                                                      + "FROM Auctions, AuctionUser "
                                                      + "WHERE Auctions.Item_Id = " + itemId + " "
                                                      + "AND Auctions.User_ID = AuctionUser.User_ID");

        Element bids_element = doc.createElement("Bids");

        while (bidresult.next()) {
            try {
                Element bid_element = doc.createElement("Bid");
                Element bidder_element = doc.createElement("Bidder");
                bidder_element.setAttribute("UserID", replacespecial(bidresult.getString("User_ID")));
               // bidder_element.setAttribute("Rating", bidresult.getString("Rating"));

                // Add Location and Country elements if they aren't NULL
                if (!bidresult.getString("Location").equals("")) {
                    Element location_element = doc.createElement("Location");
                    location_element.appendChild(doc.createTextNode((replacespecial(bidresult.getString("Location")))));
                    bidder_element.appendChild(location_element);
                }
                if (!bidresult.getString("Country").equals("")) {
                    Element country_element = doc.createElement("Country");
                    country_element.appendChild(doc.createTextNode((replacespecial(bidresult.getString("Country")))));
                    bidder_element.appendChild(country_element);
                }
                bid_element.appendChild(bidder_element);

                // time
                Element time_element = doc.createElement("Time");
                time_element.appendChild(doc.createTextNode(convertDate(bidresult.getString("Bid_Time"), "yyyy-MM-dd HH:mm:ss", "MMM-dd-yy HH:mm:ss")));
                bid_element.appendChild(time_element);

                // amount
                Element amount_element = doc.createElement("Amount");
                amount_element.appendChild(doc.createTextNode(bidresult.getString("Bid_Time")));
                bid_element.appendChild(amount_element);

                bids_element.appendChild(bid_element);
            } catch (SQLException e) {
                System.out.println(e);
            }
        }

        root.appendChild(bids_element);

        bidresult.close();
        bidstatement.close();*/

        /*                // Get the Seller data
        Statement sellstatement = conn.createStatement();
        ResultSet sellres = sellstatement.executeQuery("SELECT User_ID, Rating, Location, Country "
                                                     + "FROM Items, AuctionUser "
                                                     + "WHERE Items.Item_ID" + " = " + itemId + " "
                                                     + "AND Items.Seller_Id = AuctionUser.User_ID");
        sellres.first();

        // seller
                        Element sellerElem = doc.createElement("Seller");
                        sellerElem.setAttribute("UserID", (replacespecial(sellres.getString("UserID"))));
                        sellerElem.setAttribute("Rating", sellres.getString("Rating"));
                        root.appendChild(sellerElem);
                        sellres.close();
                        sellstatement.close();*/

        // Write the XML
        TransformerFactory newfactory = TransformerFactory.newInstance();
        Transformer transform = newfactory.newTransformer();
        DOMSource source = new DOMSource(doc);

        StringWriter writer = new StringWriter();
        StreamResult res = new StreamResult(writer);
        transform.setOutputProperty(OutputKeys.INDENT, "yes");
        transform.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
        transform.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        transform.transform(source, res);
        xmlstore = writer.toString();
        xmlstore = replacespecial1(xmlstore);
      }

      result.close();
      statement.close();

      conn.close();

    } catch (SQLException e) {
      System.out.println(e);
    } catch (ParserConfigurationException e) {
      System.out.println("oops");
    } catch (TransformerException e) {
      System.out.println("oops");
    }

    return xmlstore;
  }
  /** updates the XMl with hashcode for the files */
  protected BudgetSubAwards updateXML(
      byte xmlContents[], Map fileMap, BudgetSubAwards budgetSubAwardBean, Budget budget)
      throws Exception {

    javax.xml.parsers.DocumentBuilderFactory domParserFactory =
        javax.xml.parsers.DocumentBuilderFactory.newInstance();
    javax.xml.parsers.DocumentBuilder domParser = domParserFactory.newDocumentBuilder();
    ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(xmlContents);

    org.w3c.dom.Document document = domParser.parse(byteArrayInputStream);
    byteArrayInputStream.close();
    String namespace = null;
    String formName = null;
    if (document != null) {
      Node node;
      Element element = document.getDocumentElement();
      NamedNodeMap map = element.getAttributes();
      String namespaceHolder =
          element.getNodeName().substring(0, element.getNodeName().indexOf(':'));
      node = map.getNamedItem("xmlns:" + namespaceHolder);
      namespace = node.getNodeValue();
      FormMappingInfo formMappingInfo = new FormMappingLoader().getFormInfo(namespace);
      formName = formMappingInfo.getFormName();
      budgetSubAwardBean.setNamespace(namespace);
      budgetSubAwardBean.setFormName(formName);
    }

    String xpathEmptyNodes =
        "//*[not(node()) and local-name(.) != 'FileLocation' and local-name(.) != 'HashValue']";
    String xpathOtherPers =
        "//*[local-name(.)='ProjectRole' and local-name(../../.)='OtherPersonnel' and count(../NumberOfPersonnel)=0]";
    removeAllEmptyNodes(document, xpathEmptyNodes, 0);
    removeAllEmptyNodes(document, xpathOtherPers, 1);
    removeAllEmptyNodes(document, xpathEmptyNodes, 0);
    changeDataTypeForNumberOfOtherPersons(document);

    List<String> fedNonFedSubAwardForms = getFedNonFedSubawardForms();
    NodeList budgetYearList =
        XPathAPI.selectNodeList(document, "//*[local-name(.) = 'BudgetYear']");
    for (int i = 0; i < budgetYearList.getLength(); i++) {
      Node bgtYearNode = budgetYearList.item(i);
      String period = getValue(XPathAPI.selectSingleNode(bgtYearNode, "BudgetPeriod"));
      if (fedNonFedSubAwardForms.contains(namespace)) {
        Element newBudgetYearElement =
            copyElementToName((Element) bgtYearNode, bgtYearNode.getNodeName());
        bgtYearNode.getParentNode().replaceChild(newBudgetYearElement, bgtYearNode);
      } else {
        Element newBudgetYearElement =
            copyElementToName((Element) bgtYearNode, bgtYearNode.getNodeName() + period);
        bgtYearNode.getParentNode().replaceChild(newBudgetYearElement, bgtYearNode);
      }
    }

    Node oldroot = document.removeChild(document.getDocumentElement());
    Node newroot = document.appendChild(document.createElement("Forms"));
    newroot.appendChild(oldroot);

    org.w3c.dom.NodeList lstFileName = document.getElementsByTagName("att:FileName");
    org.w3c.dom.NodeList lstFileLocation = document.getElementsByTagName("att:FileLocation");
    org.w3c.dom.NodeList lstMimeType = document.getElementsByTagName("att:MimeType");
    org.w3c.dom.NodeList lstHashValue = document.getElementsByTagName("glob:HashValue");

    if ((lstFileName.getLength() != lstFileLocation.getLength())
        || (lstFileLocation.getLength() != lstHashValue.getLength())) {
      //            throw new RuntimeException("Tag occurances mismatch in XML File");
    }

    org.w3c.dom.Node fileNode, hashNode, mimeTypeNode;
    org.w3c.dom.NamedNodeMap fileNodeMap, hashNodeMap;
    String fileName;
    byte fileBytes[];
    String contentId;
    List attachmentList = new ArrayList();

    for (int index = 0; index < lstFileName.getLength(); index++) {
      fileNode = lstFileName.item(index);

      Node fileNameNode = fileNode.getFirstChild();
      fileName = fileNameNode.getNodeValue();

      fileBytes = (byte[]) fileMap.get(fileName);

      if (fileBytes == null) {
        throw new RuntimeException("FileName mismatch in XML and PDF extracted file");
      }
      String hashVal = GrantApplicationHash.computeAttachmentHash(fileBytes);

      hashNode = lstHashValue.item(index);
      hashNodeMap = hashNode.getAttributes();

      Node temp = document.createTextNode(hashVal);
      hashNode.appendChild(temp);

      hashNode = hashNodeMap.getNamedItem("glob:hashAlgorithm");

      hashNode.setNodeValue(S2SConstants.HASH_ALGORITHM);

      fileNode = lstFileLocation.item(index);
      fileNodeMap = fileNode.getAttributes();
      fileNode = fileNodeMap.getNamedItem("att:href");

      contentId = fileNode.getNodeValue();
      String encodedContentId = cleanContentId(contentId);
      fileNode.setNodeValue(encodedContentId);

      mimeTypeNode = lstMimeType.item(0);
      String contentType = mimeTypeNode.getFirstChild().getNodeValue();

      BudgetSubAwardAttachment budgetSubAwardAttachmentBean = new BudgetSubAwardAttachment();
      budgetSubAwardAttachmentBean.setAttachment(fileBytes);
      budgetSubAwardAttachmentBean.setContentId(encodedContentId);

      budgetSubAwardAttachmentBean.setContentType(contentType);
      budgetSubAwardAttachmentBean.setBudgetId(budgetSubAwardBean.getBudgetId());
      budgetSubAwardAttachmentBean.setSubAwardNumber(budgetSubAwardBean.getSubAwardNumber());

      attachmentList.add(budgetSubAwardAttachmentBean);
    }

    budgetSubAwardBean.setBudgetSubAwardAttachments(attachmentList);

    javax.xml.transform.Transformer transformer =
        javax.xml.transform.TransformerFactory.newInstance().newTransformer();
    transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");

    ByteArrayOutputStream bos = new ByteArrayOutputStream();

    javax.xml.transform.stream.StreamResult result =
        new javax.xml.transform.stream.StreamResult(bos);
    javax.xml.transform.dom.DOMSource source = new javax.xml.transform.dom.DOMSource(document);

    transformer.transform(source, result);

    budgetSubAwardBean.setSubAwardXmlFileData(new String(bos.toByteArray()));

    bos.close();

    return budgetSubAwardBean;
  }