📄 dbdataimport.java
字号:
throws SAXParseException
{
if (localName.equals("CreationDate")) {
mode = CREATION_DATE;
}
else if (localName.equals("ModifiedDate")) {
mode = MODIFIED_DATE;
}
else if (localName.equals("Message")) {
messageHandler.addParentHandler(this);
parser.setContentHandler(messageHandler);
}
}
public void characters(char[] buf, int start, int length)
throws SAXParseException
{
switch (mode) {
case CREATION_DATE:
creationDate.append(buf, start, length);
break;
case MODIFIED_DATE:
modifiedDate.append(buf, start, length);
break;
}
}
public void endElement(String uri, String localName, String tag)
throws SAXParseException
{
// reset the mode now -- (fixes whitespace padding)
mode = 0;
if (localName.equals("Thread")) {
//Set the remaining properties of the thread (at this point,
//the thread should have been created in the message handler)
if (thread != null) {
try {
Date cDate = parseDate(creationDate.toString());
Date mDate = parseDate(modifiedDate.toString());
thread.setCreationDate(cDate);
thread.setModifiedDate(mDate);
}
catch (Exception e) {
e.printStackTrace();
}
}
parser.setContentHandler(parentHandler);
}
}
}
/**
*
*/
private class MessageHandler extends DefaultHandler implements PropertyStore {
private ForumMessage message = null;
private ForumMessage parentMessage = null;
private boolean isSubjectSet = false;
private boolean isBodySet = false;
private boolean isCreationDateSet = false;
private boolean isModifiedDateSet = false;
private boolean doCreateMessage = false;
private boolean messageCreated = false;
private StringBuffer subject = new StringBuffer();
private StringBuffer body = new StringBuffer();
private StringBuffer username = new StringBuffer();
private StringBuffer creationDate = new StringBuffer();
private StringBuffer modifiedDate = new StringBuffer();
private HashMap properties = new HashMap();
private LinkedList parentHandlerList = new LinkedList();
public void addParentHandler(DefaultHandler parentHandler) {
parentHandlerList.addFirst(parentHandler);
//Now, reset all fields.
message = null;
parentMessage = null;
isSubjectSet = false;
isBodySet = false;
isCreationDateSet = false;
isModifiedDateSet = false;
doCreateMessage = false;
messageCreated = false;
subject.setLength(0);
body.setLength(0);
username.setLength(0);
creationDate.setLength(0);
modifiedDate.setLength(0);
properties = new HashMap();
}
public void setParentMessage(ForumMessage message) {
parentMessage = message;
}
public void addProperty(String name, String value) {
if (message != null) {
try {
message.setProperty(name,value);
}
catch (UnauthorizedException ue) {}
}
else {
print("Message was null, can't add property.");
}
}
public void startElement(String uri, String localName, String tag,
Attributes attribs)
throws SAXParseException
{
// Check for various elements under a <Message> tag
if (localName.equals("Subject")) {
mode = SUBJECT;
isSubjectSet = true;
}
else if (localName.equals("Body")) {
mode = BODY;
isBodySet = true;
}
else if (localName.equals("Username")) {
mode = USERNAME;
}
else if (localName.equals("CreationDate")) {
mode = CREATION_DATE;
isCreationDateSet = true;
}
else if (localName.equals("ModifiedDate")) {
mode = MODIFIED_DATE;
isModifiedDateSet = true;
}
else if (localName.equals("PropertyList")) {
// get any extended message properties.
propertyListHandler.setParentHandler(this);
propertyListHandler.setPropertyStore(this);
parser.setContentHandler(propertyListHandler);
}
else if (localName.equals("MessageList")) {
// get child messages (if any)
messageListHandler.addParentHandler(this);
messageListHandler.addMessage(message);
parser.setContentHandler(messageListHandler);
}
}
public void characters(char[] buf, int start, int length)
throws SAXParseException
{
switch (mode) {
case SUBJECT:
subject.append(buf, start, length);
break;
case BODY:
body.append(buf, start, length);
break;
case USERNAME:
username.append(buf, start, length);
break;
case CREATION_DATE:
creationDate.append(buf, start, length);
break;
case MODIFIED_DATE:
modifiedDate.append(buf, start, length);
break;
}
// check and see if we can create a message
doCreateMessage = (isSubjectSet && isBodySet && isCreationDateSet && isModifiedDateSet);
}
public void endElement(String uri, String localName, String tag)
throws SAXParseException
{
// reset the mode now -- (fixes whitespace padding)
mode = 0;
// create a message, if not created already
if (doCreateMessage && !messageCreated) {
createMessage();
messageCreated = true;
}
if (localName.equals("Message")) {
//Pop a parentHandler off the stack and return flow of control
//to it.
DefaultHandler parentHandler = (DefaultHandler)parentHandlerList.removeFirst();
parser.setContentHandler(parentHandler);
}
}
private void createMessage() {
boolean userNotFound = false;
//first, get the message user. If the user fails to load, we'll
//make this user an 'anonymous' user
String uName = username.toString();
User user = null;
if (!uName.equals("")) {
try {
user = userManager.getUser(uName);
}
catch (UserNotFoundException unfe) {
userNotFound = true;
}
}
try {
if (user != null) {
message = forumFactory.createMessage(user);
}
else {
message = forumFactory.createMessage();
}
// set the properties of the message
message.setSubject(subject.toString());
message.setBody(body.toString());
Date cDate = parseDate(creationDate.toString());
Date mDate = parseDate(modifiedDate.toString());
message.setCreationDate(cDate);
message.setModifiedDate(mDate);
if(userNotFound) {
addProperty("username",uName);
}
}
catch (Exception e) {
e.printStackTrace();
}
// set this message as the root message of the current
// thread if the current thread doesn't have a root message
if (!threadHasRootMessage) {
try {
thread = forumFactory.createThread(message);
forum.addThread(thread);
threadHasRootMessage = true;
}
catch (UnauthorizedException ue) {
ue.printStackTrace();
}
}
else {
if (parentMessage != null) {
try {
thread.addMessage(parentMessage,message);
}
catch (UnauthorizedException ue) {}
}
}
}
}
/**
*
*/
private class MessageListHandler extends DefaultHandler {
private LinkedList messageList = new LinkedList();
private LinkedList parentHandlerList = new LinkedList();
public void addParentHandler(DefaultHandler parentHandler) {
parentHandlerList.addFirst(parentHandler);
}
public void addMessage(ForumMessage message) {
messageList.addFirst(message);
}
public void startElement(String uri, String localName, String tag, Attributes attribs)
throws SAXParseException
{
if (localName.equals("Message")) {
messageHandler.addParentHandler(this);
ForumMessage parentMessage = (ForumMessage)messageList.getFirst();
messageHandler.setParentMessage(parentMessage);
parser.setContentHandler(messageHandler);
}
}
public void endElement(String uri, String localName, String tag)
throws SAXParseException
{
if (localName.equals("MessageList")) {
//Pop a parentHandler off the stack and return flow of control
//to it. We also pop a message of the messageList since it will
//no longer need to be used.
DefaultHandler parentHandler = (DefaultHandler)parentHandlerList.removeFirst();
messageList.removeFirst();
parser.setContentHandler(parentHandler);
}
}
}
/**
*
*/
private class PropertyListHandler extends DefaultHandler {
private PropertyStore propertyStore;
private ContentHandler parentHandler;
/**
* Sets the parent handler of the handler. Control will be passed back
* to the parent when this handler is done parsing the XML it knows
* how to handle.
*/
public void setParentHandler(DefaultHandler parentHandler) {
this.parentHandler = parentHandler;
}
/**
* Sets the property store that properties will be sent to.
*/
public void setPropertyStore(PropertyStore propertyStore) {
this.propertyStore = propertyStore;
}
public void startElement(String uri, String localName, String tag, Attributes attribs)
throws SAXParseException
{
if (localName.equals("Property")) {
String propName = attribs.getValue("name");
String propValue = attribs.getValue("value");
propertyStore.addProperty(propName,propValue);
}
}
public void endElement(String uri, String localName, String tag)
throws SAXParseException
{
if (localName.equals("PropertyList")) {
parser.setContentHandler(parentHandler);
}
}
}
/**
*
*/
private interface PropertyStore {
public void addProperty( String name, String value );
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -