From 8d826cee93b36cee2d6041d58bf5da4b06bd8aac Mon Sep 17 00:00:00 2001 From: str4d <str4d@mail.i2p> Date: Fri, 22 Nov 2013 11:18:41 +0000 Subject: [PATCH] susimail: - Generics in Folder - for each - type arguments --- .../src/src/i2p/susi/util/Folder.java | 53 ++++++++++--------- .../src/src/i2p/susi/webmail/WebMail.java | 30 ++++------- .../i2p/susi/webmail/pop3/POP3MailBox.java | 13 ++--- 3 files changed, 42 insertions(+), 54 deletions(-) diff --git a/apps/susimail/src/src/i2p/susi/util/Folder.java b/apps/susimail/src/src/i2p/susi/util/Folder.java index c8cd9b7669..a6798c2afd 100644 --- a/apps/susimail/src/src/i2p/susi/util/Folder.java +++ b/apps/susimail/src/src/i2p/susi/util/Folder.java @@ -41,7 +41,7 @@ import java.util.Iterator; * * @author susi */ -public class Folder { +public class Folder<O extends Object> { public static final String PAGESIZE = "pager.pagesize"; public static final int DEFAULT_PAGESIZE = 10; @@ -50,10 +50,10 @@ public class Folder { public static final boolean UP = true; private int pages, pageSize, currentPage; - private Object[] unsortedElements, elements; - private Hashtable sorter; + private O[] unsortedElements, elements; + private Hashtable<String, Comparator<O>> sorter; private boolean sortingDirection; - Comparator currentSorter; + Comparator<O> currentSorter; public Folder() { @@ -61,7 +61,7 @@ public class Folder { pageSize = 0; currentPage = 1; unsortedElements = null; - sorter = new Hashtable(); + sorter = new Hashtable<String, Comparator<O>>(); sortingDirection = UP; currentSorter = null; } @@ -129,12 +129,13 @@ public class Folder { * @param source Array to copy. * @return Copy of source. */ - private Object[] copyArray( Object[] source ) + @SuppressWarnings("unchecked") + private O[] copyArray( O[] source ) { Object[] destination = new Object[source.length]; for( int i = 0; i < source.length; i++ ) destination[i] = source[i]; - return destination; + return (O[])destination; } /** * Recalculates variables. @@ -171,9 +172,9 @@ public class Folder { /** * Set the array of objects the folder should manage. * - * @param elements Array of Objects. + * @param elements Array of Os. */ - public void setElements( Object[] elements ) + public void setElements( O[] elements ) { this.unsortedElements = elements; if( currentSorter != null ) @@ -187,9 +188,9 @@ public class Folder { * Returns an iterator containing the elements on the current page. * @return Iterator containing the elements on the current page. */ - public Iterator currentPageIterator() + public Iterator<O> currentPageIterator() { - ArrayList list = new ArrayList(); + ArrayList<O> list = new ArrayList<O>(); if( elements != null ) { int pageSize = getPageSize(); int offset = ( currentPage - 1 ) * pageSize; @@ -249,7 +250,7 @@ public class Folder { * @param id ID to identify the Comparator with @link sortBy() * @param sorter a Comparator to sort the Array given by @link setElements() */ - public void addSorter( String id, Comparator sorter ) + public void addSorter( String id, Comparator<O> sorter ) { this.sorter.put( id, sorter ); } @@ -263,7 +264,7 @@ public class Folder { */ public void sortBy( String id ) { - currentSorter = (Comparator)sorter.get( id ); + currentSorter = sorter.get( id ); sort(); } @@ -273,9 +274,9 @@ public class Folder { * @param x Position of the element on the current page. * @return Element on the current page on the given position. */ - public Object getElementAtPosXonCurrentPage( int x ) + public O getElementAtPosXonCurrentPage( int x ) { - Object result = null; + O result = null; if( elements != null ) { int pageSize = getPageSize(); int offset = ( currentPage - 1 ) * pageSize; @@ -306,7 +307,7 @@ public class Folder { * * @return First element. */ - public Object getFirstElement() + public O getFirstElement() { /* * sorting direction is taken into account from getElement @@ -319,7 +320,7 @@ public class Folder { * * @return Last element. */ - public Object getLastElement() + public O getLastElement() { /* * sorting direction is taken into account from getElement @@ -333,7 +334,7 @@ public class Folder { * @param element * @return index */ - private int getIndexOf( Object element ) + private int getIndexOf( O element ) { if( elements != null ) { for( int i = 0; i < elements.length; i++ ) @@ -350,9 +351,9 @@ public class Folder { * @param element * @return The next element */ - public Object getNextElement( Object element ) + public O getNextElement( O element ) { - Object result = null; + O result = null; int i = getIndexOf( element ); @@ -371,9 +372,9 @@ public class Folder { * @param element * @return The previous element */ - public Object getPreviousElement( Object element ) + public O getPreviousElement( O element ) { - Object result = null; + O result = null; int i = getIndexOf( element ); @@ -390,9 +391,9 @@ public class Folder { * @param i * @return Element at index i */ - private Object getElement( int i ) + private O getElement( int i ) { - Object result = null; + O result = null; if( elements != null ) { if( sortingDirection == DOWN ) @@ -424,7 +425,7 @@ public class Folder { * * @param element */ - public boolean isLastElement( Object element ) + public boolean isLastElement( O element ) { if( elements == null ) return false; @@ -437,7 +438,7 @@ public class Folder { * * @param element */ - public boolean isFirstElement( Object element ) + public boolean isFirstElement( O element ) { if( elements == null ) return false; diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index 1bec8a72e6..43e7efecc9 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -49,7 +49,6 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.Enumeration; import java.util.Iterator; -import java.util.ListIterator; import java.util.Locale; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -316,7 +315,7 @@ public class WebMail extends HttpServlet int state, smtpPort; POP3MailBox mailbox; MailCache mailCache; - Folder folder; + Folder<String> folder; String user, pass, host, error, info; String replyTo, replyCC; String subject, body, showUIDL; @@ -413,8 +412,7 @@ public class WebMail extends HttpServlet if( mailPart.multipart ) { if( mailPart.type.compareTo( "multipart/alternative" ) == 0 ) { MailPart chosen = null; - for( ListIterator li = mailPart.parts.listIterator(); li.hasNext(); ) { - MailPart subPart = (MailPart)li.next(); + for( MailPart subPart : mailPart.parts ) { if( subPart.type != null && subPart.type.compareTo( "text/plain" ) == 0 ) chosen = subPart; } @@ -423,16 +421,12 @@ public class WebMail extends HttpServlet return; } } - for( ListIterator li = mailPart.parts.listIterator(); li.hasNext(); ) { - MailPart part = (MailPart)li.next(); + for( MailPart part : mailPart.parts ) showPart( out, part, level + 1, html ); - } } else if( mailPart.message ) { - for( ListIterator li = mailPart.parts.listIterator(); li.hasNext(); ) { - MailPart part = (MailPart)li.next(); + for( MailPart part : mailPart.parts ) showPart( out, part, level + 1, html ); - } } else { boolean showBody = false; @@ -627,7 +621,7 @@ public class WebMail extends HttpServlet sessionObject.smtpPort = smtpPortNo; sessionObject.state = STATE_LIST; sessionObject.mailCache = new MailCache( sessionObject.mailbox ); - sessionObject.folder = new Folder(); + sessionObject.folder = new Folder<String>(); sessionObject.folder.setElements( sessionObject.mailbox.getUIDLs() ); sessionObject.folder.addSorter( SORT_ID, new IDSorter( sessionObject.mailCache ) ); sessionObject.folder.addSorter( SORT_SENDER, new SenderSorter( sessionObject.mailCache ) ); @@ -1052,8 +1046,8 @@ public class WebMail extends HttpServlet return part; if( part.multipart || part.message ) { - for( Iterator it = part.parts.iterator(); it.hasNext(); ) { - MailPart subPart = getMailPartFromHashCode( (MailPart)it.next(), hashCode ); + for( MailPart p : part.parts ) { + MailPart subPart = getMailPartFromHashCode( p, hashCode ); if( subPart != null ) return subPart; } @@ -1275,7 +1269,7 @@ public class WebMail extends HttpServlet if( sessionObject.state == STATE_LIST ) { processFolderButtons( sessionObject, request ); - for( Iterator it = sessionObject.folder.currentPageIterator(); it != null && it.hasNext(); ) { + for( Iterator<String> it = sessionObject.folder.currentPageIterator(); it != null && it.hasNext(); ) { String uidl = (String)it.next(); Mail mail = sessionObject.mailCache.getMail( uidl, MailCache.FETCH_HEADER ); if( mail != null && mail.error.length() > 0 ) { @@ -1520,8 +1514,7 @@ public class WebMail extends HttpServlet } if( multipart ) { - for( Iterator it = sessionObject.attachments.iterator(); it.hasNext(); ) { - Attachment attachment = (Attachment)it.next(); + for( Attachment attachment : sessionObject.attachments ) { body.append( "\r\n--" + boundary + "\r\nContent-type: " + attachment.getContentType() + "\r\nContent-Disposition: attachment; filename=\"" + attachment.getFileName() + "\"\r\nContent-Transfer-Encoding: " + attachment.getTransferEncoding() + "\r\n\r\n" ); body.append( attachment.getData() ); } @@ -1615,12 +1608,11 @@ public class WebMail extends HttpServlet if( sessionObject.attachments != null && !sessionObject.attachments.isEmpty() ) { boolean wroteHeader = false; - for( Iterator it = sessionObject.attachments.iterator(); it.hasNext(); ) { + for( Attachment attachment : sessionObject.attachments ) { if( !wroteHeader ) { out.println( "<tr><td colspan=\"2\" align=\"center\">" + _("Attachments:") + "</td></tr>" ); wroteHeader = true; } - Attachment attachment = (Attachment)it.next(); out.println( "<tr><td colspan=\"2\" align=\"center\"><input type=\"checkbox\" class=\"optbox\" name=\"check" + attachment.hashCode() + "\" value=\"1\"> " + attachment.getFileName() + "</td></tr>"); } } @@ -1682,7 +1674,7 @@ public class WebMail extends HttpServlet thSpacer + "<th>" + sortHeader( SORT_SIZE, _("Size"), sessionObject.imgPath ) + "</th></tr>" ); int bg = 0; int i = 0; - for( Iterator it = sessionObject.folder.currentPageIterator(); it != null && it.hasNext(); ) { + for( Iterator<String> it = sessionObject.folder.currentPageIterator(); it != null && it.hasNext(); ) { String uidl = (String)it.next(); Mail mail = sessionObject.mailCache.getMail( uidl, MailCache.FETCH_HEADER ); String link = "<a href=\"" + myself + "?" + SHOW + "=" + i + "\">"; diff --git a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java index ad98213094..e6a47cc0c2 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java +++ b/apps/susimail/src/src/i2p/susi/webmail/pop3/POP3MailBox.java @@ -59,8 +59,6 @@ public class POP3MailBox { private Object synchronizer = null; - private Object[] uidls = null; - /** * @param host * @param port @@ -275,7 +273,6 @@ public class POP3MailBox { uidlToID.clear(); uidlList.clear(); - uidls = null; readBuffer = sendCmdNa( "UIDL", DEFAULT_BUFSIZE ); if( readBuffer != null ) { @@ -295,7 +292,6 @@ public class POP3MailBox { } } } - uidls = uidlList.toArray(); } else { System.err.println( "Error getting UIDL list from pop3 server."); @@ -350,7 +346,6 @@ public class POP3MailBox { uidlList.clear(); uidlToID.clear(); sizes.clear(); - uidls = null; mails = 0; } /** @@ -649,7 +644,7 @@ public class POP3MailBox { private int getIDfromUIDL( String uidl ) { int result = -1; - Integer intObject = (Integer)uidlToID.get( uidl ); + Integer intObject = uidlToID.get( uidl ); if( intObject != null ) { result = intObject.intValue(); } @@ -662,15 +657,15 @@ public class POP3MailBox { */ public String getUIDLfromID( int id ) { - return (String)uidlList.get( id ); + return uidlList.get( id ); } /** * * @return A list of the available UIDLs. */ - public Object[] getUIDLs() + public String[] getUIDLs() { - return uidls; + return uidlList.toArray(new String[uidlList.size()]); } /** * -- GitLab