/*
 * @(#)FileLister.java        1.82 04/20/2008
 *
 * All rights reserved.
 *
 */

import java.io.*;
import java.net.*;
import java.util.regex.*;
import java.util.*;
/**
 * Description here...
 * @since 04/20/2008
 * @version 0.1
 * @author: Pardz
 */

class FileLister {

	PrintStream ps = System.out;

	private static final String FILESEP = File.separator;
	private static final String LINESEP = System.getProperty("line.separator");
	private static final String PATHSEP = System.getProperty("path.separator");
	private static final String NEWLINE = "\r\n";

	private BufferedWriter saveToFile = null;
	private File tempFile;

	private String[] directories;
	private String currentDirectory = null;


	private String root = null;

	public static void main(String[] args) {
		FileLister _fl = new FileLister(args[0]);
		_fl.createFile("geyms.html");
		_fl.begin(args[0]);
		_fl.close();
	}

	public FileLister(String root) {
		this.root = root;
	}

	private void createFile(String file_){
		File _tempFile = new File(root+FILESEP+file_);
		try {
			saveToFile = new BufferedWriter(new FileWriter(_tempFile));
		}catch(IOException e){
			ps.println(e);
		}
	}

	public void begin(String args_){

		StringBuilder _sb = new StringBuilder();
		_sb.append("<html>");
		_sb.append("<head>");
		_sb.append("<meta http-equiv=");
		_sb.append('"');
		_sb.append("Content-Type");
		_sb.append('"');
		_sb.append("content=");
		_sb.append('"');

		_sb.append("text/html; charset=windows-1252");
		_sb.append('"');
		_sb.append(">");
		_sb.append('"');
		_sb.append("<title>Pardz e-mail: pardzki@yahoo.com</title>");
		_sb.append("<body>");
		_sb.append(NEWLINE);
		_sb.append("<center>");
		_sb.append("<b>HALO HALONG LARO NA NAKALAP NI Pardz</b>");
		_sb.append("<br>");

		write(_sb.toString());

		list(args_);

		_sb = new StringBuilder();
		_sb.append("</center>");
		_sb.append(NEWLINE);
		_sb.append("</body>");
		_sb.append("</html>");
		write(_sb.toString());
	}

	public void list(String root_){
		File _currentDir = new File(root_);
		File[] _files = _currentDir.listFiles();

		//try {
		//	java.util.Arrays.sort(_files);
		//}catch(NullPointerException e){
		//	return;
		//}

		_files = sortFile2Folder(_files);

		for(int i=0; i<_files.length; i++){
			try {
				String _trim = _files[i].toString().substring(root.length(),_files[i].toString().length());

				if(_files[i].isDirectory()){
					write(filFolder(_files[i]));
					list(_files[i].toString());
				} else {
					write(link(_files[i]));
				}
			} catch (NullPointerException e){
				ps.println("nulllllllllllllll");
			}
		}
	}

	/**
	* Sort in file to folder ascending order.
	**/
	private File[] sortFile2Folder(File files_[]) {
		Vector _vecFile = new Vector();
		Vector _vecFolder = new Vector();
		for(int i=0; i<files_.length; i++){
			if(files_[i].isDirectory()){
				_vecFolder.addElement(files_[i]);
			} else {
				_vecFile.addElement(files_[i]);
			}
		}

		File[] _file = new File[files_.length];


		int _i = 0;
		for (Enumeration  e = _vecFile.elements(); e.hasMoreElements();) {
		   	//System.out.println(e.nextElement());
		   	_file[_i++] = (File)e.nextElement();
		}
		for (Enumeration  e = _vecFolder.elements(); e.hasMoreElements();) {
		   	//System.out.println(e.nextElement());
		   	_file[_i++] = (File)e.nextElement();
		}
		return _file;
	}

	private void write(String write_){
		try{
			saveToFile.write(write_,0,write_.length());
		}catch(IOException e){
		}
	}

	public void close() {
		try{
			saveToFile.flush();
			saveToFile.close();
		}catch(IOException e){
			System.err.println("Mali "+e);
		}
	}

	private String link(File file_){

		String _trim = file_.toString().substring(root.length()+1,file_.toString().length());

		_trim = _trim.replace(File.separatorChar,'/');

		StringBuilder _sb = new StringBuilder();
		_sb.append("<a href=");
		_sb.append('"');

		_sb.append(_trim);
		_sb.append('"');
		_sb.append(">");

		_sb.append(file_.getName().toString());
		_sb.append("</a><br>");
		_sb.append(NEWLINE);
		return _sb.toString();
	}

	private String filFolder(File file_){
		StringBuilder _sb = new StringBuilder();
		_sb.append("</br><b>");
		_sb.append(file_.getName().toUpperCase());
		_sb.append("</b></br>");
		return _sb.toString();
	}
}