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 + -
显示快捷键?