taylor 01/07/29 20:50:08
Modified: src/java/org/apache/jetspeed/services Profiler.java
PsmlManager.java
src/java/org/apache/jetspeed/services/profiler
JetspeedProfilerService.java ProfilerService.java
src/java/org/apache/jetspeed/services/psmlmanager
CastorPsmlManagerService.java
PsmlManagerService.java
src/java/org/apache/jetspeed/services/security
JetspeedDBSecurityService.java
Log:
- implemented PsmlManager methods in CastorPsmlManager:
query, removeUserDocuments, removeRoleDocuments, removeGroupDocuments
Revision Changes Path
1.11 +5 -4
jakarta-jetspeed/src/java/org/apache/jetspeed/services/Profiler.java
Index: Profiler.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/Profiler.java,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- Profiler.java 2001/07/17 16:44:35 1.10
+++ Profiler.java 2001/07/30 03:50:07 1.11
@@ -56,6 +56,7 @@
import org.apache.jetspeed.om.profile.Profile;
import org.apache.jetspeed.om.profile.ProfileLocator;
+import org.apache.jetspeed.om.profile.QueryLocator;
import org.apache.jetspeed.om.profile.ProfileException;
import org.apache.jetspeed.services.profiler.ProfilerService;
import org.apache.turbine.services.TurbineServices;
@@ -74,7 +75,7 @@
* @see org.apache.jetspeed.services.profiler.Profiler
* @see org.apache.jetspeed.services.profiler.ProfilerService
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
- * @version $Id: Profiler.java,v 1.10 2001/07/17 16:44:35 taylor Exp $
+ * @version $Id: Profiler.java,v 1.11 2001/07/30 03:50:07 taylor Exp $
*/
public class Profiler
{
@@ -180,11 +181,11 @@
}
/**
- * @see ProfilerService#list
+ * @see ProfilerService#query
*/
- public static Iterator list( ProfileLocator locator )
+ public static Iterator query( QueryLocator locator )
{
- return getService().list( locator );
+ return getService().query( locator );
}
}
1.5 +36 -2
jakarta-jetspeed/src/java/org/apache/jetspeed/services/PsmlManager.java
Index: PsmlManager.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/PsmlManager.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PsmlManager.java 2001/07/17 16:44:36 1.4
+++ PsmlManager.java 2001/07/30 03:50:07 1.5
@@ -58,7 +58,12 @@
import org.apache.jetspeed.om.profile.PSMLDocument;
import org.apache.turbine.services.TurbineServices;
import org.apache.jetspeed.om.profile.ProfileLocator;
+import org.apache.jetspeed.om.profile.QueryLocator;
import org.apache.jetspeed.om.profile.Profile;
+import org.apache.turbine.om.security.User;
+import org.apache.turbine.om.security.Role;
+import org.apache.turbine.om.security.Group;
+
import java.util.Iterator;
import java.util.List;
@@ -66,7 +71,7 @@
* Static accessor for the PsmlManagerService
*
* @author <a href="mailto:[EMAIL PROTECTED]">Rapha�l Luta</a>
- * @version $Id: PsmlManager.java,v 1.4 2001/07/17 16:44:36 taylor Exp $
+ * @version $Id: PsmlManager.java,v 1.5 2001/07/30 03:50:07 taylor Exp $
*/
public class PsmlManager
{
@@ -155,11 +160,40 @@
getService().removeDocument( locator );
}
+ /** Removes all documents for a given user.
+ *
+ * @param user The user object.
+ */
+ public static void removeUserDocuments( User user )
+ {
+ getService().removeUserDocuments( user );
+ }
+
+ /** Removes all documents for a given group.
+ *
+ * @param group The group object.
+ */
+ public static void removeGroupDocuments( Group group )
+ {
+ getService().removeGroupDocuments( group );
+ }
+
+
+ /** Removes all documents for a given role.
+ *
+ * @param role The role object.
+ */
+ public static void removeRoleDocuments( Role role )
+ {
+ getService().removeRoleDocuments( role );
+ }
+
+
/** Query for a collection of profiles given a profile locator criteria.
*
* @param locator The profile locator criteria.
*/
- public static Iterator query( ProfileLocator locator )
+ public static Iterator query( QueryLocator locator )
{
return getService().query( locator );
}
1.13 +3 -3
jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java
Index: JetspeedProfilerService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/JetspeedProfilerService.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- JetspeedProfilerService.java 2001/07/29 13:42:00 1.12
+++ JetspeedProfilerService.java 2001/07/30 03:50:07 1.13
@@ -131,7 +131,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Santiago Gala</a>
- * @version $Id: JetspeedProfilerService.java,v 1.12 2001/07/29 13:42:00 raphael
Exp $
+ * @version $Id: JetspeedProfilerService.java,v 1.13 2001/07/30 03:50:07 taylor Exp
$
*/
public class JetspeedProfilerService extends TurbineBaseService
@@ -696,12 +696,12 @@
PsmlManager.removeDocument(locator);
}
- /** Get a list of profiles given a profile locator criteria.
+ /** Query for a collection of profiles given a profile locator criteria.
*
* @param locator The profile locator criteria.
* @return The list of profiles matching the locator criteria.
*/
- public Iterator list( ProfileLocator locator )
+ public Iterator query( QueryLocator locator )
{
return PsmlManager.query( locator );
}
1.10 +3 -3
jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/ProfilerService.java
Index: ProfilerService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/profiler/ProfilerService.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- ProfilerService.java 2001/07/17 16:44:45 1.9
+++ ProfilerService.java 2001/07/30 03:50:07 1.10
@@ -70,7 +70,7 @@
*
* @see org.apache.jetspeed.om.profile.Profile
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
- * @version $Id: ProfilerService.java,v 1.9 2001/07/17 16:44:45 taylor Exp $
+ * @version $Id: ProfilerService.java,v 1.10 2001/07/30 03:50:07 taylor Exp $
*/
public interface ProfilerService extends Service
@@ -158,11 +158,11 @@
public void removeProfile( ProfileLocator locator )
throws ProfileException;
- /** Get a list of profiles given a profile locator criteria.
+ /** Query for a collection of profiles given a profile locator criteria.
*
* @param locator The profile locator criteria.
* @return The list of profiles matching the locator criteria.
*/
- public Iterator list( ProfileLocator locator );
+ public Iterator query( QueryLocator locator );
}
1.8 +575 -22
jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/CastorPsmlManagerService.java
Index: CastorPsmlManagerService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/CastorPsmlManagerService.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- CastorPsmlManagerService.java 2001/07/26 20:50:39 1.7
+++ CastorPsmlManagerService.java 2001/07/30 03:50:07 1.8
@@ -57,7 +57,10 @@
//Jetspeed stuff
import org.apache.jetspeed.cache.disk.JetspeedDiskCache;
import org.apache.jetspeed.om.profile.ProfileLocator;
+import org.apache.jetspeed.om.profile.QueryLocator;
import org.apache.jetspeed.util.FileCopy;
+import org.apache.jetspeed.util.DirectoryUtils;
+import org.apache.jetspeed.services.JetspeedSecurity;
//Castor defined API
import org.apache.jetspeed.xml.api.portletmarkup.Portlets;
@@ -93,6 +96,7 @@
import java.util.Date;
import java.util.Iterator;
import java.util.List;
+import java.util.LinkedList;
import java.util.Map;
import java.util.HashMap;
import java.lang.ref.WeakReference;
@@ -104,7 +108,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Rapha�l Luta</a>
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Santiago Gala</a>
- * @version $Id: CastorPsmlManagerService.java,v 1.7 2001/07/26 20:50:39 sgala Exp $
+ * @version $Id: CastorPsmlManagerService.java,v 1.8 2001/07/30 03:50:07 taylor Exp
$
*/
public class CastorPsmlManagerService extends TurbineBaseService
implements PsmlManagerService
@@ -117,9 +121,11 @@
// configuration keys
private final static String CONFIG_ROOT = "root";
+ private final static String CONFIG_EXT = "ext";
// default configuration values
public final static String DEFAULT_ROOT = "/WEB-INF/psml";
+ public final static String DEFAULT_EXT = ".psml";
// default resource
public final static String DEFAULT_RESOURCE = "default.psml";
@@ -128,6 +134,8 @@
private String root;
// base store directory
private File rootDir = null;
+ // file extension
+ private String ext;
/** The documents loaded by this manager */
private Map documents = new HashMap();
@@ -148,10 +156,10 @@
public void init( ServletConfig conf ) throws InitializationException
{
- if(getInit())
+ if(getInit())
{
- return;
- }
+ return;
+ }
// get configuration parameters from Jetspeed Resources
ResourceService serviceConf =
((TurbineServices)TurbineServices.getInstance())
@@ -160,17 +168,20 @@
this.root = serviceConf.getString( CONFIG_ROOT, DEFAULT_ROOT );
this.rootDir = new File(root);
- //If the rootDir does not exist, treat it as context relative
+ //If the rootDir does not exist, treat it as context relative
if ( !rootDir.exists() )
{
this.rootDir = new File(conf.getServletContext().getRealPath(root));
}
- //If it is still missing, try to create it
+ //If it is still missing, try to create it
if (!rootDir.exists())
{
rootDir.mkdirs();
}
+ // get default extension
+ this.ext = serviceConf.getString( CONFIG_EXT, DEFAULT_EXT );
+
// create the serializer output format
this.format = new OutputFormat();
format.setIndenting(true);
@@ -181,6 +192,10 @@
//Mark that we are done
setInit(true);
+
+ // Test
+ //testCases();
+
}
@@ -199,6 +214,7 @@
Log.error( ie );
}
}
+
}
@@ -228,7 +244,7 @@
throw new IllegalArgumentException( message );
}
- Log.debug( "PSMLManager: asked for " + name );
+ Log.debug( "PSMLManager: asked for " + name );
PSMLDocument doc = null;
WeakReference ref = null;
@@ -262,6 +278,11 @@
*
* @param locator The locator descriptor of the document to be retrieved.
*/
+ /**
+ * Returns a PSML document for the given locator
+ *
+ * @param locator The locator descriptor of the document to be retrieved.
+ */
public PSMLDocument getDocument( ProfileLocator locator )
{
if (locator == null)
@@ -278,6 +299,7 @@
PSMLDocument doc = null;
WeakReference ref = null;
+ Profile profile = null;
synchronized (documents)
{
@@ -286,24 +308,29 @@
if (ref != null)
{
- doc = (PSMLDocument)ref.get();
+ profile = (Profile)ref.get();
}
- if (doc == null)
+ if (profile == null)
{
doc = loadDocument(name);
if (null == doc)
- {
- Log.note( "CastorPsmlManager: about to return null doc: " );
+ {
+ Log.note( "CastorPsmlManager: about to return null doc: " );
return null;
- }
+ }
synchronized (documents)
{
// store the document in the hash and reference it to the watcher
- documents.put(name, new WeakReference(doc));
+ Profile newProfile = new BaseProfile(locator);
+ newProfile.setDocument(doc);
+ documents.put(name, new WeakReference(profile));
}
}
+ else
+ doc = profile.getDocument();
+
return doc;
}
@@ -664,26 +691,171 @@
return doc;
}
+
+ /** Removes a document.
+ *
+ * @param locator The description of the profile resource to be removed.
+ */
+ public void removeDocument( ProfileLocator locator )
+ {
+ // remove a single document
+ String fileName = mapLocatorToFile(locator);
- /** Query for a collection of profiles given a profile locator criteria.
+ File base = this.rootDir;
+ File file = new File(base, fileName);
+ String name = file.getAbsolutePath();
+
+ synchronized (documents)
+ {
+ documents.remove(name);
+ }
+// TODO: this.watcher.removeFile(file);
+
+ file.delete();
+
+ }
+
+ /** Removes all documents for a given user.
*
- * @param locator The profile locator criteria.
+ * @param user The user object.
*/
- public Iterator query( ProfileLocator locator )
+ public void removeUserDocuments( User user )
{
- // IMPLEMENT ME:
- return null;
+ ProfileLocator locator = new BaseProfileLocator();
+ locator.setUser(user);
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(PATH_USER);
+ String name = user.getUserName();
+ if (null != name && name.length() > 0)
+ {
+ buffer.append(File.separator)
+ .append(name);
+ }
+ else
+ return; // don't delete the entire user directories
+
+ String path = buffer.toString();
+ File base = this.rootDir;
+ File file = new File(base, path);
+ name = file.getAbsolutePath();
+
+ synchronized (documents)
+ {
+ DirectoryUtils.rmdir(name);
+ Iterator it = documents.entrySet().iterator();
+ while (it.hasNext())
+ {
+ Map.Entry entry = (Map.Entry)it.next();
+ WeakReference ref = (WeakReference)entry.getValue();
+ if (null == ref)
+ continue;
+ Profile profile = (Profile)ref.get();
+ if (null == profile)
+ continue;
+ User pUser = profile.getUser();
+ if (null != pUser && pUser.getUserName().equals(user.getUserName()))
+ {
+ documents.remove(profile.getDocument().getName());
+ }
+ }
+ }
+
}
- /** Removes a document.
+ /** Removes all documents for a given role.
*
- * @param locator The description of the profile resource to be removed.
+ * @param role The role object.
*/
- public void removeDocument( ProfileLocator locator )
+ public void removeRoleDocuments( Role role )
{
-
+ ProfileLocator locator = new BaseProfileLocator();
+ locator.setRole(role);
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(PATH_ROLE);
+ String name = role.getName();
+ if (null != name && name.length() > 0)
+ {
+ buffer.append(File.separator)
+ .append(name);
+ }
+ else
+ return; // don't delete the entire role directories
+
+ String path = buffer.toString();
+ File base = this.rootDir;
+ File file = new File(base, path);
+ name = file.getAbsolutePath();
+
+ synchronized (documents)
+ {
+ DirectoryUtils.rmdir(name);
+ Iterator it = documents.entrySet().iterator();
+ while (it.hasNext())
+ {
+ Map.Entry entry = (Map.Entry)it.next();
+ WeakReference ref = (WeakReference)entry.getValue();
+ if (null == ref)
+ continue;
+ Profile profile = (Profile)ref.get();
+ if (null == profile)
+ continue;
+ Role pRole = profile.getRole();
+ if (null != pRole && pRole.getName().equals(role.getName()))
+ {
+ documents.remove(profile.getDocument().getName());
+ }
+ }
+ }
+ }
+
+ /** Removes all documents for a given group.
+ *
+ * @param group The group object.
+ */
+ public void removeGroupDocuments( Group group )
+ {
+ ProfileLocator locator = new BaseProfileLocator();
+ locator.setGroup(group);
+ StringBuffer buffer = new StringBuffer();
+ buffer.append(PATH_GROUP);
+ String name = group.getName();
+ if (null != name && name.length() > 0)
+ {
+ buffer.append(File.separator)
+ .append(name);
+ }
+ else
+ return; // don't delete the entire group directories
+
+ String path = buffer.toString();
+ File base = this.rootDir;
+ File file = new File(base, path);
+ name = file.getAbsolutePath();
+
+ synchronized (documents)
+ {
+ DirectoryUtils.rmdir(name);
+ Iterator it = documents.entrySet().iterator();
+ while (it.hasNext())
+ {
+ Map.Entry entry = (Map.Entry)it.next();
+ WeakReference ref = (WeakReference)entry.getValue();
+ if (null == ref)
+ continue;
+ Profile profile = (Profile)ref.get();
+ if (null == profile)
+ continue;
+ Group pGroup = profile.getGroup();
+ if (null != pGroup && pGroup.getName().equals(group.getName()))
+ {
+ documents.remove(profile.getDocument().getName());
+ }
+ }
+ }
+
}
+
/**
* Maps a ProfileLocator to a file.
*
@@ -770,6 +942,387 @@
}
return path.toString();
+ }
+
+ private static int STATE_INIT = 0;
+ private static int STATE_BASE = 1;
+ private static int STATE_NAME = 2;
+ private static int STATE_MEDIA = 3;
+ private static int STATE_LANGUAGE = 4;
+ private static int STATE_COUNTRY = 5;
+
+ /** Query for a collection of profiles given a profile locator criteria.
+ *
+ * @param locator The profile locator criteria.
+ */
+ public Iterator query( QueryLocator locator )
+ {
+ List list = new LinkedList();
+
+ Role role = locator.getRole();
+ Group group = locator.getGroup();
+ User user = locator.getUser();
+
+ // search thru anonymous directories?
+ int qm = locator.getQueryMode();
+ if ((qm & QueryLocator.QUERY_ANON) == QueryLocator.QUERY_ANON)
+ {
+ Profile profile = new BaseProfile();
+ profile.setAnonymous(true);
+ StringBuffer path = new StringBuffer();
+ path.append(PATH_ANON);
+ File base = this.rootDir;
+ File file = new File(base, path.toString());
+ String absPath = file.getAbsolutePath();
+ QueryState qs = new QueryState( QUERY_BY_ANON,
+ profile,
+ locator,
+ list,
+ null,
+ STATE_BASE);
+ subQuery(qs, absPath);
+ }
+ if ((qm & QueryLocator.QUERY_USER) == QueryLocator.QUERY_USER)
+ {
+ Profile profile = new BaseProfile();
+ StringBuffer path = new StringBuffer();
+ path.append(PATH_USER);
+ String name = null;
+ int state = STATE_INIT;
+ if (null != user)
+ {
+ name = user.getUserName();
+ profile.setUser( user );
+ if (null != name)
+ {
+ path.append(File.separator).append(name);
+ state = STATE_BASE;
+ }
+ }
+ File base = this.rootDir;
+ File file = new File(base, path.toString());
+ String absPath = file.getAbsolutePath();
+ QueryState qs = new QueryState( QUERY_BY_USER,
+ profile,
+ locator,
+ list,
+ name,
+ state);
+ subQuery(qs, absPath);
+ }
+ if ((qm & QueryLocator.QUERY_ROLE) == QueryLocator.QUERY_ROLE)
+ {
+ Profile profile = new BaseProfile();
+ StringBuffer path = new StringBuffer();
+ path.append(PATH_ROLE);
+ String name = null;
+ int state = STATE_INIT;
+ if (null != role)
+ {
+ name = role.getName();
+ profile.setRole( role );
+ if (null != name)
+ {
+ path.append(File.separator).append(name);
+ state = STATE_BASE;
+ }
+ }
+ File base = this.rootDir;
+ File file = new File(base, path.toString());
+ String absPath = file.getAbsolutePath();
+ QueryState qs = new QueryState( QUERY_BY_ROLE,
+ profile,
+ locator,
+ list,
+ name,
+ state);
+ subQuery(qs, absPath);
+ }
+ if ((qm & QueryLocator.QUERY_GROUP) == QueryLocator.QUERY_GROUP)
+ {
+ Profile profile = new BaseProfile();
+ StringBuffer path = new StringBuffer();
+ path.append(PATH_GROUP);
+ String name = null;
+ int state = STATE_INIT;
+ if (null != group)
+ {
+ name = group.getName();
+ profile.setGroup( group );
+ if (null != name)
+ {
+ path.append(File.separator).append(name);
+ state = STATE_BASE;
+ }
+ }
+ File base = this.rootDir;
+ File file = new File(base, path.toString());
+ String absPath = file.getAbsolutePath();
+ QueryState qs = new QueryState( QUERY_BY_GROUP,
+ profile,
+ locator,
+ list,
+ name,
+ state);
+ subQuery(qs, absPath);
+ }
+
+ return list.iterator();
+ }
+
+ /** Query for a collection of profiles given a profile locator criteria.
+ * To specify 'all' - use '*' in the criteria
+ *
+ * @param locator The profile locator criteria.
+ */
+ private void subQuery(QueryState qs, String path)
+ {
+ File file = new File(path);
+ if (file.isFile())
+ {
+ try
+ {
+ String filename = file.getName();
+ if (!filename.endsWith(this.ext))
+ return;
+
+ Profile clone = (Profile)qs.profile.clone();
+ clone.setName(filename);
+ qs.list.add( clone );
+ }
+ catch (Exception e)
+ {
+ Log.error("Failed to clone profile: " + path + " : " +
e.toString());
+ }
+ }
+ else if (file.isDirectory())
+ {
+ String dirName = file.getName();
+ qs.state++;
+
+ // filter out based on name, mediatype, language, country
+ if (qs.state == STATE_NAME)
+ {
+ if (null != qs.name)
+ {
+ if (!dirName.equals(qs.name))
+ return;
+ }
+ try
+ {
+ if (QUERY_BY_USER == qs.queryBy)
+ {
+ User user = qs.profile.getUser();
+ if (null == user)
+ {
+ user = JetspeedSecurity.getUser(dirName);
+ qs.clearName = true;
+ qs.profile.setUser(user);
+ }
+ }
+ else if (QUERY_BY_ROLE == qs.queryBy)
+ {
+ Role role = qs.profile.getRole();
+ if (null == role)
+ {
+ role = JetspeedSecurity.getRole(dirName);
+ qs.clearName = true;
+ qs.profile.setRole(role);
+ }
+ }
+ else if (QUERY_BY_GROUP == qs.queryBy)
+ {
+ Group group = qs.profile.getGroup();
+ if (null == group)
+ {
+ group = JetspeedSecurity.getGroup(dirName);
+ qs.clearName = true;
+ qs.profile.setGroup(group);
+ }
+ }
+ }
+ catch (Exception e)
+ {}
+
+
+ }
+ else if (qs.state == STATE_MEDIA)
+ {
+ String media = qs.locator.getMediaType();
+ if (null != media)
+ {
+ if (!dirName.equals(media))
+ return;
+ }
+ else
+ {
+ qs.profile.setMediaType(dirName);
+ qs.clearMedia = true;
+ }
+ }
+ else if (qs.state == STATE_LANGUAGE)
+ {
+ String language = qs.locator.getLanguage();
+ if (null != language)
+ {
+ if (!dirName.equals(language))
+ return;
+ }
+ else
+ {
+ qs.profile.setLanguage(dirName);
+ qs.clearLanguage = true;
+ }
+ }
+ else if (qs.state == STATE_COUNTRY)
+ {
+ String country = qs.locator.getCountry();
+ if (null != country)
+ {
+ if (!dirName.equals(country))
+ return;
+ }
+ else
+ {
+ qs.profile.setCountry(dirName);
+ qs.clearCountry = true;
+ }
+ }
+
+ if (!path.endsWith(File.separator))
+ path += File.separator;
+
+ String files[] = file.list();
+
+
+ // Process all files recursivly
+ for(int ix = 0; files != null && ix < files.length; ix++)
+ {
+ subQuery(qs, path + files[ix]);
+ }
+
+ // clear state
+ if (qs.state == STATE_NAME && true == qs.clearName)
+ {
+ if (QUERY_BY_USER == qs.queryBy)
+ qs.profile.setUser(null);
+ else if (QUERY_BY_ROLE == qs.queryBy)
+ qs.profile.setRole(null);
+ else if (QUERY_BY_GROUP == qs.queryBy)
+ qs.profile.setGroup(null);
+ qs.clearName = false;
+ }
+ else if (qs.state == STATE_MEDIA && true == qs.clearMedia)
+ {
+ qs.profile.setMediaType(null);
+ qs.clearMedia = false;
+ }
+ else if (qs.state == STATE_LANGUAGE && true == qs.clearLanguage)
+ {
+ qs.profile.setLanguage(null);
+ qs.clearLanguage = false;
+ }
+ else if (qs.state == STATE_COUNTRY && true == qs.clearCountry)
+ {
+ qs.profile.setCountry(null);
+ qs.clearCountry = false;
+ }
+
+ qs.state--;
+
+ }
+
+ }
+
+ static int QUERY_BY_USER = 0;
+ static int QUERY_BY_ROLE = 1;
+ static int QUERY_BY_GROUP = 2;
+ static int QUERY_BY_ANON = 3;
+
+ protected class QueryState
+ {
+
+ QueryState( int queryBy,
+ Profile profile,
+ ProfileLocator locator,
+ List list,
+ String name,
+ int state)
+ {
+ this.queryBy = queryBy;
+ this.profile = profile;
+ this.locator = locator;
+ this.list = list;
+ this.name = name;
+ this.state = state;
+ }
+
+ private int queryBy;
+ private Profile profile;
+ private ProfileLocator locator;
+ private List list;
+ private String name;
+ private int state;
+
+ private boolean clearName = false;
+ private boolean clearMedia = false;
+ private boolean clearLanguage = false;
+ private boolean clearCountry = false;
+
+ }
+
+ private void testCases()
+ {
+ try
+ {
+ QueryLocator locator = new QueryLocator( QueryLocator.QUERY_USER );
+ Iterator x1 = query( locator );
+ dump( x1 );
+
+ QueryLocator locator2 = new QueryLocator( QueryLocator.QUERY_USER );
+ locator2.setUser( JetspeedSecurity.getUser("turbine") );
+ Iterator x2 = query( locator2 );
+ dump( x2 );
+
+ QueryLocator locator3 = new QueryLocator( QueryLocator.QUERY_ANON );
+ Iterator x3 = query( locator3 );
+ dump( x3 );
+
+ QueryLocator locator4 = new QueryLocator( QueryLocator.QUERY_GROUP );
+// locator4.setGroup( JetspeedSecurity.getGroup("apache") );
+ Iterator x4 = query( locator4 );
+ dump( x4 );
+ }
+ catch (Exception e)
+ {
+ System.out.println( "Exception in Debug:" + e);
+ }
+ }
+
+ private void dump( Iterator it )
+ {
+ System.out.println("===============================================");
+ while (it.hasNext() )
+ {
+ Profile profile = (Profile)it.next();
+ User user = profile.getUser();
+ Group group = profile.getGroup();
+ Role role = profile.getRole();
+ if (profile.getAnonymous() == true)
+ System.out.println("ANON USER");
+ System.out.println("RESOURCE = " + profile.getName());
+ if (null != user)
+ System.out.println("USER = " + user.getUserName() );
+ if (null != group)
+ System.out.println("GROUP = " + group.getName() );
+ if (null != role)
+ System.out.println("ROLE = " + role.getName() );
+ System.out.println("MEDIA TYPE = " + profile.getMediaType());
+ System.out.println("LANGUAGE = " + profile.getLanguage());
+ System.out.println("COUNTRY = " + profile.getCountry());
+ System.out.println("----------------------");
+ }
+ System.out.println("===============================================");
}
}
1.5 +25 -2
jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/PsmlManagerService.java
Index: PsmlManagerService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/PsmlManagerService.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- PsmlManagerService.java 2001/07/17 16:44:50 1.4
+++ PsmlManagerService.java 2001/07/30 03:50:07 1.5
@@ -59,13 +59,17 @@
import org.apache.turbine.services.Service;
import org.apache.jetspeed.om.profile.PSMLDocument;
import org.apache.jetspeed.om.profile.ProfileLocator;
+import org.apache.jetspeed.om.profile.QueryLocator;
import org.apache.jetspeed.om.profile.Profile;
+import org.apache.turbine.om.security.User;
+import org.apache.turbine.om.security.Role;
+import org.apache.turbine.om.security.Group;
/**
* This service is responsible for loading and saving PSML documents.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Rapha�l Luta</a>
- * @version $Id: PsmlManagerService.java,v 1.4 2001/07/17 16:44:50 taylor Exp $
+ * @version $Id: PsmlManagerService.java,v 1.5 2001/07/30 03:50:07 taylor Exp $
*/
public interface PsmlManagerService extends Service
{
@@ -128,10 +132,29 @@
*/
public void removeDocument( ProfileLocator locator );
+ /** Removes all documents for a given user.
+ *
+ * @param user The user object.
+ */
+ public void removeUserDocuments( User user );
+
+ /** Removes all documents for a given group.
+ *
+ * @param group The group object.
+ */
+ public void removeGroupDocuments( Group group );
+
+ /** Removes all documents for a given role.
+ *
+ * @param role The role object.
+ */
+ public void removeRoleDocuments( Role role );
+
/** Query for a collection of profiles given a profile locator criteria.
*
* @param locator The profile locator criteria.
*/
- public Iterator query( ProfileLocator locator );
+ public Iterator query( QueryLocator locator );
+
}
1.9 +3 -6
jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/JetspeedDBSecurityService.java
Index: JetspeedDBSecurityService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/security/JetspeedDBSecurityService.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- JetspeedDBSecurityService.java 2001/07/29 13:42:01 1.8
+++ JetspeedDBSecurityService.java 2001/07/30 03:50:08 1.9
@@ -73,6 +73,7 @@
import org.apache.jetspeed.om.profile.BaseProfileLocator;
import org.apache.jetspeed.om.profile.ProfileException;
import org.apache.jetspeed.services.Profiler;
+import org.apache.jetspeed.services.PsmlManager;
/**
* <p>This is an implementation of the <code>JetspeedSecurityService</code>
interface.
@@ -80,7 +81,7 @@
*
* @author <a href="mailto:[EMAIL PROTECTED]">David Sean Taylor</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Santiago Gala</a>
- * @version $Id: JetspeedDBSecurityService.java,v 1.8 2001/07/29 13:42:01 raphael
Exp $
+ * @version $Id: JetspeedDBSecurityService.java,v 1.9 2001/07/30 03:50:08 taylor
Exp $
*/
@@ -205,11 +206,7 @@
public void removeUser( User user, RunData data )
throws Exception
{
+ PsmlManager.removeUserDocuments(user);
removeUser(user);
-
- ProfileLocator locator = new BaseProfileLocator();
- locator.setUser(user);
- locator.setName("*");
- Profiler.removeProfile(locator);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]