//
SiteKey key = new SiteKey(src.getOwnerType(), src.getOwnerId());
//
NavigationContext dst = service.loadNavigation(key);
//
switch (mode)
{
case CONSERVE:
if (dst == null)
{
dst = new NavigationContext(key, new NavigationState(src.getPriority()));
service.saveNavigation(dst);
}
else
{
dst = null;
}
break;
case MERGE:
case INSERT:
if (dst == null)
{
dst = new NavigationContext(key, new NavigationState(src.getPriority()));
service.saveNavigation(dst);
}
break;
case OVERWRITE:
if (dst == null)
{
dst = new NavigationContext(key, new NavigationState(src.getPriority()));
service.saveNavigation(dst);
}
break;
default:
throw new AssertionError();
}
//
if (dst != null)
{
ArrayList<NavigationFragment> fragments = src.getFragments();
if (fragments != null && fragments.size() > 0)
{
for (NavigationFragment fragment : fragments)
{
String parentURI = fragment.getParentURI();
// Find something better than that for building the path
List<String> path;
if (parentURI != null)
{
path = new ArrayList<String>();
String[] names = Utils.split("/", parentURI);
for (String name : names)
{
if (name.length() > 0)
{
path.add(name);
}
}
}
else
{
path = Collections.emptyList();
}
//
NavigationFragmentImporter fragmentImporter = new NavigationFragmentImporter(
path.toArray(new String[path.size()]),
service,
dst.getKey(),
portalLocale,
descriptionService,
fragment,
mode.config);