⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dbdataimport.java

📁 java开发的一套非常好用的oa系统
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
                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 + -