Example #1
0
  private void persistNewsData(NodeList titles, NodeList links, NodeList descriptions) {
    // Persists news data feed.
    // Also clears out previously persisted news feed data

    PersistenceManager pm = PMF.get().getPersistenceManager();
    javax.jdo.Query query = pm.newQuery(NewsItem.class);
    Long res = query.deletePersistentAll();

    System.out.println("Datastore deleted  " + res + "records");

    pm = PMF.get().getPersistenceManager();

    try {
      for (int i = 1; i < titles.getLength(); i++) {
        NewsItem ni = new NewsItem();
        ni.setTitle(titles.item(i).getTextContent());
        ni.setLink(links.item(i).getTextContent());
        if (descriptions.item(i) != null) {
          ni.setDescription(new Text(descriptions.item(i).getTextContent()));
        }
        pm.makePersistent(ni);
      }
    } finally {
      pm.close();
    }
  }
  @Override
  public Document asDocument(NewsItem newsItem) {
    Document doc = new Document();

    doc.add(new IntField(ITEM_ID, newsItem.itemID(), Field.Store.YES));
    doc.add(new StringFieldWithTermVectors(YEAR, String.valueOf(newsItem.date().getYear())));
    doc.add(new StringFieldWithTermVectors(MONTH, String.valueOf(newsItem.date().getMonth())));
    doc.add(new StringFieldWithTermVectors(DAY, String.valueOf(newsItem.date().getDay())));
    doc.add(new TextFieldWithTermVectors(TITLE, newsItem.title()));
    doc.add(new TextFieldWithTermVectors(HEADLINE, newsItem.headline()));
    doc.add(new TextFieldWithTermVectors(DATELINE, newsItem.dateline()));
    doc.add(new TextFieldWithTermVectors(TEXT, newsItem.text()));

    for (Map.Entry<String, String> entry : newsItem.codes().entries()) {
      doc.add(new StringFieldWithTermVectors(entry.getKey(), entry.getValue()));
    }
    for (Map.Entry<String, String> entry : newsItem.dcs().entrySet()) {
      doc.add(new StringFieldWithTermVectors(entry.getKey(), entry.getValue()));
    }
    return doc;
  }
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
      View itemView = convertView;
      if (itemView == null)
        itemView = getActivity().getLayoutInflater().inflate(R.layout.textcar, parent, false);

      CNews currentNews = NewsItem.get(position);
      ((TextView) itemView.findViewById(R.id.News_txtTitle)).setText(currentNews.getNTitle());
      ((TextView) itemView.findViewById(R.id.News_txtdate))
          .setText(currentNews.getNStartDate() + "~" + currentNews.getNEndDate());

      return itemView;
    }
  // Involves populating data into the item through holder
  @Override
  public void onBindViewHolder(NewsItemAdapter.ViewHolder viewHolder, int position) {
    // Get the data model based on position
    final NewsItem item = nItems.get(position);

    // Set item views based on the data model
    TextView headLine = viewHolder.headLine;
    headLine.setText(item.getHeadLine());

    ImageView thumbnail = viewHolder.thumbnail;
    Glide.with(context).load("http://nytimes.com/" + item.getImageUrl()).into(thumbnail);

    viewHolder.itemView.setOnClickListener(
        new View.OnClickListener() {
          @Override
          public void onClick(View v) {

            Intent intent = new Intent(context, BrowserActivity.class);
            intent.putExtra("url", item.getNewsUrl());
            context.startActivity(intent);
          }
        });
  }
Example #5
0
  private NewsItem parseInfo(Element item) {

    NewsItem tempItem = new NewsItem();

    tempItem.setTitle(item.getElementsByTagName("title").item(0).getTextContent());
    tempItem.setLink(item.getElementsByTagName("link").item(0).getTextContent());

    try {
      tempItem.setPubDate(
          new SimpleDateFormat("EEE, dd MMM yyyy HH:mm z")
              .parse(
                  item.getElementsByTagName("pubDate")
                      .item(0)
                      .getTextContent()
                      .replaceAll("\\p{Cntrl}", "")));
    } catch (ParseException e) {
      System.out.println("NewsFeed: parseInfo Error parsing date-> " + e.getLocalizedMessage());
      e.printStackTrace();
    }

    String tmpDesc = item.getElementsByTagName("description").item(0).getTextContent();
    int imgStartIndex = tmpDesc.indexOf("<img");
    System.out.println("Start of img tag: " + imgStartIndex);

    if (imgStartIndex != -1) {

      int imgStopIndex = tmpDesc.indexOf("/>", imgStartIndex);
      System.out.println("Sto of img tag: " + imgStopIndex);
      String imageTag = tmpDesc.substring(imgStartIndex + 5, imgStopIndex - 1);
      tmpDesc = tmpDesc.substring(imgStopIndex + 2);
      imgStartIndex = imageTag.indexOf("src=\"");
      imgStopIndex = imageTag.indexOf("\" ", imgStartIndex);
      String imageSrc = imageTag.substring(imgStartIndex + 5, imgStopIndex);
      System.out.println("Image Link: " + imageSrc);
      tempItem.setImage(imageSrc);
    }

    tempItem.setDescription(tmpDesc);

    return tempItem;
  }
  protected void paint(Graphics g) {
    g.setColor(TITLE_COLOR);
    Font titleFont = Utils.getFontBold(FONT_SIZE);
    g.setFont(titleFont);

    int textWidht = Display.getWidth() - TEXT_ANCHOR - PADDING_RIGHT;

    if (title == null) {
      title = TextUtils.wrapText(newsItem.getTitle(), textWidht, titleFont);
    }
    int yOff = 0;
    for (int i = 0; i < title.size(); i++) {
      if (title.size() > 2 && i == 1) {
        g.drawText(
            title.elementAt(i).toString() + "...",
            TEXT_ANCHOR,
            PADDING_TOP + i * titleFont.getHeight());
        yOff += g.getFont().getHeight();
        break;
      } else {
        g.drawText(
            title.elementAt(i).toString(), TEXT_ANCHOR, PADDING_TOP + i * titleFont.getHeight());
        yOff += g.getFont().getHeight();
      }
    }

    Font textFont = Utils.getFont(FONT_SIZE);
    g.setColor(PRETEXT_COLOR);
    g.setFont(textFont);

    if (text == null) {
      text = TextUtils.wrapText(newsItem.getBody(), textWidht, textFont);
    }

    int titleHeight = PADDING_TOP + title.size() * titleFont.getHeight();
    int contentHeight = getPreferredHeight() - (PADDING_TOP);

    for (int i = 0; i < text.size(); i++) {
      if (yOff + g.getFont().getHeight() >= getPreferredHeight() - 2 * PADDING_TOP) {
        g.drawText(
            (String) text.elementAt(i) + "...",
            TEXT_ANCHOR,
            titleHeight + i * textFont.getHeight());
      } else {
        g.drawText((String) text.elementAt(i), TEXT_ANCHOR, titleHeight + i * textFont.getHeight());
      }

      yOff += g.getFont().getHeight();
      if (yOff >= getPreferredHeight() - 2 * PADDING_TOP) {
        break;
      }
    }

    if (newsImage != null) {
      try {
        g.drawBitmap(
            PADDING_LEFT,
            PADDING_TOP,
            newsImage.getWidth(),
            newsImage.getHeight(),
            newsImage,
            0,
            0);
      } catch (Exception e) {
        drawDummyPhoto(g);
      }
    } else {
      drawDummyPhoto(g);
    }
  }