1 package org.roller.presentation.website.tags; 2 3 import org.apache.commons.logging.Log; 4 import org.apache.commons.logging.LogFactory; 5 import org.apache.struts.util.RequestUtils; 6 import org.roller.pojos.UserData; 7 import org.roller.presentation.RollerContext; 8 import org.roller.presentation.RollerRequest; 9 10 import java.io.File ; 11 import java.text.Collator ; 12 import java.text.DecimalFormat ; 13 import java.util.ResourceBundle ; 14 15 import javax.servlet.ServletContext ; 16 import javax.servlet.http.HttpServletRequest ; 17 import javax.servlet.jsp.JspException ; 18 import javax.servlet.jsp.JspWriter ; 19 import javax.servlet.jsp.tagext.Tag ; 20 import javax.servlet.jsp.tagext.TagSupport ; 21 22 25 public class FileManagerTag extends TagSupport 26 { 27 static final long serialVersionUID = 5118479809543177187L; 28 29 private transient ResourceBundle bundle = 30 ResourceBundle.getBundle("ApplicationResources"); 31 32 private static Log mLogger = 33 LogFactory.getFactory().getInstance(RollerRequest.class); 34 35 40 public int doStartTag() throws JspException 41 { 42 JspWriter pw = pageContext.getOut(); 43 try 44 { 45 ServletContext app = pageContext.getServletContext(); 46 47 String dir = RollerContext.getUploadDir( app ); 49 50 HttpServletRequest request = 51 (HttpServletRequest )pageContext.getRequest(); 52 RollerRequest rreq = RollerRequest.getRollerRequest(request); 53 UserData user = rreq.getUser(); 54 55 DecimalFormat format = (DecimalFormat ) DecimalFormat.getInstance(); 57 format.setMaximumFractionDigits(1); 58 format.setMinimumFractionDigits(0); 59 60 pw.println("<table class=\"rollertable\">"); 61 pw.println("<tr class=\"rHeaderTr\">"); 62 pw.println(" <th class=\"rollertable\" width=\"95%\">Filename</th>"); 63 pw.println(" <th class=\"rollertable\">Size</td>"); 64 pw.println(" <th class=\"rollertable\">Delete</td>"); 65 pw.println("</tr>"); 66 67 String [] files = new String [0]; 69 int numFiles = 0; 70 File d = new File (dir + user.getUserName()); 71 if (d.mkdirs() || d.exists()) 72 { 73 files = this.fileList(d); 74 75 if (files != null && 0 < files.length) 77 { 78 numFiles = files.length; 79 80 85 java.text.Collator locCollator = 88 java.text.Collator.getInstance( 89 rreq.getWebsite().getLocaleInstance()); 90 locCollator.setStrength(Collator.PRIMARY); 91 java.util.Arrays.sort(files, locCollator); 92 93 File checkSize = null; 94 float totalSize = 0; 95 String fileSize = null; 96 String fileLink = null; 97 for (int i = 0; i < files.length; i++) 98 { 99 checkSize = new File (d, files[i]); 100 totalSize += new Float (checkSize.length()).floatValue(); 101 fileSize = format.format( 102 new Float (checkSize.length()).floatValue() / 1024); 103 104 if (i+1 % 2 == 0) pw.print("<tr class=\"rollertable_even\">"); 105 else pw.print("<tr class=\"rollertable_odd\">"); 106 107 fileLink = RequestUtils.printableURL( 108 RequestUtils.absoluteURL( request, 109 RollerContext.getUploadPath( app ) + 110 "/" + user.getUserName() + "/" + files[i] ) ); 111 pw.print("<td class=\"rollertable\"><a HREF=\"" + 112 fileLink + "\">" + files[i] + "</a></td>"); 113 pw.print("<td class=\"rollertable\" align=\"right\">" + 114 fileSize + " kb</td>"); 115 pw.print("<td class=\"rollertable\" align=\"center\">" + 116 "<input type=\"checkbox\" name=\"deleteFiles\" " + 117 "value=\"" + files[i] + "\"></td>"); 118 119 pw.println("</tr>"); 120 } 121 122 fileSize = format.format(totalSize/1024); 124 pw.print("<tr><td align=\"right\">Total:</td>"); 125 pw.print("<td align=\"right\">" + 126 fileSize + " kb</td>"); 127 } 128 } 129 130 if (numFiles == 0) 131 { 132 pw.print("<tr class=\"rollertable\">"); 133 pw.print("<td class=\"rollertable\" colspan=\"3\">"); 134 pw.print(bundle.getString("uploadFiles.noFiles")+"</td>"); 135 pw.println("</tr>"); 136 } 137 pw.println("</table>"); 138 } 139 catch (Exception e) 140 { 141 mLogger.error("Displaying files",e); 142 throw new JspException (e); 143 } 144 return Tag.SKIP_BODY; 145 } 146 147 150 public String [] fileList(File d) 151 { 152 File [] files = null; java.util.ArrayList images = new java.util.ArrayList (); 154 155 files = d.listFiles(); 156 for (int i=0; i<files.length; i++) 157 { 158 if (!files[i].isDirectory()) images.add(files[i].getName()); 159 } 160 161 String [] myFiles = new String [0]; 162 return (String []) images.toArray(myFiles); 163 164 } 165 } 166 167 | Popular Tags |