|
What this is
Other links
The source code
/*
* PluginListHandler.java - XML handler for the plugin list
* Copyright (C) 2001 Slava Pestov
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
package org.gjt.sp.jedit.pluginmgr;
import com.microstar.xml.*;
import java.io.*;
import java.util.Stack;
import org.gjt.sp.util.Log;
class PluginListHandler extends HandlerBase
{
PluginListHandler(PluginList pluginList, String path)
{
this.pluginList = pluginList;
this.path = path;
stateStack = new Stack();
}
public Object resolveEntity(String publicId, String systemId)
{
if("plugins.dtd".equals(systemId))
{
// this will result in a slight speed up, since we
// don't need to read the DTD anyway, as AElfred is
// non-validating
return new StringReader("");
/* try
{
return new BufferedReader(new InputStreamReader(
getClass().getResourceAsStream(
"/org/gjt/sp/jedit/pluginmgr/plugins.dtd")));
}
catch(Exception e)
{
Log.log(Log.ERROR,this,"Error while opening"
+ " plugins.dtd:");
Log.log(Log.ERROR,this,e);
} */
}
return null;
}
public void attribute(String aname, String value, boolean isSpecified)
{
aname = (aname == null) ? null : aname.intern();
value = (value == null) ? null : value.intern();
if(aname == "NAME")
name = value;
else if(aname == "JAR")
jar = value;
else if(aname == "VERSION")
version = value;
else if(aname == "DATE")
date = value;
else if(aname == "OBSOLETE")
obsolete = ("TRUE".equals(value));
else if(aname == "WHAT")
depWhat = value;
else if(aname == "FROM")
depFrom = value;
else if(aname == "TO")
depTo = value;
else if(aname == "PLUGIN")
depPlugin = value;
else if(aname == "SIZE")
{
size = Integer.parseInt(value);
if(size == 0)
Log.log(Log.WARNING,this,"SIZE = 0");
}
}
public void doctypeDecl(String name, String publicId,
String systemId) throws Exception
{
if("PLUGINS".equals(name))
return;
Log.log(Log.ERROR,this,path + ": DOCTYPE must be PLUGINS");
}
public void charData(char[] c, int off, int len)
{
String tag = peekElement();
String text = new String(c, off, len);
if(tag == "DESCRIPTION")
{
description = text;
}
else if(tag == "PLUGIN_SET_ENTRY")
pluginSetEntry = text;
else if(tag == "AUTHOR")
{
if(author != null && author.length() != 0)
author = author + ", " + text;
else
author = text;
}
else if(tag == "DOWNLOAD")
download = text;
else if(tag == "DOWNLOAD_SOURCE")
downloadSource = text;
}
public void startElement(String tag)
{
tag = pushElement(tag);
if(tag == "PLUGIN_SET")
{
description = null;
pluginSet = new PluginList.PluginSet();
pluginSet.name = name;
}
else if(tag == "PLUGIN")
{
description = null;
author = null;
branch = null;
plugin = new PluginList.Plugin();
}
else if(tag == "BRANCH")
{
download = null;
branch = new PluginList.Branch();
}
else if(tag == "DOWNLOAD")
downloadSize = size;
else if(tag == "DOWNLOAD_SOURCE")
downloadSourceSize = size;
}
public void endElement(String tag)
{
if(tag == null)
return;
else
tag = tag.intern();
popElement();
if(tag == "PLUGIN_SET")
{
pluginList.addPluginSet(pluginSet);
pluginSet = null;
pluginSetEntry = null;
}
else if(tag == "PLUGIN_SET_ENTRY")
{
pluginSet.plugins.addElement(pluginSetEntry);
pluginSetEntry = null;
}
else if(tag == "PLUGIN")
{
plugin.jar = jar;
plugin.name = name;
plugin.author = author;
plugin.description = description;
pluginList.addPlugin(plugin);
jar = null;
name = null;
author = null;
}
else if(tag == "BRANCH")
{
branch.version = version;
branch.date = date;
branch.download = download;
branch.downloadSize = downloadSize;
branch.downloadSource = downloadSource;
branch.downloadSourceSize = downloadSourceSize;
branch.obsolete = obsolete;
plugin.branches.addElement(branch);
version = null;
download = null;
obsolete = false;
}
else if(tag == "DEPEND")
{
PluginList.Dependency dep = new PluginList.Dependency(
depWhat,depFrom,depTo,depPlugin);
branch.deps.addElement(dep);
depWhat = null;
depFrom = null;
depTo = null;
depPlugin = null;
}
}
public void startDocument()
{
try
{
pushElement(null);
}
catch (Exception e)
{
e.printStackTrace();
}
}
public void endDocument()
{
pluginList.finished();
}
// end HandlerBase implementation
// private members
private String path;
private PluginList pluginList;
private PluginList.PluginSet pluginSet;
private String pluginSetEntry;
private PluginList.Plugin plugin;
private String jar;
private String author;
private PluginList.Branch branch;
private boolean obsolete;
private String version;
private String date;
private String download;
private int downloadSize;
private String downloadSource;
private int downloadSourceSize;
private int size;
private String depWhat;
private String depFrom;
private String depTo;
private String depPlugin;
private String name;
private String description;
private Stack stateStack;
private String pushElement(String name)
{
name = (name == null) ? null : name.intern();
stateStack.push(name);
return name;
}
private String peekElement()
{
return (String) stateStack.peek();
}
private String popElement()
{
return (String) stateStack.pop();
}
}
|
| ... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2024 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.