blob: 5f851a9db4c87ebca632236027210d98c61effcc [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009 Cisco Systems, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Cisco Systems, Inc. - erdillon
*******************************************************************************/
package org.eclipse.tigerstripe.workbench.base.test.refactor;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.tigerstripe.workbench.TigerstripeException;
import org.eclipse.tigerstripe.workbench.base.test.utils.ModelProjectHelper;
import org.eclipse.tigerstripe.workbench.internal.core.model.AssociationArtifactInternal;
import org.eclipse.tigerstripe.workbench.internal.core.model.IAbstractArtifactInternal;
import org.eclipse.tigerstripe.workbench.model.deprecated_.IAbstractArtifact;
import org.eclipse.tigerstripe.workbench.model.deprecated_.IAssociationArtifact;
import org.eclipse.tigerstripe.workbench.model.deprecated_.IAssociationEnd;
import org.eclipse.tigerstripe.workbench.model.deprecated_.IField;
import org.eclipse.tigerstripe.workbench.model.deprecated_.IType;
import org.eclipse.tigerstripe.workbench.refactor.IRefactorCommand;
import org.eclipse.tigerstripe.workbench.refactor.ModelRefactorRequest;
import org.eclipse.tigerstripe.workbench.refactor.PackageModelRefactorRefactorRequest;
public class TestComplexPackageRefactorRequest extends AbstractRefactorTest {
protected final static String GRANDCHILD = ".grandChild";
protected final static String SECOND_SUB_PACKAGE = FIRST_SUB_PACKAGE+GRANDCHILD;
protected final static String M4 = ".M4";
protected final static String AS2 = ".A2";
@Override
public void createProjectAndEntities() throws Exception {
super.createProjectAndEntities();
// Now lets add some subPackages and Entities therein
/*
* com.mycompany *
* M1*
* M2 (with attribute of type M1)*
* AC1 (from M1)*
* child *
* M3 (Extends M1)*
* > grandChild
* > M4 (with attribute of type M1)
* > AS2 (M2 -> M4)
*
* Then we'll rename grandChild
*
* Followed by rename of mycompany ..
*
*/
IAbstractArtifactInternal m4 = (IAbstractArtifactInternal) session
.makeArtifact(org.eclipse.tigerstripe.workbench.model.deprecated_.IManagedEntityArtifact.class
.getName());
m4.setFullyQualifiedName(SECOND_SUB_PACKAGE+M4);
IField attribute3 = m4.makeField();
attribute3.setName(ATT_3);
IType type = attribute3.makeType();
type.setFullyQualifiedName(ModelProjectHelper.M1);
attribute3.setType(type);
m4.addField(attribute3);
m4.doSave(null);
AssociationArtifactInternal as2 = (AssociationArtifactInternal) session
.makeArtifact(IAssociationArtifact.class.getName());
IAssociationEnd aEnd = as2.makeAssociationEnd();
IAssociationEnd zEnd = as2.makeAssociationEnd();
IType aType = aEnd.makeType();
IType zType = zEnd.makeType();
as2.setFullyQualifiedName(SECOND_SUB_PACKAGE+AS2);
aEnd = as2.makeAssociationEnd();
aEnd.setName("aaEnd");
aEnd.setNavigable(false);
aType = aEnd.makeType();
aType.setFullyQualifiedName(ModelProjectHelper.M2);
aEnd.setType(aType);
as2.setAEnd(aEnd);
zEnd = as2.makeAssociationEnd();
zEnd.setName("zzEnd");
zEnd.setNavigable(true);
zType = zEnd.makeType();
zType.setFullyQualifiedName(SECOND_SUB_PACKAGE+M4);
zEnd.setType(zType);
as2.setZEnd(zEnd);
as2.doSave(null);
}
public void testComplesPackageRename() throws Exception {
IAbstractArtifact pkg;
// First up a simple package rename
pkg = project.getArtifactManagerSession()
.getArtifactByFullyQualifiedName(ModelProjectHelper.DEFAULT_PKG);
assertNotNull(pkg);
PackageModelRefactorRefactorRequest req = new PackageModelRefactorRefactorRequest();
req.setOriginal(project,ModelProjectHelper.DEFAULT_PKG);
req.setDestination(project, ModelProjectHelper.DEFAULT_PKG+MODIFIED);
IRefactorCommand cmd = req.getCommand(null);
cmd.execute(null);
pkg = project.getArtifactManagerSession()
.getArtifactByFullyQualifiedName(ModelProjectHelper.DEFAULT_PKG+MODIFIED);
assertNotNull(pkg);
// This should still be there as there are children!
pkg = project.getArtifactManagerSession()
.getArtifactByFullyQualifiedName(ModelProjectHelper.DEFAULT_PKG);
assertNotNull(pkg);
req = new PackageModelRefactorRefactorRequest();
req.setOriginal(project,ModelProjectHelper.DEFAULT_PKG);
req.setDestination(project, ModelProjectHelper.DEFAULT_PKG+MODIFIED);
req.setRenameSubpackages(true);
cmd = req.getCommand(null);
cmd.execute(null);
pkg = project.getArtifactManagerSession()
.getArtifactByFullyQualifiedName(ModelProjectHelper.DEFAULT_PKG+MODIFIED);
assertNotNull(pkg);
// This should NO LONGER be there
pkg = project.getArtifactManagerSession()
.getArtifactByFullyQualifiedName(ModelProjectHelper.DEFAULT_PKG);
assertNull(pkg);
}
}