001 /* 002 * Copyright (C) 2012 eXo Platform SAS. 003 * 004 * This is free software; you can redistribute it and/or modify it 005 * under the terms of the GNU Lesser General Public License as 006 * published by the Free Software Foundation; either version 2.1 of 007 * the License, or (at your option) any later version. 008 * 009 * This software is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * You should have received a copy of the GNU Lesser General Public 015 * License along with this software; if not, write to the Free 016 * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 017 * 02110-1301 USA, or see the FSF site: http://www.fsf.org. 018 */ 019 020 package org.crsh.text.renderers; 021 022 import org.crsh.text.LineRenderer; 023 import org.crsh.text.Renderer; 024 import org.crsh.text.ui.LabelElement; 025 import org.crsh.text.ui.Overflow; 026 import org.crsh.text.ui.RowElement; 027 import org.crsh.text.ui.TableElement; 028 import org.crsh.util.Utils; 029 030 import java.io.File; 031 import java.text.SimpleDateFormat; 032 import java.util.Collections; 033 import java.util.Date; 034 import java.util.Iterator; 035 import java.util.List; 036 037 public class FileRenderer extends Renderer<File> { 038 039 @Override 040 public Class<File> getType() { 041 return File.class; 042 } 043 044 @Override 045 public LineRenderer renderer(Iterator<File> stream) { 046 047 // 048 List<File> files = Utils.list(stream); 049 Collections.sort(files); 050 TableElement table = new TableElement().overflow(Overflow.WRAP).rightCellPadding(1); 051 SimpleDateFormat format = new SimpleDateFormat("MMM dd HH:mm"); 052 Date date = new Date(); 053 054 // 055 for (File file : files) { 056 String mode = (file.isDirectory() ? "d" : "-") 057 + (file.canRead() ? "r" : "-") 058 + (file.canWrite() ? "w" : "-") 059 + (file.canExecute() ? "x" : "-") 060 ; 061 String length = Long.toString(file.length()); 062 date.setTime(file.lastModified()); 063 String lastModified = format.format(date); 064 table.row( 065 mode, 066 length, 067 lastModified, 068 file.getName() 069 ); 070 } 071 072 // 073 return table.renderer(); 074 } 075 }