Created
April 3, 2012 00:37
-
-
Save THUFIR/2288307 to your computer and use it in GitHub Desktop.
NNTP connections
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
thufir@dur:~$ cat NetBeansProjects/NNTPjsf/src/java/net/bounceme/dur/nntp/MessageBean.java | |
package net.bounceme.dur.nntp; | |
import java.io.Serializable; | |
import java.util.ArrayList; | |
import java.util.List; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
import javax.enterprise.context.SessionScoped; | |
import javax.faces.model.DataModel; | |
import javax.faces.model.ListDataModel; | |
import javax.inject.Named; | |
@Named | |
@SessionScoped | |
public class MessageBean implements Serializable { | |
private static final long serialVersionUID = 1L; | |
private static final Logger logger = Logger.getLogger(MessageBean.class.getName()); | |
private static Level level = Level.INFO; | |
public MessageBean() { | |
logger.log(level, "MessageBean.."); | |
} | |
public DataModel getModel() throws Exception { | |
logger.log(level, "MessageBean.getModel.."); | |
List<MessageEntity> messageEntities = getNNTP(); | |
DataModel messagesDataModel = new ListDataModel(messageEntities); | |
return messagesDataModel; | |
} | |
private List<MessageEntity> getNNTP() throws Exception { | |
logger.log(level, "MessageBean.getNNTP.."); | |
List<MessageEntity> messageEntities = new ArrayList<MessageEntity>(); | |
SingletonNNTP nntp = SingletonNNTP.INSTANCE; | |
messageEntities = nntp.getEntities(); | |
logger.log(level, "MessageBean.getNNTP nntp.size: {0}", messageEntities.size()); | |
return messageEntities; | |
} | |
}thufir@dur:~$ | |
thufir@dur:~$ cat NetBeansProjects/NNTPjsf/src/java/net/bounceme/dur/nntp/MessageEntity.java | |
package net.bounceme.dur.nntp; | |
import java.io.Serializable; | |
import java.net.MalformedURLException; | |
import java.net.URL; | |
import java.util.ArrayList; | |
import java.util.Date; | |
import java.util.List; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
import javax.mail.Address; | |
import javax.mail.Header; | |
import javax.persistence.*; | |
@Entity | |
public class MessageEntity implements Serializable { | |
private static long serialVersionUID = 1L; | |
private String MessageId = "0"; | |
private List<Header> headers = new ArrayList<Header>(); | |
private String content = "content"; | |
private String subject = "subj"; | |
@Temporal(javax.persistence.TemporalType.DATE) | |
private Date sentDate = new Date(); | |
private List<Address> addresses = new ArrayList<Address>(); | |
@Id | |
@GeneratedValue(strategy = GenerationType.AUTO) | |
private Long id; | |
private URL url = null; | |
public Long getId() { | |
return id; | |
} | |
public void setId(Long id) { | |
this.id = id; | |
} | |
@Override | |
public int hashCode() { | |
int hash = 0; | |
hash += (getId() != null ? getId().hashCode() : 0); | |
return hash; | |
} | |
@Override | |
public boolean equals(Object object) { | |
// TODO: Warning - this method won't work in the case the id fields are not set | |
if (!(object instanceof MessageEntity)) { | |
return false; | |
} | |
MessageEntity other = (MessageEntity) object; | |
if ((this.getId() == null && other.getId() != null) || (this.getId() != null && !this.id.equals(other.id))) { | |
return false; | |
} | |
return true; | |
} | |
public String getMessageId() { | |
return MessageId; | |
} | |
public void setMessageId(String MessageId) { | |
this.MessageId = MessageId; | |
} | |
public List<String> getStringHeaders() { | |
List<Header> headerListOfHeaders = getHeaders(); | |
List<String> stringListOfHeaders = new ArrayList<String>(); | |
for (Header h : headerListOfHeaders) { | |
stringListOfHeaders.add(h.getName() + " " + h.getValue() + "\n"); | |
} | |
return stringListOfHeaders; | |
} | |
public List<Header> getHeaders() { | |
return headers; | |
} | |
public void setHeaders(List<Header> headers) { | |
this.headers = headers; | |
} | |
public String getContent() { | |
return content; | |
} | |
public void setContent(String content) { | |
this.content = content; | |
} | |
public String getSubject() { | |
return subject; | |
} | |
public void setSubject(String subject) { | |
this.subject = subject; | |
} | |
public Date getSentDate() { | |
return sentDate; | |
} | |
public void setSentDate(Date sentDate) { | |
this.sentDate = sentDate; | |
} | |
public List<Address> getAddresses() { | |
return addresses; | |
} | |
public void setAddresses(List<Address> addresses) { | |
this.addresses = addresses; | |
} | |
public URL getUrl() throws MalformedURLException { | |
url = new URL("http://www.google.com/"); | |
for (Header h : headers) { | |
if ("Archived-at".equals(h.getName())) { | |
String s = h.getValue(); | |
s = s.substring(1, s.length()-1); | |
url = new URL(s); | |
} | |
} | |
return url; | |
} | |
public void setUrl(URL link) { | |
this.url = link; | |
} | |
@Override | |
public String toString() { | |
String s = "no URL"; | |
try { | |
s = "net.bounceme.dur.nntp.MessageEntity[ id=" + getId() + " ]" | |
+ getUrl().toExternalForm(); | |
} catch (MalformedURLException ex) { | |
Logger.getLogger(MessageEntity.class.getName()).log(Level.SEVERE, null, ex); | |
} | |
return s; | |
} | |
} | |
thufir@dur:~$ | |
thufir@dur:~$ cat NetBeansProjects/NNTPjsf/src/java/net/bounceme/dur/nntp/SingletonNNTP.java | |
package net.bounceme.dur.nntp; | |
import java.util.*; | |
import java.util.logging.Level; | |
import java.util.logging.Logger; | |
import javax.mail.*; | |
public enum SingletonNNTP { | |
INSTANCE; | |
private final Logger logger = Logger.getLogger(SingletonNNTP.class.getName()); | |
private final Level level = Level.INFO; | |
private Properties props = new Properties(); | |
private List<Message> messages = new ArrayList<Message>(); | |
private boolean loaded = false; | |
private List<MessageEntity> messageEntities = new ArrayList<MessageEntity>(); | |
private SingletonNNTP() { | |
logger.logp(level, "SingletonNNTP", "SingletonNNTP", "only once..."); | |
props = PropertiesReader.getProps(); | |
if (!loaded) { | |
try { | |
loaded = setMessages(); | |
} catch (Exception ex) { | |
Logger.getLogger(SingletonNNTP.class.getName()).log(Level.SEVERE, "FAILED TO LOAD MESSAGES", ex); | |
} | |
} | |
} | |
public List<Message> getMessages(boolean debug) throws Exception { | |
logger.logp(level, "SingletonNNTP", "getMessages", "returning messages"); | |
return Collections.unmodifiableList(messages); | |
} | |
private boolean setMessages() throws Exception { | |
logger.logp(level, "SingletonNNTP", "setMessages", "connecting to leafnode"); | |
Session session = Session.getDefaultInstance(props); | |
session.setDebug(false); | |
Store store = session.getStore(new URLName(props.getProperty("nntp.host"))); | |
store.connect(); | |
Folder root = store.getDefaultFolder(); | |
Folder folder = root.getFolder(props.getProperty("nntp.group")); | |
folder.open(Folder.READ_ONLY); | |
Message[] msgs = folder.getMessages(); | |
messages = Arrays.asList(msgs); | |
setEntities(); | |
folder.close(false); | |
store.close(); | |
return true; | |
} | |
public List<MessageEntity> getEntities() { | |
logger.logp(level, "SingletonNNTP", "getEntities", "getting entities"); | |
for (MessageEntity m : messageEntities) { | |
for (Header h : m.getHeaders()) { | |
logger.log(level, h.toString()); | |
} | |
} | |
return Collections.unmodifiableList(messageEntities); | |
} | |
private void setEntities() throws Exception { | |
logger.logp(level, "SingletonNNTP", "loadEntities", "trying to convert"); | |
messageEntities = new ArrayList<MessageEntity>(); | |
for (Message message : messages) { | |
MessageEntity entity = new MessageEntity(); | |
Enumeration allHeaders = message.getAllHeaders(); | |
List<Header> headers = new ArrayList<Header>(); | |
while (allHeaders.hasMoreElements()) { | |
Header hdr = (Header) allHeaders.nextElement(); | |
headers.add(hdr); | |
} | |
entity.setHeaders(headers); | |
entity.setSubject(message.getSubject()); | |
entity.setContent(message.getContent().toString()); | |
entity.setSentDate(message.getReceivedDate()); | |
messageEntities.add(entity); | |
} | |
} | |
} | |
thufir@dur:~$ | |
thufir@dur:~$ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment