- Example demonstrating how to extend bootstrap data set (Users).

- Modified bootstrap Spring bean definitions allowing easier extension
- Modified importer bootstrap to allow import from .acp files (currently only supports .acp file in filesystem, not .jar)

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@2344 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
This commit is contained in:
David Caruana
2006-02-10 18:49:45 +00:00
parent 902293d12a
commit 286e173539
2 changed files with 47 additions and 105 deletions

View File

@@ -679,7 +679,7 @@
</property> </property>
</bean> </bean>
<bean id="systemBootstrap" class="org.alfresco.repo.importer.ImporterBootstrap" init-method="bootstrap" depends-on="nodeIndexer, auditableAspect"> <bean id="systemStoreImporter" class="org.alfresco.repo.importer.ImporterBootstrap" abstract="true" init-method="bootstrap">
<property name="transactionService"> <property name="transactionService">
<ref bean="transactionComponent"/> <ref bean="transactionComponent"/>
</property> </property>
@@ -716,6 +716,14 @@
<prop key="system.descriptor.childname">${system.descriptor.childname}</prop> <prop key="system.descriptor.childname">${system.descriptor.childname}</prop>
</props> </props>
</property> </property>
</bean>
<bean id="systemBootstrap" parent="systemStoreImporter" depends-on="nodeIndexer, auditableAspect">
<!-- To specify a locale other than the system default, uncomment the following
<property name="locale">
<value>en_GB</value>
</property>
-->
<property name="bootstrapViews"> <property name="bootstrapViews">
<list> <list>
<props> <props>
@@ -726,8 +734,7 @@
</property> </property>
</bean> </bean>
<bean id="userStoreImporter" class="org.alfresco.repo.importer.ImporterBootstrap" abstract="true" init-method="bootstrap">
<bean id="alfrescoUserStoreBootstrap" class="org.alfresco.repo.importer.ImporterBootstrap" init-method="bootstrap" depends-on="systemBootstrap">
<property name="transactionService"> <property name="transactionService">
<ref bean="transactionComponent"/> <ref bean="transactionComponent"/>
</property> </property>
@@ -756,6 +763,9 @@
<prop key="alfresco_user_store.authorities_container.childname">${alfresco_user_store.authorities_container.childname}</prop> <prop key="alfresco_user_store.authorities_container.childname">${alfresco_user_store.authorities_container.childname}</prop>
</props> </props>
</property> </property>
</bean>
<bean id="userBootstrap" parent="userStoreImporter" depends-on="systemBootstrap">
<!-- To specify a locale other than the system default, uncomment the following <!-- To specify a locale other than the system default, uncomment the following
<property name="locale"> <property name="locale">
<value>en_GB</value> <value>en_GB</value>
@@ -771,8 +781,7 @@
</property> </property>
</bean> </bean>
<bean id="spacesStoreImporter" class="org.alfresco.repo.importer.ImporterBootstrap" abstract="true" init-method="bootstrap">
<bean id="importerBootstrap" class="org.alfresco.repo.importer.ImporterBootstrap" init-method="bootstrap" depends-on="alfrescoUserStoreBootstrap, versionBootstrap">
<property name="transactionService"> <property name="transactionService">
<ref bean="transactionComponent"/> <ref bean="transactionComponent"/>
</property> </property>
@@ -806,6 +815,9 @@
<prop key="spaces.savedsearches.childname">${spaces.savedsearches.childname}</prop> <prop key="spaces.savedsearches.childname">${spaces.savedsearches.childname}</prop>
</props> </props>
</property> </property>
</bean>
<bean id="importerBootstrap" parent="spacesStoreImporter" depends-on="userBootstrap, versionBootstrap">
<!-- To specify a locale other than the system default, uncomment the following <!-- To specify a locale other than the system default, uncomment the following
<property name="locale"> <property name="locale">
<value>en_GB</value> <value>en_GB</value>

View File

