其实在shark中创建用户很简单,所有函数已经写好了,只要知道怎么调用就可以了。下面就是我写的一个创建用户的类。
/* * Created Date 2005-1-7 * */ package hk.com.csl.business;
/** * <p>Title: Shark Test</p> * <p>Description: Shark Test System</p> * <p>Copyright: Copyright (c) 2005</p> * @author Jason * @version 1.0 */
import java.util.*;
import org.enhydra.shark.api.client.wfmodel.*; import org.enhydra.shark.api.client.wfservice.*;
import java.io.FileInputStream; import org.enhydra.shark.Shark; import org.enhydra.shark.SharkConstants; import org.enhydra.shark.api.client.wfbase.BaseException; import org.enhydra.shark.api.TransactionException; import org.enhydra.shark.api.SharkTransaction; import org.enhydra.shark.api.RootException;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping;
import hk.com.csl.business.interfaces.IRegService; import hk.com.csl.logger.*; import hk.com.csl.web.form.RegForm;
public class RegServiceImp implements IRegService { private static boolean _debug_ = false; private static boolean sharkConfigured = false; private static String engineName = "SharkExampleJSP";
private static IRegService instance; public static IRegService getInstance(){ if (null == instance) instance = new RegServiceImp(); return instance; } //取得配置文件并初始化 private static void init(String realPath){ if (_debug_) System.err.println("#_init_#"); if (!sharkConfigured){ Properties p = new Properties(); try { p.load(new FileInputStream(realPath +"/conf/Shark.conf")); realPath = replaceAll(realPath, "\\", "/"); System.out.println("realpath=" +realPath); for (Iterator it = p.keySet().iterator(); it.hasNext();) { String key = (String)it.next(); String value = p.getProperty(key); System.out.println("value=" +value); if (0 <= value.indexOf("@@")) { if (_debug_) System.err.print("key is "+key+", old value is"+value); value = replaceAll(value, "@@/", realPath); p.setProperty(key, value); if (_debug_) System.err.println(", new value is"+value); } } } catch (Exception e) { e.printStackTrace(); } p.setProperty("enginename", engineName); Shark.configure(p); sharkConfigured = true; } }
/** * * @param form * @param request * @param response * @return boolean doesCreateUserSuccess */
//创建用户并判断是否创建成功。 public boolean createUser(ActionForm form, HttpServletRequest request, HttpServletResponse response) { boolean doesCreateUserSuccess = false; String realPath = request.getRealPath("/"); Logger.getBusinessLogger().debug("realpath =" +realPath); RegForm regform = (RegForm) form;
String userName = regform.getUsername(); Logger.getBusinessLogger().debug("Username="+userName); String pwd = regform.getPasswd(); Logger.getBusinessLogger().debug("password="+pwd); String firstname = regform.getFirstname(); Logger.getBusinessLogger().debug("firstname="+firstname); String lastname = regform.getLastname(); Logger.getBusinessLogger().debug("lastname="+lastname); String email = regform.getEmail(); Logger.getBusinessLogger().debug("email="+email); String groupName = regform.getGroupname(); Logger.getBusinessLogger().debug("groupName="+groupName); try { //初始化 init(realPath); //判断组是否存在,如果没有就创建组 UserGroupAdministration uga= Shark.getInstance() .getAdminInterface() .getUserGroupAdministration(); //判断用户是否存在,如果不存在则创建新的用户。 if (!uga.doesGroupExist(groupName)) { uga.createGroup(groupName,"test group"); } if (!uga.doesUserExist(userName)) { uga.createUser(groupName, userName, pwd,firstname, lastname,email); } doesCreateUserSuccess = true; } catch (Throwable t) {doesCreateUserSuccess = false;} return doesCreateUserSuccess; } /** * Replace all occurence of forReplace with replaceWith in input string. * @param input represents input string * @param forReplace represents substring for replace * @param replaceWith represents replaced string value * @return new string with replaced values */ private static String replaceAll(String input, String forReplace, String replaceWith) { if( input == null ) return null; StringBuffer result = new StringBuffer(); boolean hasMore = true; while (hasMore) { int start = input.indexOf(forReplace); int end = start + forReplace.length(); if (start != -1) { result.append(input.substring(0, start) + replaceWith); input = input.substring(end); } else { hasMore = false; result.append(input); } } if (result.toString().equals("")) return input; //nothing is changed else return result.toString(); } }

|