/*
* Copyright (c) 2011 PonySDK
* Owners:
* Luciano Broussal <luciano.broussal AT gmail.com>
* Mathieu Barbier <mathieu.barbier AT gmail.com>
* Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com>
*
* WebSite:
* http://code.google.com/p/pony-sdk/
*
* 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 com.ponysdk.impl.webapplication.page;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Map.Entry;
public class DefaultPageProvider implements PageProvider {
private final Map<String, PageActivity> allPageActivitiesDeclared = new LinkedHashMap<>();
private Map<String, PageActivity> allActivePageActivities;
@Override
public PageActivity getPageActivity(final String pageName) {
if (allActivePageActivities == null) {
initPagePermissions();
}
return allActivePageActivities.get(pageName);
}
@Override
public Collection<PageActivity> getPageActivities() {
if (allActivePageActivities == null) {
initPagePermissions();
}
return allActivePageActivities.values();
}
public void setPageActivities(final Collection<PageActivity> pageActivities) {
pageActivities.forEach(this::addPageActivity);
}
private void initPagePermissions() {
allActivePageActivities = new LinkedHashMap<>();
for (final Entry<String, PageActivity> entry : allPageActivitiesDeclared.entrySet()) {
allActivePageActivities.put(entry.getKey(), entry.getValue());
}
}
public void addPageActivity(final PageActivity pageActivity) {
if (pageActivity.getPageName() != null) {
allPageActivitiesDeclared.put(pageActivity.getPageName(), pageActivity);
} else if (pageActivity.getPageCategories() != null) {
for (final String category : pageActivity.getPageCategories()) {
allPageActivitiesDeclared.put(category, pageActivity);
}
}
}
}