You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by ps...@apache.org on 2004/05/20 05:58:08 UTC

cvs commit: logging-log4j/src/java/org/apache/log4j/chainsaw/vfs DirectoryListTableModel.java

psmith      2004/05/19 20:58:08

  Modified:    src/java/org/apache/log4j/chainsaw/vfs
                        DirectoryListTableModel.java
  Log:
  This model can now be poplutated and cleared of FileObjects, and can 
  render the details of the correctly.
  
  Revision  Changes    Path
  1.2       +104 -23   logging-log4j/src/java/org/apache/log4j/chainsaw/vfs/DirectoryListTableModel.java
  
  Index: DirectoryListTableModel.java
  ===================================================================
  RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/chainsaw/vfs/DirectoryListTableModel.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- DirectoryListTableModel.java	19 May 2004 00:11:08 -0000	1.1
  +++ DirectoryListTableModel.java	20 May 2004 03:58:08 -0000	1.2
  @@ -1,64 +1,145 @@
   package org.apache.log4j.chainsaw.vfs;
   
  +import java.text.NumberFormat;
   import java.util.ArrayList;
  +import java.util.Collection;
   import java.util.Date;
   import java.util.List;
   
   import javax.swing.table.AbstractTableModel;
   
   import org.apache.commons.vfs.FileObject;
  +import org.apache.commons.vfs.FileSystemException;
   import org.apache.log4j.helpers.LogLog;
   
  -/**
  +/**=
  + * Displays the file objects in a List in a TableModel.
    * @author psmith
    *
    */
   public class DirectoryListTableModel extends AbstractTableModel {
  -
  -    private final String[] COLUMN_NAMES = new String[] {"Name", "Size", "Last Modified"};
  -    
  -    private List data = new ArrayList();
  -    
  +	
  +	private final String[] COLUMN_NAMES = new String[] {"Name", "Size", "Last Modified"};
  +	
  +	private List data = new ArrayList();
  +	private NumberFormat nf = NumberFormat.getIntegerInstance();
  +	
  +	
   	/* (non-Javadoc)
   	 * @see javax.swing.table.TableModel#getColumnCount()
   	 */
   	public int getColumnCount() {
  -        return COLUMN_NAMES.length;
  +		return COLUMN_NAMES.length;
   	}
  -
  +	
   	/* (non-Javadoc)
   	 * @see javax.swing.table.TableModel#getRowCount()
   	 */
   	public int getRowCount() {
   		return data.size();
   	}
  -
  +	
   	/* (non-Javadoc)
   	 * @see javax.swing.table.TableModel#getValueAt(int, int)
   	 */
   	public Object getValueAt(int rowIndex, int columnIndex) {
  -        FileObject fileObject = (FileObject) data.get(rowIndex);
  -        
  -        try {
  -			switch (columnIndex) {
  -				case 0 :
  -					return fileObject.getName();
  -				case 1 :
  -					return new Long(fileObject.getContent().getSize());
  -				case 2 :
  -					return new Date(fileObject.getContent()
  -							.getLastModifiedTime());
  +		FileObject fileObject = (FileObject) data.get(rowIndex);
  +		
  +		try {
  +			if (fileObject.getType().hasChildren() || !fileObject.getType().hasContent()) {
  +				return handleDirectory(columnIndex, fileObject);
  +			} else {
  +				return handleFile(columnIndex, fileObject);
   			}
   		} catch (Exception e) {
  -			LogLog.error("error determining value", e);
  +			LogLog.error("error retrieving value", e);
  +		}
  +		return "{Error}";
  +		
  +		
  +	}
  +	/**
  +	 * @param columnIndex
  +	 * @param fileObject
  +	 */
  +	private Object handleDirectory(int columnIndex, FileObject fileObject) throws FileSystemException {
  +		switch (columnIndex) {
  +			case 0 :
  +				return fileObject.getName().getBaseName();
  +			case 1 :
  +				return "";
  +			case 2 :
  +				return new Date(fileObject.getContent()
  +						.getLastModifiedTime());
  +		}
  +		return null;		
  +	}
  +	
  +	/**
  +	 * @param columnIndex
  +	 * @param fileObject
  +	 * @return
  +	 */
  +	private Object handleFile(int columnIndex, FileObject fileObject) throws FileSystemException {
  +		switch (columnIndex) {
  +			case 0 :
  +				return fileObject.getName().getBaseName();
  +			case 1 :
  +				return formatFileSize(fileObject.getContent().getSize());
  +			case 2 :
  +				return new Date(fileObject.getContent()
  +						.getLastModifiedTime());
   		}
  -        return "{Error}";
  -        
  +		return null;
   	}
  +	
  +	/**
  +	 * Returns a formatted version of the file size
  +	 * @param l
  +	 * @return
  +	 */
  +	private Object formatFileSize(double size) {
  +		// TODO format should come from a preference model
  +		if(size <1024) {
  +			return nf.format(size);
  +		}else if(size < 1024*1024) {
  +			return nf.format((size/1024)) + "kb";   
  +		}else {
  +			return nf.format(size/(1024*1024))+"Mb";   
  +		}
  +	}
  +	
   	/* (non-Javadoc)
   	 * @see javax.swing.table.TableModel#getColumnName(int)
   	 */
   	public String getColumnName(int column) {
   		return COLUMN_NAMES[column];
  +	}
  +	
  +	/**
  +	 * Clears the underlying model and replaces it with the array, firing a TableDataChanged event in the process.
  +	 * @param objects
  +	 */
  +	public void setFiles(Collection objects) {
  +		this.data.clear();
  +		this.data.addAll(objects);
  +		fireTableDataChanged();
  +	}
  +	
  +	/**
  +	 * Clears the underlying model, and fires a TableDataChanged event.
  +	 */
  +	public void clear() {
  +		data.clear();
  +		fireTableDataChanged();
  +		
  +	}
  +	/**
  +	 * 
  +	 */
  +	public DirectoryListTableModel() {
  +		super();
  +		nf.setGroupingUsed(true);
  +		nf.setMaximumFractionDigits(2);
   	}
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org