package org.exoplatform.forum.extras.injection.forum; import java.util.Arrays; import java.util.HashMap; import org.exoplatform.forum.service.Category; import org.exoplatform.forum.service.Forum; import org.exoplatform.forum.service.MessageBuilder; import org.exoplatform.forum.service.Topic; public class MembershipInjector extends AbstractForumInjector { /** . */ private static final String TYPE = "type"; /** . */ private static final String TO_TYPE = "toType"; /** . */ private static final String TYPE_PREFIX = "typePrefix"; /** . */ private static final String FROM_USER = "fromUser"; /** . */ private static final String TO_USER = "toUser"; /** . */ private static final String USER_PREFIX = "userPrefix"; private int toType; private String typePrefix; private int fromUser; private int toUser; private String userPrefix; @Override public void inject(HashMap<String, String> params) throws Exception { String type = params.get(TYPE); if (type == null | type.length() <= 0) { getLog().info("type value is wrong! Please set it exactly with 'category', 'forum', or 'topic' value. Aborting injection ..."); return; } // this.toType = param(params, TO_TYPE); this.typePrefix = params.get(TYPE_PREFIX); this.fromUser = param(params, FROM_USER); this.toUser = param(params, TO_USER); this.userPrefix = params.get(USER_PREFIX); if ("category".equals(type)) { init(userPrefix, typePrefix, null, null, null, 0); // injectCategory(); } else if ("forum".equals(type)) { init(userPrefix, null, typePrefix, null, null, 0); // injectForum(); } else if ("topic".equals(type)) { init(userPrefix, null, null, typePrefix, null, 0); // injectTopic(); } else { getLog().info("type value is wrong! Please set it exactly with 'category', 'forum', or'topic'. Aborting injection ..."); return; } } private void injectCategory() throws Exception { // String categoryName = categoryBase + toType; Category cat = getCategoryByName(categoryName); if (cat == null) { getLog().info("category name is '" + categoryName + "' is wrong. Please set it exactly. Aborting injection ..."); return; } // String[] userNames = getUserNames(); if (userNames == null | userNames.length <= 0) { getLog().info("Don't assign permission any user to '" + categoryName + "' forum. Please set it exactly. Aborting injection ..."); return; } // cat = forumService.getCategory(cat.getId()); cat.setModerators(userNames); cat.setCreateTopicRole(userNames); cat.setViewer(userNames); cat.setPoster(userNames); forumService.saveCategory(cat, false); getLog().info("Assign permission '" + Arrays.toString(userNames) + "' user(s) into '" + categoryName + "' category."); } private void injectForum() throws Exception { // String forumName = forumBase + toType; Forum forum = getForumByName(forumName); if (forum == null) { getLog().info("forum name is '" + forumName + "' is wrong. Please set it exactly. Aborting injection ..."); return; } Category cat = getCategoryByForumName(forumName); // String[] userNames = getUserNames(); if (userNames == null | userNames.length <=0) { getLog().info("Don't assign permission any user to '" + forumName + "' forum. Please set it exactly. Aborting injection ..."); return; } // forum = forumService.getForum(cat.getId(), forum.getId()); forum.setModerators(userNames); forum.setCreateTopicRole(userNames); forum.setViewer(userNames); forum.setPoster(userNames); forumService.saveForum(cat.getId(), forum, false); getLog().info("Assign permission '" + Arrays.toString(userNames) + "' user(s) into '" + forumName + "' forum in '" + cat.getCategoryName() + "' category."); } private void injectTopic() throws Exception { // String topicName = topicBase + toType; Topic topic = getTopicByName(topicName); if (topic == null) { getLog().info("topic name is '" + topicName + "' is wrong. Please set it exactly. Aborting injection ..."); return; } Forum forum = getForumByTopicName(topicName); Category cat = getCategoryByForumName(forum.getForumName()); // String[] userNames = getUserNames(); if (userNames == null | userNames.length <= 0) { getLog().info("Don't assign permission any user to '" + topicName + "' topic. Please set it exactly. Aborting injection ..."); return; } // topic = forumService.getTopic(cat.getId(), forum.getId(), topic.getId(), null); topic.setCanPost(userNames); topic.setCanView(userNames); topic.setEmailNotification(userNames); forumService.saveTopic(cat.getId(), forum.getId(), topic, false, false, new MessageBuilder()); getLog().info("Assign permission '" + Arrays.toString(userNames) + "' user(s) into '" + topicName + "' topic in '" + forum.getForumName() + "' forum."); } private String[] getUserNames() throws Exception { // String[] result = new String[toUser - fromUser + 1]; int userIdx = 0; for(int i = fromUser; i <= toUser; i++) { String username = userBase + i; if (userHandler.findUserByName(username) != null) { result[userIdx] = username; userIdx++; } } return result; } }