|
What this is
Other links
The source code
/*
* 05/23/2003
*
* Copyright (C) 2003 Paolo Giarrusso
* blaisorblade_work@yahoo.it
* www.jext.org
*
* 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.
*/
import org.jext.misc.*;
import com.microstar.xml.*;
import java.io.Reader;
import java.util.*;
import java.text.*;
import java.net.URL;
public class PlugReader extends HandlerBase implements AbstractPlugReader {
private boolean loaded = false;
private PluginDesc[] plugins = null;
private String[] mirrors = null;
public boolean loadXml(Reader in) {
XmlParser parser = new XmlParser();
parser.setHandler(this);
try {
parser.parse(null, null, in);
loaded = true;
return true;
} catch (Exception e) { //the parser throws ONLY this exception. So I can't do
//anything else :-((( !
e.printStackTrace();
loaded = false;
return false;
}
}
public String[] getMirrors() {
if (!loaded)
return null;
return mirrors;
}
public PluginDesc[] getPlugins() {
if (!loaded)
return null;
return plugins;
}
private Format buildFormatter(String urlTempl) {
return new MessageFormat(urlTempl);
}//must return the template string wrapped inside a class.
//XML parsing part.
ArrayList plugList, authors, deps, mirrorList;//, files;
PluginDesc currPlugin;
Format currUrlTemplate;
StringBuffer content;
HashMap attribs;
public void startDocument() {
plugList = new ArrayList(40);
authors = new ArrayList(5);
deps = new ArrayList(5);
//files = new ArrayList(3);
mirrorList = new ArrayList(10);
attribs = new HashMap(6);
content = new StringBuffer(1000);
}
public void endDocument() {
plugins = (PluginDesc[]) plugList.toArray(new PluginDesc[0]);
mirrors = (String[]) mirrorList.toArray(new String[0]);
plugList = null;
attribs = null;
content = null;
authors = null;
deps = null;
//files = null;
}
public void attribute(String atName, String value, boolean isSpecified) {
attribs.put(atName, value);
}
public void startElement(String elname) {
content.setLength(0);
if (elname.equals("plugin")) {
currPlugin = new PluginDesc((String) attribs.get("name"), (String) attribs.get("version"),
(String) attribs.get("displayName"));
currPlugin.setUrlFormatter(currUrlTemplate);
} else if (elname.equals("dependStr")) {
deps.add((String) attribs.get("value"));
} else if (elname.equals("file")) {
int size;
String type = (String) attribs.get("type");
String name = (String) attribs.get("name");
String _size = (String) attribs.get("size");
if (! ( _size == null || "".equals(_size) ) )
size = Integer.parseInt(_size);
else
size = -1;
if (type.equals("bin"))
currPlugin.setBinName(name, size);
else
currPlugin.setSrcName(name, size);
} else if (elname.equals("mirror")) {
mirrorList.add((String) attribs.get("name"));
} else if (elname.equals("author")) {
authors.add(new PluginAuthor((String) attribs.get("email"), (String) attribs.get("name")));
} else if (elname.equals("plugList")) {
currUrlTemplate = buildFormatter((String) attribs.get("downloadUrlTempl"));
}
}
public void charData(char[] ch, int start, int length) {
content.append(ch, start, length);
}
public void endElement(String elname) {
if (elname.equals("plugin")) {
currPlugin.setDeps( (String []) deps.toArray(new String[0]));
currPlugin.setAuthors( (PluginAuthor []) authors.toArray(new PluginAuthor[0]));
plugList.add(currPlugin);
authors.clear();
deps.clear();
currPlugin = null;
} else if (elname.equals("description"))
currPlugin.setDesc(content.toString());
else if (elname.equals("htmlauthor"))
authors.add(new PluginAuthor(content.toString()));
attribs.clear();
}
}
|
| ... 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.