dbdataimport.java

来自「Jive是基于JSP/JAVA技术构架的一个大型BBS论坛系统,这是Jive论坛」· Java 代码 · 共 1,395 行 · 第 1/4 页

JAVA
1,395
字号
    private class ForumHandler extends JiveDefaultHandler implements PropertyStore {        private boolean doCreateForum = false;        private boolean forumCreated = false;        private boolean isNameSet = false;        private boolean isCreationDateSet = false;        private boolean isModifiedDateSet = false;        private StringBuffer name = new StringBuffer();        private StringBuffer description = new StringBuffer();        private StringBuffer creationDate = new StringBuffer();        private StringBuffer modifiedDate = new StringBuffer();        public ForumHandler() {            super("Forum");        }        public void init() {            // Reset values.            forum = null;            forumCreated = false;            doCreateForum = false;            isNameSet = false;            isCreationDateSet = false;            isModifiedDateSet = false;            name.setLength(0);            description.setLength(0);            creationDate.setLength(0);            modifiedDate.setLength(0);        }        public void addProperty(String name, String value) {            try {                forum.setProperty(name,value);            }            catch (UnauthorizedException ue) {                ue.printStackTrace();            }            catch (Exception e) {                log("Exception adding forum property, name=" + name +                    ", value=" + value);                e.printStackTrace();            }        }        public void startElement(String uri, String localName, String tag, Attributes attribs)                throws SAXParseException        {            if (localName.equals("Name")) {                mode = NAME;                isNameSet = true;            }            else if (localName.equals("Description")) {                mode = DESCRIPTION;            }            else if (localName.equals("CreationDate")) {                mode = CREATION_DATE;                isCreationDateSet = true;            }            else if (localName.equals("ModifiedDate")) {                mode = MODIFIED_DATE;                isModifiedDateSet = true;            }            else if (localName.equals("PermissionList")) {                permissionListHandler.setParentHandler(this);                parser.setContentHandler(permissionListHandler);            }            else if (localName.equals("PropertyList")) {                propertyListHandler.setParentHandler(this);                propertyListHandler.setPropertyStore(this);                parser.setContentHandler(propertyListHandler);            }            else if (localName.equals("ThreadList")) {                threadListHandler.setParentHandler(this);                parser.setContentHandler(threadListHandler);            }        }        public void characters(char[] buf, int start, int length) throws SAXParseException {            switch (mode) {                case NAME:                    name.append(buf, start, length);                    break;                case DESCRIPTION:                    description.append(buf, start, length);                    break;                case CREATION_DATE:                    creationDate.append(buf, start, length);                    break;                case MODIFIED_DATE:                    modifiedDate.append(buf, start, length);                    break;            }            doCreateForum = (isNameSet && isCreationDateSet && isModifiedDateSet);            if (doCreateForum && !forumCreated) {                createForum();                forumCreated = true;            }        }        public void endElement(String uri, String localName, String tag)                throws SAXParseException        {            // reset the mode now -- (fixes whitespace padding)            mode = 0;            if (localName.equals("Forum")) {                // Let parent resume handling SAX events                parser.setContentHandler(parentHandler);            }        }        private void createForum() {            try {                forum = forumFactory.createForum(name.toString(),description.toString());                Date cDate = parseDate(creationDate.toString());                Date mDate = parseDate(modifiedDate.toString());                forum.setCreationDate(cDate);                forum.setModifiedDate(mDate);            }            catch (ForumAlreadyExistsException faee) {                log("Forum \"" + name + "\" already exists.");            }            catch (Exception e) {                log("Error creating forum.");                e.printStackTrace();            }        }    }    /**     * Handler for permission list elements.     */    private class PermissionListHandler extends JiveDefaultHandler {        public PermissionListHandler() {            super("PermissionList");        }        public void startElement(String uri, String localName, String tag, Attributes attribs)                throws SAXParseException        {            if (localName.equals("UserPermissionList")) {                userPermissionListHandler.setParentHandler(this);                parser.setContentHandler(userPermissionListHandler);            }            else if (localName.equals("GroupPermissionList")) {                groupPermissionListHandler.setParentHandler(this);                parser.setContentHandler(groupPermissionListHandler);            }        }    }    /**     * Handler for user permission list elements.     */    private class UserPermissionListHandler extends JiveDefaultHandler {        public UserPermissionListHandler() {            super("UserPermissionList");        }        public void startElement(String uri, String localName, String tag, Attributes attribs)                throws SAXParseException        {            if (localName.equals("UserPermission")) {                String usertype = attribs.getValue("usertype");                String username = attribs.getValue("username");                String permission = attribs.getValue("permission");                // Add the permission to the jive system                User user = null;                //Now, grant the user permission                try {                    int permType = ((Integer)jivePermissions.get(permission)).intValue();                    if (usertype.equals("ANONYMOUS")) {                        forum.getPermissionsManager().addAnonymousUserPermission(permType);                    }                    else if (usertype.equals("REGISTERED_USERS")) {                        forum.getPermissionsManager().addRegisteredUserPermission(permType);                    }                    else {                        try {                            user = userManager.getUser(username);                            forum.getPermissionsManager().addUserPermission(user,permType);                        }                        catch (UserNotFoundException unfe) {                            log("User '" + username + "' not found, won't add user permission");                        }                    }                }                catch (UnauthorizedException e) {                    log("Can't grant user permission, no authorization");                }            }        }    }    /**     * Handler for group permission list elements.     */    private class GroupPermissionListHandler extends JiveDefaultHandler {        public GroupPermissionListHandler() {            super("GroupPermissionList");        }        public void startElement(String uri, String localName, String tag, Attributes attribs)                throws SAXParseException        {            if (localName.equals("GroupPermission")) {                String groupname = attribs.getValue("groupname");                String permission = attribs.getValue("permission");                // Add the permission to the jive system                Group group = null;                try {                    group = groupManager.getGroup(groupname);                }                catch( GroupNotFoundException e ) {                }                // try to grant the group permission                try {                    forum.getPermissionsManager().addGroupPermission(                        group,                        ((Integer)jivePermissions.get(permission)).intValue()                    );                }                catch (UnauthorizedException ue) {                    log("Can't grant group permission, no authorization");                }            }        }    }    /**     * A handler for thread list elements.     */    private class ThreadListHandler extends JiveDefaultHandler {        public ThreadListHandler() {            super("ThreadList");        }        public void startElement(String uri, String localName, String tag,                Attributes attribs)                throws SAXParseException        {            if (localName.equals("Thread")) {                threadHandler.setParentHandler(this);                parser.setContentHandler(threadHandler);            }        }    }    /**     * A handler for thread elements.     */    private class ThreadHandler extends JiveDefaultHandler {        private StringBuffer creationDate = new StringBuffer();        private StringBuffer modifiedDate = new StringBuffer();        public ThreadHandler() {            super("Thread");        }        public void init() {            thread = null;            threadHasRootMessage = false;            creationDate.setLength(0);            modifiedDate.setLength(0);        }        public void addProperty( String name, String value ) {            try {                thread.setProperty(name,value);            }            catch (UnauthorizedException ue) {                ue.printStackTrace();            }        }        public void startElement(String uri, String localName, String tag, Attributes attribs)                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);            }        }    }    /**     * A handler for message elements.     */    private class MessageHandler extends JiveDefaultHandler implements PropertyStore {        private ForumMessage message = null;        private ForumMessage parentMessage = null;        private boolean isSubjectSet = false;        private boolean isBodySet = false;

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?