其实在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();
}
}