/**
* Copyright 2013 Tommi S.E. Laukkanen
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.bubblecloud.ilves.site;
import org.bubblecloud.ilves.security.DefaultRoles;
import org.bubblecloud.ilves.site.view.valo.DefaultValoView;
import org.bubblecloud.ilves.ui.AccessDeniedViewlet;
import org.bubblecloud.ilves.ui.administrator.company.CompanyFlowViewlet;
import org.bubblecloud.ilves.ui.administrator.directory.UserDirectoryFlowViewlet;
import org.bubblecloud.ilves.ui.administrator.group.GroupFlowViewlet;
import org.bubblecloud.ilves.ui.administrator.user.UserFlowViewlet;
import org.bubblecloud.ilves.ui.anonymous.EmailValidationViewlet;
import org.bubblecloud.ilves.ui.anonymous.PasswordResetViewlet;
import org.bubblecloud.ilves.ui.anonymous.login.LoginFlowViewlet;
import org.bubblecloud.ilves.ui.anonymous.login.OpenIdLoginViewlet;
import org.bubblecloud.ilves.ui.user.AccountFlowViewlet;
import org.bubblecloud.ilves.ui.user.OpenIdLinkViewlet;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* Bare site content provider.
*/
public class DefaultContentProvider implements ContentProvider {
/**
* The site descriptor.
*/
private final SiteDescriptor siteDescriptor;
public DefaultContentProvider() {
final List<ViewDescriptor> viewDescriptors = Collections.synchronizedList(new ArrayList<ViewDescriptor>());
final ViewDescriptor master = new ViewDescriptor("master", "Master", DefaultValoView.class);
master.setViewerRoles("superuser");
viewDescriptors.add(master);
final ViewDescriptor configuration = new ViewDescriptor("configuration", "Configuration", DefaultValoView.class);
configuration.setViewerRoles(DefaultRoles.USER, DefaultRoles.ADMINISTRATOR);
viewDescriptors.add(configuration);
final ViewDescriptor personal = new ViewDescriptor("personal", "Personal", DefaultValoView.class);
configuration.setViewerRoles(DefaultRoles.USER, DefaultRoles.ADMINISTRATOR);
viewDescriptors.add(personal);
final ViewDescriptor users = new ViewDescriptor("users", "Users", DefaultValoView.class);
users.setViewerRoles(DefaultRoles.ADMINISTRATOR);
users.setViewletClass("content", UserFlowViewlet.class);
viewDescriptors.add(users);
final ViewDescriptor groups = new ViewDescriptor("groups", "Groups", DefaultValoView.class);
groups.setViewerRoles(DefaultRoles.ADMINISTRATOR);
groups.setViewletClass("content", GroupFlowViewlet.class);
viewDescriptors.add(groups);
final ViewDescriptor directories = new ViewDescriptor("directories", "Directories", DefaultValoView.class);
directories.setViewerRoles(DefaultRoles.ADMINISTRATOR);
directories.setViewletClass("content", UserDirectoryFlowViewlet.class);
viewDescriptors.add(directories);
final ViewDescriptor companies = new ViewDescriptor("companies", "Companies", DefaultValoView.class);
companies.setViewerRoles(DefaultRoles.ADMINISTRATOR);
companies.setViewletClass("content", CompanyFlowViewlet.class);
viewDescriptors.add(companies);
final ViewDescriptor accessDenied = new ViewDescriptor("denied", "Access Denied", DefaultValoView.class);
accessDenied.setViewerRoles(DefaultRoles.ANONYMOUS);
accessDenied.setViewletClass("content", AccessDeniedViewlet.class);
viewDescriptors.add(accessDenied);
final ViewDescriptor login = new ViewDescriptor("login", "Login", DefaultValoView.class);
login.setViewerRoles(DefaultRoles.ANONYMOUS);
login.setViewletClass("content", LoginFlowViewlet.class);
viewDescriptors.add(login);
final ViewDescriptor account = new ViewDescriptor("account", "Account", DefaultValoView.class);
account.setViewerRoles(DefaultRoles.USER, DefaultRoles.ADMINISTRATOR);
account.setViewletClass("content", AccountFlowViewlet.class);
viewDescriptors.add(account);
final ViewDescriptor validate = new ViewDescriptor("validate", "Email Validation", DefaultValoView.class);
validate.setViewletClass("content", EmailValidationViewlet.class);
viewDescriptors.add(validate);
final ViewDescriptor openidlink = new ViewDescriptor("openidlink", "OpenID Link", DefaultValoView.class);
openidlink.setViewerRoles(DefaultRoles.USER, DefaultRoles.ADMINISTRATOR);
openidlink.setViewletClass("content", OpenIdLinkViewlet.class);
viewDescriptors.add(openidlink);
final ViewDescriptor openidlogin = new ViewDescriptor("openidlogin", "OpenID Login", DefaultValoView.class);
openidlogin.setViewerRoles(DefaultRoles.ANONYMOUS);
openidlogin.setViewletClass("content", OpenIdLoginViewlet.class);
viewDescriptors.add(openidlogin);
final ViewDescriptor reset = new ViewDescriptor("reset", "Password Reset", DefaultValoView.class);
reset.setViewletClass("content", PasswordResetViewlet.class);
viewDescriptors.add(reset);
final NavigationVersion navigationVersion = new NavigationVersion(0, "users", null, true);
navigationVersion.addRootPage("configuration");
navigationVersion.addChildPage("configuration", "users");
navigationVersion.addChildPage("configuration", "groups");
navigationVersion.addChildPage("configuration", "directories");
navigationVersion.addChildPage("configuration", "companies");
navigationVersion.addRootPage("personal");
navigationVersion.addChildPage("personal", "account");
navigationVersion.addChildPage("personal", "login");
final NavigationDescriptor navigationDescriptor = new NavigationDescriptor("navigation", null, null,
navigationVersion);
siteDescriptor = new SiteDescriptor("Test site.", "test site", "This is a test site.",
navigationDescriptor, viewDescriptors);
}
@Override
public SiteDescriptor getSiteDescriptor() {
return siteDescriptor;
}
@Override
public SiteDescriptor getDynamicSiteDescriptor() {
final SiteDescriptor dynamicSiteDescriptor = siteDescriptor.clone();
SiteModuleManager.injectDynamicContent(dynamicSiteDescriptor);
return dynamicSiteDescriptor;
}
}