001: /*
002: * The contents of this file are subject to the terms of the Common Development
003: * and Distribution License (the License). You may not use this file except in
004: * compliance with the License.
005: *
006: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
007: * or http://www.netbeans.org/cddl.txt.
008: *
009: * When distributing Covered Code, include this CDDL Header Notice in each file
010: * and include the License file at http://www.netbeans.org/cddl.txt.
011: * If applicable, add the following below the CDDL Header, with the fields
012: * enclosed by brackets [] replaced by your own identifying information:
013: * "Portions Copyrighted [year] [name of copyright owner]"
014: *
015: * The Original Software is NetBeans. The Initial Developer of the Original
016: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
017: * Microsystems, Inc. All Rights Reserved.
018: */
019: package org.netbeans.modules.bpel.nodes.refactoring;
020:
021: import java.util.List;
022: import org.netbeans.modules.bpel.model.api.Activity;
023: import org.netbeans.modules.bpel.model.api.BooleanExpr;
024: import org.netbeans.modules.bpel.model.api.BpelEntity;
025: import org.netbeans.modules.bpel.model.api.Branches;
026: import org.netbeans.modules.bpel.model.api.For;
027: import org.netbeans.modules.bpel.model.api.From;
028: import org.netbeans.modules.bpel.model.api.Import;
029: import org.netbeans.modules.bpel.model.api.PartnerLink;
030: import org.netbeans.modules.bpel.model.api.Process;
031: import org.netbeans.modules.bpel.model.api.Assign;
032: import org.netbeans.modules.bpel.model.api.RepeatEvery;
033: import org.netbeans.modules.bpel.model.api.To;
034: import org.netbeans.modules.bpel.model.api.Variable;
035: import org.netbeans.modules.bpel.model.api.support.BpelModelVisitorAdaptor;
036: import org.netbeans.modules.xml.xam.Component;
037:
038: /**
039: *
040: * @author Vitaly Bychkov
041: * @version 1.0
042: *
043: */
044: public class RefactoringBpelModelVisitor extends
045: BpelModelVisitorAdaptor {
046:
047: private List<Component> myPresentedUsageStructure;
048:
049: public RefactoringBpelModelVisitor(
050: List<Component> presentedUsageStructure) {
051: myPresentedUsageStructure = presentedUsageStructure;
052: if (myPresentedUsageStructure == null) {
053: throw new IllegalStateException(
054: "the list myPresentedUsageStructure shouldn't be null"); // NOI18N
055: }
056: }
057:
058: @Override
059: public void visit(PartnerLink usageEntity) {
060: if (usageEntity == null) {
061: return;
062: }
063: setUsageObject(usageEntity);
064:
065: BpelEntity parent = usageEntity.getParent();
066: parent = parent == null ? null : parent.getParent();
067: if (!(parent instanceof Process)) {
068: setUsageContext(parent);
069: }
070: }
071:
072: @Override
073: public void visit(Assign usageEntity) {
074: if (usageEntity == null) {
075: return;
076: }
077: setUsageObject(usageEntity);
078:
079: BpelEntity parent = usageEntity.getParent();
080: parent = parent == null ? null : parent.getParent();
081: setUsageContext(parent);
082: }
083:
084: @Override
085: public void visit(BooleanExpr usageEntity) {
086: setThreeLevelGeneralStructure(usageEntity);
087: }
088:
089: @Override
090: public void visit(Branches usageEntity) {
091: setThreeLevelGeneralStructure(usageEntity);
092: }
093:
094: @Override
095: public void visit(From usageEntity) {
096: setThreeLevelGeneralStructure(usageEntity);
097: }
098:
099: @Override
100: public void visit(To usageEntity) {
101: setThreeLevelGeneralStructure(usageEntity);
102: }
103:
104: @Override
105: public void visit(For usageEntity) {
106: setTwoLevelGeneralStructure(usageEntity);
107: }
108:
109: @Override
110: public void visit(RepeatEvery usageEntity) {
111: setThreeLevelGeneralStructure(usageEntity);
112: }
113:
114: @Override
115: public void visit(Variable usageEntity) {
116: setTwoLevelGeneralStructure(usageEntity);
117: }
118:
119: @Override
120: public void visit(Import usageEntity) {
121: setTwoLevelGeneralStructure(usageEntity);
122: }
123:
124: @Override
125: protected void visit(Activity usageEntity) {
126: setTwoLevelGeneralStructure(usageEntity);
127: }
128:
129: private void setThreeLevelGeneralStructure(BpelEntity usageEntity) {
130: if (usageEntity == null) {
131: return;
132: }
133: setUsageDetail(usageEntity);
134:
135: BpelEntity parent = usageEntity.getParent();
136: setUsageObject(parent);
137: setUsageContext(parent == null ? null : parent.getParent());
138: }
139:
140: private void setTwoLevelGeneralStructure(BpelEntity usageEntity) {
141: if (usageEntity == null) {
142: return;
143: }
144: setUsageObject(usageEntity);
145: setUsageContext(usageEntity.getParent());
146: }
147:
148: private void setUsageContext(BpelEntity usageEntity) {
149: if (usageEntity == null) {
150: return;
151: }
152: setUsageContextCookie(usageEntity);
153: myPresentedUsageStructure.add(0, usageEntity);
154: }
155:
156: private void setUsageObject(BpelEntity usageEntity) {
157: if (usageEntity == null) {
158: return;
159: }
160: setUsageObjectCookie(usageEntity);
161: myPresentedUsageStructure.add(0, usageEntity);
162: }
163:
164: private void setUsageDetail(BpelEntity usageEntity) {
165: if (usageEntity == null) {
166: return;
167: }
168: setUsageDetailCookie(usageEntity);
169: myPresentedUsageStructure.add(0, usageEntity);
170: }
171:
172: private void setUsageContextCookie(BpelEntity usageEntity) {
173: setUsageTypeCookie(UsageNodeType.USAGE_CONTEXT, usageEntity);
174: }
175:
176: private void setUsageObjectCookie(BpelEntity usageEntity) {
177: setUsageTypeCookie(UsageNodeType.USAGE_OBJECT, usageEntity);
178: }
179:
180: private void setUsageDetailCookie(BpelEntity usageEntity) {
181: setUsageTypeCookie(UsageNodeType.USAGE_DETAIL, usageEntity);
182: }
183:
184: private void setUsageTypeCookie(UsageNodeType usageType,
185: BpelEntity usageEntity) {
186: usageEntity.removeCookie(UsageNodeType.class);
187: usageEntity.setCookie(UsageNodeType.class, usageType);
188: }
189: }
|