/* * Created on 2006.06.01. */ package com.processpuzzle.artifact_management.control; import java.util.ArrayList; import java.util.Iterator; import com.processpuzzle.application.configuration.domain.ProcessPuzzleContext; import com.processpuzzle.application.control.control.CommandDispatcher; import com.processpuzzle.application.security.control.AuthorizationException; import com.processpuzzle.artifact.domain.Artifact; import com.processpuzzle.artifact.domain.DefaultArtifactRepository; import com.processpuzzle.persistence.domain.DefaultUnitOfWork; import com.processpuzzle.user_session.domain.UserRequestManager; /** * @author peter.krima */ public class RemoveRelatedArtifactCommand extends ArtifactViewCommand { public static final String REMOVE_RELATED_ARTIFACT_COMMAND_NAME = "RemoveRelatedArtifact"; public static final String TARGETARTIFACT_NAME_PARAM = "targetArtifactName"; public static final String TARGETARTIFACT_ID_PARAM = "targetArtifactId"; protected String targetArtifactName; protected String targetArtifactId; protected Artifact<?> targetArtifact; public void init( CommandDispatcher dispatcher ) { super.init( dispatcher ); findTargetArtifact( dispatcher ); if( loggedInUser != null ){ removeRelatedArtifact( dispatcher ); }else throw new AuthorizationException( loggedInUser.getUserName(), RemoveRelatedArtifactCommand.class.getSimpleName() ); } protected void retrieveRequestParameters( CommandDispatcher dispatcher ) { super.retrieveRequestParameters( dispatcher ); targetArtifactName = (String) dispatcher.getProperties().getProperty( TARGETARTIFACT_NAME_PARAM ); targetArtifactId = (String) dispatcher.getProperties().getProperty( TARGETARTIFACT_ID_PARAM ); } private void findTargetArtifact( CommandDispatcher dispatcher ) { DefaultUnitOfWork work = new DefaultUnitOfWork( true ); if( targetArtifactId != null || targetArtifactName != null ){ ProcessPuzzleContext applicationContext = UserRequestManager.getInstance().getApplicationContext(); DefaultArtifactRepository artifactRepository = (DefaultArtifactRepository) applicationContext .getRepository( DefaultArtifactRepository.class ); targetArtifact = artifactRepository.findByName( work, targetArtifactName ); if( targetArtifact == null ) targetArtifact = artifactRepository.findById( work, new Integer( targetArtifactId ) ); } work.finish(); } @SuppressWarnings("unchecked") protected void removeRelatedArtifact( CommandDispatcher dispatcher ) { DefaultUnitOfWork work = new DefaultUnitOfWork( true ); ArrayList<String> targetArtifacts = null; if( dispatcher.getProperties().getProperty( TARGETARTIFACT_ID_PARAM ) != null ){ targetArtifacts = new ArrayList<String>(); targetArtifacts.add( dispatcher.getProperties().getProperty( TARGETARTIFACT_ID_PARAM ) ); }else if( dispatcher.getPropertyValues().get( TARGETARTIFACT_ID_PARAM ) != null ){ targetArtifacts = (ArrayList<String>) dispatcher.getPropertyValues().get( TARGETARTIFACT_ID_PARAM ); } if( targetArtifacts != null ){ ProcessPuzzleContext applicationContext = UserRequestManager.getInstance().getApplicationContext(); DefaultArtifactRepository artifactRepository = (DefaultArtifactRepository) applicationContext .getRepository( DefaultArtifactRepository.class ); for( Iterator<String> iter = targetArtifacts.iterator(); iter.hasNext(); ){ Artifact targetArtifact = (Artifact) artifactRepository.findById( work, new Integer( iter.next() ) ); subjectArtifact.removeRelatedArtifact( targetArtifact.getName() ); } artifactRepository.update( work, subjectArtifact ); } work.finish(); } public String execute( CommandDispatcher dispatcher ) throws Exception { return subjectArtifactView.getType().getPresentationUri(); } protected void retrieveResponseDocument() {} }