Milán Major

netscape-revival

1 branch
Code

sun-java/classsrc/sun/net/www/MimeEntry.java

/*
 * @(#)MimeEntry.java	1.8 95/08/22
 * 
 * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
 * 
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for NON-COMMERCIAL purposes and without fee is hereby
 * granted provided that this copyright notice appears in all copies. Please
 * refer to the file "copyright.html" for further important copyright and
 * licensing information.
 * 
 * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
 * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
 * OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY
 * LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR
 * ITS DERIVATIVES.
 */

package sun.net.www;
import java.net.URL;
import java.io.*;

class MimeEntry {
    String name;
    String command;
    String TempNameTemplate;
    MimeEntry next;
    boolean starred;

    MimeEntry (String nm, String cmd) {
	this(nm, cmd, null);
    }
    MimeEntry (String nm, String cmd, String tnt) {
	name = nm;
	command = cmd;
	TempNameTemplate = tnt;
	if (nm != null && nm.length() > 0 && nm.charAt(nm.length() - 1) == '/')
	    starred = true;
    }

    Object launch(java.net.URLConnection urlc, MimeTable mt) {
	if (command.equalsIgnoreCase("loadtofile")) {
	    try {
		return urlc.getInputStream();
	    } catch(Exception e) {
		return "Load to file failed:\n" + e;
	    }
	}
	if (command.equalsIgnoreCase("plaintext")) {
	    try {
		StringBuffer sb = new StringBuffer();
		InputStream is = urlc.getInputStream();
		int c;
		try {
		    while ((c = is.read()) >= 0)
			sb.append((char) c);
		} catch(IOException e) {
		}
		return sb.toString();
	    } catch(IOException e) {
		return "Failure fetching file:\n" + e.toString();
	    }
	}
	String message = command;
	int fst = message.indexOf(' ');
	if (fst > 0)
	    message = message.substring(0, fst);
	return new MimeLauncher(this, urlc, mt.TempTemplate(),
				message);
	// new MimeLauncher(this, is, u, mt.TempTemplate()).start();
	// String message = command;
	// int fst = message.indexOf(' ');
	// if (fst > 0)
	// message = message.substring(0, fst);
	// System.out.print("Launched " + message + "\n");
	// return null;
    }

    boolean matches(String type) {
	if (starred)
	    return type.startsWith(name);
	else
	    return type.equals(name);
    }
}