Package freenet.node.useralerts

Source Code of freenet.node.useralerts.N2NTMUserAlert

/* This code is part of Freenet. It is distributed under the GNU General
* Public License, version 2 (or at your option any later version). See
* http://www.gnu.org/ for further details of the GPL. */
package freenet.node.useralerts;

import java.lang.ref.WeakReference;
import java.text.DateFormat;
import java.util.Date;

import freenet.clients.fcp.FCPMessage;
import freenet.clients.fcp.TextFeedMessage;
import freenet.l10n.NodeL10n;
import freenet.node.DarknetPeerNode;
import freenet.node.PeerNode;
import freenet.support.HTMLNode;

// Node To Node Text Message User Alert
public class N2NTMUserAlert extends AbstractUserAlert {
  private final WeakReference<PeerNode> peerRef;
  private final String messageText;
  private final int fileNumber;
  private final long composedTime;
  private final long sentTime;
  private final long receivedTime;
  private String sourceNodeName;
  private String sourcePeer;

  public N2NTMUserAlert(DarknetPeerNode sourcePeerNode,
      String message, int fileNumber, long composedTime, long sentTime,
      long receivedTime) {
    super(true, null, null, null, null, UserAlert.MINOR, true, null, true, null);
    this.messageText = message;
    this.fileNumber = fileNumber;
    this.composedTime = composedTime;
    this.sentTime = sentTime;
    this.receivedTime = receivedTime;
    peerRef = sourcePeerNode.getWeakRef();
    sourceNodeName = sourcePeerNode.getName();
    sourcePeer = sourcePeerNode.getPeer().toString();
  }

  @Override
  public String getTitle() {
    return l10n("title", new String[] { "number", "peername", "peer" },
        new String[] { Integer.toString(fileNumber),
            sourceNodeName,
            sourcePeer });
  }

  @Override
  public String getText() {
    return l10n("header", new String[] { "from", "composed", "sent",
        "received" }, new String[] { sourceNodeName,
        DateFormat.getInstance().format(new Date(composedTime)),
        DateFormat.getInstance().format(new Date(sentTime)),
        DateFormat.getInstance().format(new Date(receivedTime)) })
        + ": " + messageText;
  }

  @Override
  public String getShortText() {
    return l10n("headerShort", "from", sourceNodeName);
  }

  @Override
  public HTMLNode getHTMLText() {
    HTMLNode alertNode = new HTMLNode("div");
    alertNode.addChild("p", l10n("header", new String[] { "from",
        "composed", "sent", "received" }, new String[] {
        sourceNodeName,
        DateFormat.getInstance().format(new Date(composedTime)),
        DateFormat.getInstance().format(new Date(sentTime)),
        DateFormat.getInstance().format(new Date(receivedTime)) }));
    String[] lines = messageText.split("\n");
    for (int i = 0, c = lines.length; i < c; i++) {
      alertNode.addChild("#", lines[i]);
      if (i != lines.length - 1)
        alertNode.addChild("br");
    }
   
    DarknetPeerNode pn = (DarknetPeerNode) peerRef.get();
    if(pn != null)
      alertNode.addChild("p").addChild("a", "href",
          "/send_n2ntm/?peernode_hashcode=" + pn.hashCode(),
          l10n("reply"));
    return alertNode;
  }

  @Override
  public String dismissButtonText() {
    return l10n("delete");
  }

  private String l10n(String key) {
    return NodeL10n.getBase().getString("N2NTMUserAlert." + key);
  }

  private String l10n(String key, String[] patterns, String[] values) {
    return NodeL10n.getBase().getString("N2NTMUserAlert." + key, patterns, values);
  }

  private String l10n(String key, String pattern, String value) {
    return NodeL10n.getBase().getString("N2NTMUserAlert." + key, pattern, value);
  }

  @Override
  public void onDismiss() {
    DarknetPeerNode pn = (DarknetPeerNode) peerRef.get();
    if(pn != null)
      pn.deleteExtraPeerDataFile(fileNumber);
  }

  @Override
  public FCPMessage getFCPMessage() {
    return new TextFeedMessage(getTitle(),
        getShortText(), getText(), getPriorityClass(), getUpdatedTime(), sourceNodeName,
        composedTime, sentTime, receivedTime, messageText);
  }

  @Override
  public boolean isValid() {
    DarknetPeerNode pn = (DarknetPeerNode) peerRef.get();
    if(pn != null) {
      sourceNodeName = pn.getName();
      sourcePeer = pn.getPeer().toString();
    }
    return true;
  }

}
TOP

Related Classes of freenet.node.useralerts.N2NTMUserAlert

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.