@@ -20,7 +20,6 @@ import java.io.BufferedReader;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.Reader; import java.io.Reader;
import java.io.Serializable;
import java.io.UnsupportedEncodingException; import java.io.UnsupportedEncodingException;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
@@ -33,10 +32,8 @@ import javax.transaction.UserTransaction;
import org.alfresco.error.AlfrescoRuntimeException; import org.alfresco.error.AlfrescoRuntimeException;
import org.alfresco.i18n.I18NUtil; import org.alfresco.i18n.I18NUtil;
import org.alfresco.repo.security.authentication.AuthenticationComponent; import org.alfresco.repo.security.authentication.AuthenticationComponent;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.cmr.repository.NodeService; import org.alfresco.service.cmr.repository.NodeService;
import org.alfresco.service.cmr.repository.StoreRef; import org.alfresco.service.cmr.repository.StoreRef;
import org.alfresco.service.cmr.security.AccessPermission;
import org.alfresco.service.cmr.view.ImporterBinding; import org.alfresco.service.cmr.view.ImporterBinding;
import org.alfresco.service.cmr.view.ImporterException; import org.alfresco.service.cmr.view.ImporterException;
import org.alfresco.service.cmr.view.ImporterProgress; import org.alfresco.service.cmr.view.ImporterProgress;
@@ -47,6 +44,7 @@ import org.alfresco.service.namespace.QName;
import org.alfresco.service.transaction.TransactionService; import org.alfresco.service.transaction.TransactionService;
import org.apache.commons.logging.Log; import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.LogFactory;
import org.springframework.core.io.ClassPathResource;
/** /**
* Bootstrap Repository store. * Bootstrap Repository store.
@@ -293,14 +291,25 @@ public class ImporterBootstrap
{ {
for (Properties bootstrapView : bootstrapViews) for (Properties bootstrapView : bootstrapViews)
{ {
// Create input stream reader onto view file
String view = bootstrapView.getProperty(VIEW_LOCATION_VIEW); String view = bootstrapView.getProperty(VIEW_LOCATION_VIEW);
if (view == null || view.length() == 0) if (view == null || view.length() == 0)
{ {
throw new ImporterException("View file location must be provided"); throw new ImporterException("View file location must be provided");
} }
String encoding = bootstrapView.getProperty(VIEW_ENCODING); String encoding = bootstrapView.getProperty(VIEW_ENCODING);
Reader viewReader = getReader(view, encoding);
// Create appropriate view reader
Reader viewReader = null;
ACPImportPackageHandler acpHandler = null;
if (view.endsWith(".acp"))
{
ClassPathResource acpResource = new ClassPathResource(view);
acpHandler = new ACPImportPackageHandler(acpResource.getFile(), encoding);
}
else
{
viewReader = getReader(view, encoding);
}
// Create import location // Create import location
Location importLocation = new Location(storeRef); Location importLocation = new Location(storeRef);
@@ -327,7 +336,21 @@ public class ImporterBootstrap
} }
// Now import... // Now import...
importerService.importView(viewReader, importLocation, binding, new BootstrapProgress()); ImporterProgress importProgress = null;
if (logger.isDebugEnabled())
{
importProgress = new ImportTimerProgress();
logger.debug("Importing " + view);
}
if (viewReader != null)
{
importerService.importView(viewReader, importLocation, binding, importProgress);
}
else
{
importerService.importView(acpHandler, importLocation, binding, importProgress);
}
} }
} }
} }
@@ -450,99 +473,6 @@ public class ImporterBootstrap
} }
} }
/**
* Bootstrap Progress (debug logging)
*/
private class BootstrapProgress implements ImporterProgress
{
/* (non-Javadoc)
* @see org.alfresco.repo.importer.Progress#nodeCreated(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName, org.alfresco.service.namespace.QName)
*/
public void nodeCreated(NodeRef nodeRef, NodeRef parentRef, QName assocName, QName childName)
{
if (logger.isDebugEnabled())
logger.debug("Created node " + nodeRef + " (child name: " + childName + ") within parent " + parentRef + " (association type: " + assocName + ")");
}
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.view.ImporterProgress#nodeLinked(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName, org.alfresco.service.namespace.QName)
*/
public void nodeLinked(NodeRef nodeRef, NodeRef parentRef, QName assocName, QName childName)
{
if (logger.isDebugEnabled())
logger.debug("Linked node " + nodeRef + " (child name: " + childName + ") within parent " + parentRef + " (association type: " + assocName + ")");
}
/* (non-Javadoc)
* @see org.alfresco.repo.importer.Progress#contentCreated(org.alfresco.service.cmr.repository.NodeRef, java.lang.String)
*/
public void contentCreated(NodeRef nodeRef, String sourceUrl)
{
if (logger.isDebugEnabled())
logger.debug("Imported content from " + sourceUrl + " into node " + nodeRef);
}
/* (non-Javadoc)
* @see org.alfresco.repo.importer.Progress#propertySet(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName, java.io.Serializable)
*/
public void propertySet(NodeRef nodeRef, QName property, Serializable value)
{
if (logger.isDebugEnabled())
logger.debug("Property " + property + " set to value " + value + " on node " + nodeRef);
}
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.view.ImporterProgress#permissionSet(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.cmr.security.AccessPermission)
*/
public void permissionSet(NodeRef nodeRef, AccessPermission permission)
{
if (logger.isDebugEnabled())
logger.debug("Permission " + permission.getPermission() + " set on node " + nodeRef + " (authority=" + permission.getAuthority() +
", accessStatus=" + permission.getAccessStatus() + ")");
}
/* (non-Javadoc)
* @see org.alfresco.repo.importer.Progress#aspectAdded(org.alfresco.service.cmr.repository.NodeRef, org.alfresco.service.namespace.QName)
*/
public void aspectAdded(NodeRef nodeRef, QName aspect)
{
if (logger.isDebugEnabled())
logger.debug("Added aspect " + aspect + " to node " + nodeRef);
}
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.view.ImporterProgress#started()
*/
public void started()
{
if (logger.isDebugEnabled())
logger.debug("Started");
}
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.view.ImporterProgress#completed()
*/
public void completed()
{
if (logger.isDebugEnabled())
logger.debug("Completed");
}
/*
* (non-Javadoc)
* @see org.alfresco.service.cmr.view.ImporterProgress#error(java.lang.Exception)
*/
public void error(Throwable e)
{
if (logger.isDebugEnabled())
logger.debug("Error: " + e.toString());
}
}
/** /**
* Determine if bootstrap should take place * Determine if bootstrap should take place
* *