コード例 #1
0
ファイル: ItemPanel.java プロジェクト: BerengereG/contrib
  /**
   * All items for given list of uploads. Respect startItem and maxItem
   *
   * @param uploads
   * @return
   */
  private List<Item> itemsByUploads(List<DataUpload> uploads) {

    if (resultItemList != null) return resultItemList;
    resultItemList = new ArrayList<Item>();
    long currentStart = 0l;
    int itemsRead = 0;
    boolean transform = false;
    for (DataUpload du : uploads) {
      transform = false;
      if (du.getItemXpath() != null) {
        if (DB.getTransformationDAO().findByUpload(du).size() > 0) {
          if (DB.getTransformationDAO().findByUpload(du).get(0).getStatusCode() == 0)
            transform = true;
        }
        if (currentStart + du.getItemXpath().getCount() < startItem) {
          currentStart += du.getItemXpath().getCount();
          continue;
        }
        List<XMLNode> l =
            du.getItemXpath().getNodes(startItem + itemsRead - currentStart, maxItems);
        for (XMLNode x : l) {
          log.debug("get tree .. ");
          XMLNode tree = DB.getXMLNodeDAO().getDOMTree(x);
          boolean trunc = false;
          if (tree.getSize() > 20000) {
            trunc = true;
          }

          log.debug(" . done");
          if (itemsRead < maxItems) {
            List<? extends XMLNode> labelList = tree.getChildrenByXpath(du.getItemLabelXpath());
            if (labelList.size() != 1) log.warn("Label not unique");

            XMLNode label;
            Item i = new Item();
            if (labelList.size() == 1) {
              label = labelList.get(0);
              i.name = label.getContent();
            } else if (labelList.size() == 0) {
              i.name = "<no label>";
            } else {
              i.name = "<" + labelList.size() + " labels>";
            }
            i.truncated = trunc;
            i.uploadId = du.getDbID();
            i.direct = du.isDirect();
            i.nodeId = x.getNodeId();
            i.transformed = transform;
            if (du.getUploadDate() == null) i.itemdate = "";
            else i.itemdate = new SimpleDateFormat("dd/MM/yyyy HH:mm").format(du.getUploadDate());
            i.importname = du.getOriginalFilename();
            /*if( du.getOriginalFilename().length()<15 )
            	i.importname=du.getOriginalFilename();
            else
            	i.importname=".."+du.getOriginalFilename()
            	.substring(du.getOriginalFilename().length()-12);
            	 */
            resultItemList.add(i);
            itemsRead += 1;
            log.debug("adding item:" + itemsRead + " with date:" + i.getDate());
          }
        }
        if (itemsRead == maxItems) break;
        currentStart += du.getItemXpath().getCount();
      }
    }
    endItem = startItem + resultItemList.size();
    return resultItemList;
  }