taylor 01/11/19 21:01:22
Modified: src/java/org/apache/jetspeed/services/psmlmanager
CastorPsmlManagerService.java PsmlImporter.java
PsmlManagerService.java
src/java/org/apache/jetspeed/services/psmlmanager/db
DatabasePsmlManagerService.java
Removed: src/java/org/apache/jetspeed/services/psmlmanager/db
DatabaseInitializer.java
Log:
- added export() method to PsmlManagerService interface.
- updated PsmlImporter to use export() entry point
- wrote CastorPsmlManagerService.export() to properly handle service initialization
and multiple service problems.
- still todo: write export() method for DatabasePsmlManagerService (to export from
db to file system)
Revision Changes Path
1.12 +101 -29
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.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- CastorPsmlManagerService.java 2001/11/12 03:40:25 1.11
+++ CastorPsmlManagerService.java 2001/11/20 05:01:22 1.12
@@ -112,7 +112,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.11 2001/11/12 03:40:25 taylor
Exp $
+ * @version $Id: CastorPsmlManagerService.java,v 1.12 2001/11/20 05:01:22 taylor
Exp $
*/
public class CastorPsmlManagerService extends TurbineBaseService
implements PsmlManagerService
@@ -153,18 +153,21 @@
/** the base refresh rate for documents */
private long scanRate = 1000 * 60;
+ /** the import/export consumer service **/
+ private PsmlManagerService consumer = null;
+ private boolean importFlag = false;
+
/**
* This is the early initialization method called by the
* Turbine <code>Service</code> framework
*/
public void init( ServletConfig conf ) throws InitializationException
{
- System.out.println("in castor psml init");
if (getInit())
{
return;
}
-
+
// get configuration parameters from Jetspeed Resources
ResourceService serviceConf =
((TurbineServices)TurbineServices.getInstance())
.getResources(PsmlManagerService.SERVICE_NAME);
@@ -196,7 +199,6 @@
//Mark that we are done
setInit(true);
- System.out.println("exit castor psml init");
// Test
//testCases();
@@ -207,8 +209,6 @@
/** Late init method from Turbine Service model */
public void init() throws InitializationException
{
- System.out.println("in late castor psml init");
-
while( !getInit() )
{
//Not yet...
@@ -221,8 +221,6 @@
Log.error( ie );
}
}
- System.out.println("exit LATE castor psml init");
-
}
@@ -339,7 +337,7 @@
synchronized (documents)
{
// store the document in the hash and reference it to the watcher
- Profile newProfile = new BaseProfile(locator);
+ Profile newProfile = createProfile(locator);
newProfile.setDocument(doc);
documents.put(name, new WeakReference(newProfile));
}
@@ -385,6 +383,7 @@
doc.setPortlets(portlets);
this.watcher.addFile(fileOrUrl,f);
+
}
catch (IOException e)
{
@@ -995,7 +994,7 @@
int qm = locator.getQueryMode();
if ((qm & QueryLocator.QUERY_ANON) == QueryLocator.QUERY_ANON)
{
- Profile profile = new BaseProfile();
+ Profile profile = createProfile();
profile.setAnonymous(true);
StringBuffer path = new StringBuffer();
path.append(PATH_ANON);
@@ -1012,7 +1011,7 @@
}
if ((qm & QueryLocator.QUERY_USER) == QueryLocator.QUERY_USER)
{
- Profile profile = new BaseProfile();
+ Profile profile = createProfile();
StringBuffer path = new StringBuffer();
path.append(PATH_USER);
String name = null;
@@ -1040,7 +1039,7 @@
}
if ((qm & QueryLocator.QUERY_ROLE) == QueryLocator.QUERY_ROLE)
{
- Profile profile = new BaseProfile();
+ Profile profile = createProfile();
StringBuffer path = new StringBuffer();
path.append(PATH_ROLE);
String name = null;
@@ -1068,7 +1067,7 @@
}
if ((qm & QueryLocator.QUERY_GROUP) == QueryLocator.QUERY_GROUP)
{
- Profile profile = new BaseProfile();
+ Profile profile = createProfile();
StringBuffer path = new StringBuffer();
path.append(PATH_GROUP);
String name = null;
@@ -1098,6 +1097,63 @@
return list.iterator();
}
+ /** Create a profile based on import flag.
+ *
+ */
+ private Profile createProfile()
+ {
+ if (importFlag)
+ return new ImportProfile(this, this.consumer);
+ else
+ return new BaseProfile();
+ }
+
+ private Profile createProfile(ProfileLocator locator)
+ {
+ if (importFlag)
+ return new ImportProfile(this, this.consumer, locator);
+ else
+ return new BaseProfile(locator);
+ }
+
+ /** Query for a collection of profiles given a profile locator criteria.
+ * This method should be used when importing or exporting profiles between
services.
+ *
+ * @param locator The profile locator criteria.
+ * @return The count of profiles exported.
+ */
+ public int export(PsmlManagerService consumer, QueryLocator locator)
+ {
+ importFlag = true;
+ Iterator profiles = null;
+ int count = 0;
+ try
+ {
+ this.consumer = consumer;
+ profiles = query(locator);
+
+ while (profiles.hasNext() )
+ {
+ Profile profile = (Profile)profiles.next();
+ //dumpProfile(profile);
+ consumer.createDocument(profile);
+ count++;
+ }
+ }
+ catch(Exception e)
+ {
+ e.printStackTrace();
+ Log.error("Failed to export profiles to DB: " + e.toString() );
+
+ }
+ finally
+ {
+ importFlag = false;
+ }
+ return count;
+ }
+
+
/** Query for a collection of profiles given a profile locator criteria.
* To specify 'all' - use '*' in the criteria
*
@@ -1343,24 +1399,40 @@
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("----------------------");
+ dumpProfile(profile);
}
System.out.println("===============================================");
+ }
+
+ private void dumpProfile(Profile profile)
+ {
+ 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());
+ PSMLDocument doc = profile.getDocument();
+ if (null == doc)
+ System.out.println("Document is null");
+ else
+ {
+ if (null == profile.getName())
+ System.out.println("profile name is null");
+ else
+ System.out.println("Doc.name=" + profile.getName());
+ }
+
+ System.out.println("----------------------");
}
}
1.2 +17 -31
jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/PsmlImporter.java
Index: PsmlImporter.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/PsmlImporter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- PsmlImporter.java 2001/11/12 16:02:19 1.1
+++ PsmlImporter.java 2001/11/20 05:01:22 1.2
@@ -81,6 +81,7 @@
import org.apache.turbine.util.security.DataBackendException;
import org.apache.turbine.util.security.UnknownEntityException;
import org.apache.turbine.util.Log;
+import javax.servlet.ServletConfig;
/**
* Reads all PSML files from the file system and imports them into PSML DB
@@ -94,48 +95,32 @@
{
}
- public void run()
+ public void run(ServletConfig conf)
{
- System.out.println("in run of impporter");
- if (alreadyImported())
- return;
-
+ String msg = "Running PSMLImporter...";
+ System.out.println(msg);
+ Log.note(msg);
+ int count = 0;
try
{
+ if (alreadyImported())
+ return;
PsmlManagerService fileService =
(PsmlManagerService)TurbineServices.getInstance().getService("PsmlImportManager");
QueryLocator locator = new QueryLocator(QueryLocator.QUERY_ALL);
- Iterator profiles = fileService.query(locator);
- System.out.println("Starting");
-
- while (profiles.hasNext() )
- {
- Profile profile = (Profile)profiles.next();
- dumpProfile(profile);
- PsmlManager.store(profile);
- }
+ count = fileService.export(PsmlManager.getService(), locator);
}
catch (Exception e)
{
System.out.println("Error importing: " + e.toString());
Log.error("Error importing: " + e.toString());
e.printStackTrace();
- }
- System.out.println("ending importer");
-
+ }
+ msg = "PSMLImporter completed. Exported " + count + " profiles";
+ System.out.println(msg);
+ Log.note(msg);
}
- private void dump( Iterator it )
- {
- System.out.println("===============================================");
- while (it.hasNext() )
- {
- Profile profile = (Profile)it.next();
- dumpProfile(profile);
- }
- System.out.println("===============================================");
- }
-
private void dumpProfile(Profile profile)
{
User user = profile.getUser();
@@ -162,14 +147,15 @@
{
// dst: why not get a count(*) from ANON table?
- //User user = securityService.getUser(admin);
User user = JetspeedSecurity.getUser("admin");
QueryLocator ql = new QueryLocator(QueryLocator.QUERY_USER);
ql.setUser(user);
- //Iterator iterator = psmlManagerService.query(ql);
Iterator iterator = PsmlManager.query(ql);
while (iterator.hasNext())
- {
+ {
+ String msg = "PSMLImporter: Detected database is populated. No need
to import.";
+ System.out.println(msg);
+ Log.info(msg);
return true; // record found
}
return false; // record not found
1.8 +11 -1
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.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- PsmlManagerService.java 2001/11/12 03:40:26 1.7
+++ PsmlManagerService.java 2001/11/20 05:01:22 1.8
@@ -70,7 +70,7 @@
* 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.7 2001/11/12 03:40:26 taylor Exp $
+ * @version $Id: PsmlManagerService.java,v 1.8 2001/11/20 05:01:22 taylor Exp $
*/
public interface PsmlManagerService extends Service
{
@@ -162,9 +162,19 @@
/** Query for a collection of profiles given a profile locator criteria.
*
* @param locator The profile locator criteria.
+ *
+ * @return A collection of profiles that match the criteria specified in the
locator.
*/
public Iterator query( QueryLocator locator );
+ /** Export profiles from this service into another service
+ *
+ * @param consumer The PSML consumer service, receives PSML from this service.
+ * @param locator The profile locator criteria.
+ *
+ * @return The count of profiles exported.
+ */
+ public int export(PsmlManagerService consumer, QueryLocator locator);
}
1.3 +18 -10
jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/db/DatabasePsmlManagerService.java
Index: DatabasePsmlManagerService.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/psmlmanager/db/DatabasePsmlManagerService.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- DatabasePsmlManagerService.java 2001/11/12 16:06:08 1.2
+++ DatabasePsmlManagerService.java 2001/11/20 05:01:22 1.3
@@ -143,13 +143,15 @@
private final static String REFRESH_RATE = "refresh-rate";
private final static long DEFAULT_REFRESH_RATE = 60 * 60 * 8 * 1000; //8hrs
+ /** the import/export consumer service **/
+ private PsmlManagerService consumer = null;
+
/**
* This is the early initialization method called by the
* Turbine <code>Service</code> framework
*/
public void init(ServletConfig conf) throws InitializationException
{
- System.out.println("initalizing Dbpsml");
if (getInit())
{
return;
@@ -161,23 +163,17 @@
//Mark that we are done
setInit(true);
Log.note("Done initializing DatabasePsmlManagerService.");
- System.out.println("done initalizing Dbpsml");
-
- System.out.println("Running Importer");
try
{
PsmlImporter importer = new PsmlImporter();
- importer.run();
+ importer.run(conf);
}
catch (Exception e)
{
- System.out.println("Error importing: " + e.toString());
Log.error("Error importing: " + e.toString());
e.printStackTrace();
}
- System.out.println("Done Running Importer");
-
}
/**
@@ -207,8 +203,8 @@
throw new InitializationException("Missing default refresh rate
parameter, during initializing DatabasePsmlManagerService, using defaults");
}
- this.refresher = new CacheRefresher();
- refresher.start();
+// this.refresher = new CacheRefresher();
+ // refresher.start();
}
@@ -749,6 +745,7 @@
catch (Exception e)
{
Log.error("Error occurred in Database PSML Manager: " + e);
+ e.printStackTrace();
}
return new ArrayList().iterator(); // return empty non-null iterator
@@ -1006,5 +1003,16 @@
Log.error("Delete from table JETSPEED_GROUP_PROFILE failed");
throw new RuntimeException("Could not delete documents for given group
from DB");
}
+ }
+
+ /** Query for a collection of profiles given a profile locator criteria.
+ * This method should be used when importing or exporting profiles between
services.
+ *
+ * @param locator The profile locator criteria.
+ * @return The count of profiles exported.
+ */
+ public int export(PsmlManagerService consumer, QueryLocator locator)
+ {
+ return 0; // TODO: implement
}
}
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>