/*
* Copyright 2012 PRODYNA AG
*
* Licensed under the Eclipse Public License (EPL), Version 1.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.opensource.org/licenses/eclipse-1.0.php or
* http://www.nabucco.org/License.html
*
* 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.nabucco.framework.common.authorization.ui.rcp.search.permission.model;
import java.util.List;
import org.nabucco.framework.base.facade.datatype.Description;
import org.nabucco.framework.base.facade.datatype.Name;
import org.nabucco.framework.base.facade.datatype.Owner;
import org.nabucco.framework.base.facade.datatype.collection.NabuccoList;
import org.nabucco.framework.base.facade.exception.client.ClientException;
import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationGroup;
import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationPermission;
import org.nabucco.framework.common.authorization.facade.datatype.search.AuthorizationSearchParameter;
import org.nabucco.framework.common.authorization.facade.datatype.search.AuthorizationType;
import org.nabucco.framework.common.authorization.facade.message.AuthorizationPermissionListMsg;
import org.nabucco.framework.common.authorization.facade.message.search.AuthorizationSearchMsg;
import org.nabucco.framework.common.authorization.ui.rcp.browser.permission.AuthorizationPermissionListViewBrowserElement;
import org.nabucco.framework.common.authorization.ui.rcp.communication.AuthorizationComponentServiceDelegateFactory;
import org.nabucco.framework.common.authorization.ui.rcp.communication.search.SearchAuthorizationDelegate;
import org.nabucco.framework.plugin.base.Activator;
import org.nabucco.framework.plugin.base.component.search.model.NabuccoComponentSearchModel;
import org.nabucco.framework.plugin.base.component.search.model.NabuccoComponentSearchParameter;
/**
* AuthorizationPermissionSearchBusinessModel
*
* @author Michael Krau�e, PRODYNA AG
*/
public class AuthorizationPermissionSearchBusinessModel implements NabuccoComponentSearchModel {
public static String ID = "org.nabucco.framework.common.authorization.ui.rcp.search.role.model.AuthorizationPermissionSearchBusinessModel";
/**
* Find permissions attached to groups.
*
* @param authorizationGroup
* the authorization group
*
* @return the list of permissions
*/
public List<AuthorizationPermission> findAuthorizationPermissionByGroup(AuthorizationGroup authorizationGroup) {
AuthorizationSearchMsg rq = this.createSearchMsg(authorizationGroup);
AuthorizationPermissionListMsg rs = this.search(rq);
return rs.getAuthorizationPermissionList();
}
@Override
public AuthorizationPermissionListViewBrowserElement search(NabuccoComponentSearchParameter parameter) {
if (parameter instanceof AuthorizationPermissionSearchViewModel) {
AuthorizationPermissionSearchViewModel viewModel = (AuthorizationPermissionSearchViewModel) parameter;
AuthorizationSearchMsg rq = this.createSearchMsg(viewModel);
AuthorizationPermissionListMsg rs = this.search(rq);
NabuccoList<AuthorizationPermission> permissionList = rs.getAuthorizationPermissionList();
if (!permissionList.isEmpty()) {
return new AuthorizationPermissionListViewBrowserElement(
permissionList.toArray(new AuthorizationPermission[permissionList.size()]));
}
}
return null;
}
/**
* Execute the search service.
*
* @param rq
* the request parameter
*
* @return the response paramter
*/
private AuthorizationPermissionListMsg search(AuthorizationSearchMsg rq) {
try {
SearchAuthorizationDelegate searchService = AuthorizationComponentServiceDelegateFactory.getInstance()
.getSearchAuthorization();
return searchService.searchAuthorizationPermission(rq);
} catch (ClientException e) {
Activator.getDefault().logError(e);
}
return null;
}
private AuthorizationSearchMsg createSearchMsg(AuthorizationGroup group) {
AuthorizationSearchMsg result = new AuthorizationSearchMsg();
AuthorizationSearchParameter param = new AuthorizationSearchParameter();
param.setType(AuthorizationType.GROUP);
param.setId(group.getId());
result.getParameterList().add(param);
return result;
}
private AuthorizationSearchMsg createSearchMsg(AuthorizationPermissionSearchViewModel model) {
AuthorizationSearchMsg msg = new AuthorizationSearchMsg();
msg.setName(getName(model));
msg.setOwner(getOwner(model));
msg.setDescription(getDescription(model));
return msg;
}
private Name getName(AuthorizationPermissionSearchViewModel searchViewModel) {
String name = searchViewModel.getPermissionPermissionname();
if (name == null || name.isEmpty()) {
return null;
}
return new Name(name);
}
private Owner getOwner(AuthorizationPermissionSearchViewModel searchViewModel) {
String owner = searchViewModel.getOwner();
if (owner == null || owner.isEmpty()) {
return null;
}
return new Owner(owner);
}
private Description getDescription(AuthorizationPermissionSearchViewModel searchViewModel) {
String description = searchViewModel.getPermissionDescription();
if (description == null || description.isEmpty()) {
return null;
}
return new Description(description);
}
}