/*
* Copyright (c) 2009-2010 Lockheed Martin Corporation
*
* 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.eurekastreams.server.action.execution;
import java.util.List;
import org.eurekastreams.server.domain.Person;
import org.eurekastreams.server.domain.stream.Stream;
import org.eurekastreams.server.persistence.OrganizationMapper;
import org.eurekastreams.server.persistence.PersonMapper;
import org.eurekastreams.server.persistence.TabMapper;
import org.eurekastreams.server.persistence.mappers.DomainMapper;
import org.eurekastreams.server.service.actions.strategies.PersonCreator;
import org.eurekastreams.server.service.actions.strategies.UpdaterStrategy;
/**
* Factory to produce a ServiceAction that will create a Person record.
*/
public class CreatePersonActionFactory
{
/**
* TabMapper.
*/
private TabMapper tabMapper;
/**
* OrganizationMapper.
*/
private OrganizationMapper organizationMapper;
/**
* Mapper to get the readonly streams.
*/
private DomainMapper<Long, List<Stream>> readonlyStreamsMapper;
/**
* List of the names of readonly streams to add to a person, in order.
*/
private List<String> readOnlyStreamsNameList;
/**
* List of Strings describing the start pages to be added to a new user.
*/
private final List<String> startPageTabs;
/**
* Constructor.
*
* @param inTabMapper
* TabMapper.
* @param inOrganizationMapper
* OrganizationMapper.
* @param inReadonlyStreamsMapper
* mapper to get back all readonly streams
* @param inReadOnlyStreamsNameList
* list of stream names to add to the new user, in order
* @param inStartPageTabs
* list of tabs to be added to the start page.
*/
public CreatePersonActionFactory(final TabMapper inTabMapper, final OrganizationMapper inOrganizationMapper,
final DomainMapper<Long, List<Stream>> inReadonlyStreamsMapper, //
final List<String> inReadOnlyStreamsNameList,
final List<String> inStartPageTabs)
{
tabMapper = inTabMapper;
organizationMapper = inOrganizationMapper;
readonlyStreamsMapper = inReadonlyStreamsMapper;
readOnlyStreamsNameList = inReadOnlyStreamsNameList;
startPageTabs = inStartPageTabs;
}
/**
* Get a PersistResourceAction set up for Person.
*
* @param inPersonMapper
* the person mapper to be injected into the action
* @param inUpdater
* Updater
* @return the newly built action
*/
public PersistResourceExecution<Person> getCreatePersonAction(final PersonMapper inPersonMapper,
final UpdaterStrategy inUpdater)
{
return new PersistResourceExecution<Person>(inPersonMapper, this, inUpdater, new PersonCreator(inPersonMapper,
tabMapper, organizationMapper, readonlyStreamsMapper, readOnlyStreamsNameList, startPageTabs));
}
}