package com.forio.admin.util;

import com.forio.sim.fleetsim.om.*;


import org.apache.velocity.context.Context;

import org.apache.turbine.services.security.TurbineSecurity;
import org.apache.turbine.util.security.AccessControlList;
import org.apache.turbine.util.security.UnknownEntityException;
import org.apache.turbine.util.security.EntityExistsException;

import org.apache.turbine.util.security.GroupSet;
import org.apache.turbine.om.security.Group;
import org.apache.turbine.om.security.Role;
import org.apache.turbine.om.security.User;

import org.apache.torque.util.Criteria;
import org.apache.torque.om.ObjectKey;
import org.apache.torque.om.NumberKey;

import java.util.StringTokenizer;
import java.util.Vector;

/**
 * The rationale behind this class is that we customarily wish to work
 * with class "User" which provides greater security and ease of use
 * for changing security settings.  However, it is difficult to use in
 * joins and selections.  Among other problems, it uses the old Criteria
 * class.
 *
 * This class converts between the Torque OM classes and the Turbine
 * security classes.
 */
public class SecurityConversion
{


	public static User cTurbineUserToUser(TurbineUser TheUser) throws Exception{
		if (TheUser == null)
			return null;
		else
			return TurbineSecurity.getUser(TheUser.getLoginName());
	}


	public static Vector cTurbineUserListToUserList(Vector UserList) throws Exception{
		Vector NewUserList = new Vector();
		for (int i=0; i< UserList.size(); i++) {
			User NewUser=null;
			try {
				NewUser = cTurbineUserToUser((TurbineUser) UserList.get(i));
			} catch (Exception E) {
				;
			}
			if (NewUser != null)
				NewUserList.add(NewUser);
		}

		return NewUserList;
	}

	public static TurbineUser cUserToTurbineUser(User TheUser) throws Exception{
		if (TheUser == null)
			return null;
		else {
			Criteria crit = new Criteria();
			crit.add(TurbineUserPeer.LOGIN_NAME,TheUser.getUserName());
			Vector ResultList = TurbineUserPeer.doSelect(crit);
			if (ResultList.size() == 1)
				return (TurbineUser)  ResultList.get(0);
			else
				return null;
		}
	}

	public static Vector cUserListToTurbineUserList(Vector UserList) throws Exception{
		Vector NewUserList = new Vector();
		for (int i=0; i< UserList.size(); i++) {
			TurbineUser NewUser=null;
			try {
				NewUser = cUserToTurbineUser((User) UserList.get(i));
			} catch (Exception E) {
				;
			}
			if (NewUser != null)
				NewUserList.add(NewUser);
		}

		return NewUserList;
	}


}

