Introduction
uPortal now has an export/import system using xml files generated by Cernunnos export scripts. Basically, you will run an export command on your existing portal project to generate a number of xml data files. You then run import in your uPortal3 project to import the data from these xml files into your uPortal3 database. Take a look at the Cernunnos overview to get a better understanding of this process. After that, move on to reading about Exporting and Importing.
TIP: Never export/import a database with portals actively connected to it. Don't assume edits to a database will persist or take affect if portals are connected to it. The portal does some advanced caching and may overwrite your change when it shuts down or never see a new change because it's using a cached copy of the row.
These scripts still have a few bugs. Familiarize yourself with the known export/import bugs in JIRA and post any new bugs you find.
Default Database
The default database is populated by the db-import task in build.xml. This task is called by ant initdb, which in turn is called by ant initportal. The db-import task actually uses crn-import to create the database:
Code Block |
---|
<antcall target="crn-import">
<param name="dir" value="${basedir}/uportal-impl/src/main/resources/properties/db/entities" />
</antcall>
|
As you can see, it simply calls crn-import on the entities directory. Take a look at this directory to see the xml format for groups, layouts, channels, etc.
Your Default Database
I highly recommend setting up an entities directory for your team once you've had a successful export. This is completely optional, but it's easy to setup and allows developers on your team to populate their development databases with the groups, channels, permissions, fragment-layouts, etc that your production portal uses. After you've completed your export copy your export folder under: uportal-impl/src/main/resources/properties/db
In my case, I called the folder calpoly_entities
The contents should look something like this (note that I've omitted the contents of the larger directories):
Panel |
---|
channel: channel-type: entity-type: fragment-layout: fragment-users: group_membership: layout: permission: structure: theme: user: |
Modify build.xml
Now in your build.xml you should add a import task for your entities and change initdb to not call the default entities.
Code Block |
---|
<target name="db-import-calpoly" description="Imports the CalPoly groups, channels, memberships, permissions from a snapshot of prod Nov 2008">
<echo message="Importing CalPoly groups, channels, memberships, permissions data" />
<antcall target="crn-import">
<param name="dir" value="${basedir}/uportal-impl/src/main/resources/properties/db/calpoly_entities" />
</antcall>
</target>
|
In initdb remove the call to db-import. I also printed a message here:
Code Block |
---|
<echo message="You now need to run db-import-default, or db-import-calpoly to populate a working database." />
|
Note that I renamed db-import to db-import-default in my build.xml