/* * 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.impl.service.importing; import java.util.List; import org.nabucco.framework.base.facade.datatype.Datatype; import org.nabucco.framework.base.facade.datatype.DatatypeState; import org.nabucco.framework.base.facade.datatype.NabuccoDatatype; import org.nabucco.framework.base.facade.datatype.importing.ImportContainer; import org.nabucco.framework.base.facade.datatype.importing.ImportContext; import org.nabucco.framework.base.facade.datatype.importing.ImportContextEntry; import org.nabucco.framework.base.facade.datatype.serialization.DeserializationData; import org.nabucco.framework.base.facade.datatype.serialization.SerializationException; import org.nabucco.framework.base.facade.datatype.serialization.xml.XmlSerializer; import org.nabucco.framework.base.facade.exception.persistence.PersistenceException; import org.nabucco.framework.base.facade.exception.service.ImportException; import org.nabucco.framework.base.facade.message.importing.ImportRq; import org.nabucco.framework.base.facade.message.importing.ImportRs; import org.nabucco.framework.base.impl.service.ServiceHandler; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationGroup; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationGroupPermissionRelation; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationGroupUserRelation; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationPermission; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationRole; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationRolePermissionRelation; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationUser; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationUserPermissionRelation; import org.nabucco.framework.common.authorization.facade.datatype.AuthorizationUserRoleRelation; /** * ImportAuthoritationServiceHandlerImpl * * @author Silas Schwarz, PRODYNA AG */ public class ImportAuthoritationServiceHandlerImpl extends ImportAuthoritationServiceHandler implements ServiceHandler { private static final long serialVersionUID = 1L; @Override protected ImportRs importAuthoritation(ImportRq msg) throws ImportException { ImportRs result = new ImportRs(); ImportContext importContext = msg.getImportContext(); ImportContainer importContainer = msg.getContainer(); result.setImportContext(importContext); try { XmlSerializer xmlSerializer = new XmlSerializer(); DeserializationData data = new DeserializationData(importContainer.getContent().getValue()); data.setResourceData(importContainer.getResourceData().getValue()); List<Datatype> deserialized = xmlSerializer.deserialize(data); for (Datatype current : deserialized) { if (current instanceof NabuccoDatatype) { this.importElement((NabuccoDatatype) current, importContext); } } } catch (SerializationException e) { throw new ImportException("Unable to deserialize xml content.", e); } return result; } private void importElement(NabuccoDatatype nd, ImportContext importContext) throws ImportException { if (nd instanceof AuthorizationGroup) { importElement(importContext, (AuthorizationGroup) nd); } else if (nd instanceof AuthorizationRole) { importElement(importContext, (AuthorizationRole) nd); } else if (nd instanceof AuthorizationUser) { importElement(importContext, (AuthorizationUser) nd); } else if (nd instanceof AuthorizationPermission) { importElement(importContext, (AuthorizationPermission) nd); } else if (nd instanceof AuthorizationUserRoleRelation) { importElement(importContext, (AuthorizationUserRoleRelation) nd); } else if (nd instanceof AuthorizationGroupPermissionRelation) { importElement(importContext, (AuthorizationGroupPermissionRelation) nd); } else if (nd instanceof AuthorizationRolePermissionRelation) { importElement(importContext, (AuthorizationRolePermissionRelation) nd); } else if (nd instanceof AuthorizationGroupUserRelation) { importElement(importContext, (AuthorizationGroupUserRelation) nd); } else if (nd instanceof AuthorizationUserPermissionRelation) { importElement(importContext, (AuthorizationUserPermissionRelation) nd); } } private ImportContextEntry createEntry(NabuccoDatatype nd) { ImportContextEntry entry = new ImportContextEntry(); entry.setOldId(nd.getId()); entry.setTypeName(nd.getClass().getName()); nd.setDatatypeState(DatatypeState.INITIALIZED); nd.setId((Long) null); return entry; } private void importElement(ImportContext context, AuthorizationGroup group) throws ImportException { ImportContextEntry createdEntry = createEntry(group); try { AuthorizationGroup persistent = super.getPersistenceManager().persist(group); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationGroup.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationPermission permission) throws ImportException { ImportContextEntry createdEntry = createEntry(permission); try { AuthorizationPermission persistent = super.getPersistenceManager().persist(permission); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationPermission.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationRole role) throws ImportException { ImportContextEntry createdEntry = createEntry(role); try { AuthorizationRole persistent = super.getPersistenceManager().persist(role); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationRole.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationUser user) throws ImportException { ImportContextEntry createdEntry = createEntry(user); try { AuthorizationUser persistent = super.getPersistenceManager().persist(user); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationUser.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationUserRoleRelation relation) throws ImportException { ImportContextEntry createdEntry = createEntry(relation); try { AuthorizationUserRoleRelation persistent = super.getPersistenceManager().persist(relation); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationUserRoleRelation.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationGroupPermissionRelation relation) throws ImportException { ImportContextEntry createdEntry = createEntry(relation); try { AuthorizationGroupPermissionRelation persistent = super.getPersistenceManager().persist(relation); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationGroupPermissionRelation.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationRolePermissionRelation relation) throws ImportException { ImportContextEntry createdEntry = createEntry(relation); try { AuthorizationRolePermissionRelation persistent = super.getPersistenceManager().persist(relation); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationRolePermissionRelation.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationGroupUserRelation relation) throws ImportException { ImportContextEntry createdEntry = createEntry(relation); try { AuthorizationGroupUserRelation persistent = super.getPersistenceManager().persist(relation); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationGroupUserRelation.", e); } context.getEntries().add(createdEntry); } private void importElement(ImportContext context, AuthorizationUserPermissionRelation relation) throws ImportException { ImportContextEntry createdEntry = createEntry(relation); try { AuthorizationUserPermissionRelation persistent = super.getPersistenceManager().persist(relation); createdEntry.setNewId(persistent.getId()); } catch (PersistenceException e) { throw new ImportException("Unable to import AuthorizationUserPermissionRelation.", e); } context.getEntries().add(createdEntry); } }