001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041: package org.netbeans.modules.compapp.casaeditor.nodes;
042:
043: import java.util.List;
044: import org.netbeans.modules.compapp.casaeditor.CasaDataObject;
045: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaComponent;
046: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaWrapperModel;
047: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaConnection;
048: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaConsumes;
049: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaEndpoint;
050: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaPort;
051: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaProvides;
052: import org.netbeans.modules.compapp.casaeditor.model.casa.CasaServiceEngineServiceUnit;
053: import org.openide.util.lookup.InstanceContent;
054:
055: public class CasaNodeFactory {
056:
057: private CasaDataObject mDataObject;
058: private CasaWrapperModel mModel;
059:
060: public CasaNodeFactory(CasaDataObject dataObject,
061: CasaWrapperModel model) {
062: mDataObject = dataObject;
063: mModel = model;
064: }
065:
066: public CasaWrapperModel getCasaModel() {
067: return mModel;
068: }
069:
070: public InstanceContent createInstanceContent() {
071: InstanceContent content = new InstanceContent();
072: content.add(mDataObject);
073: content.add(mModel);
074: return content;
075: }
076:
077: public CasaNode createModelNode(CasaWrapperModel model) {
078: assert model != null;
079: return new CasaRootNode(model, this );
080: }
081:
082: public CasaNode createNode_connectionList(List<CasaConnection> data) {
083: return new ConnectionsNode(data, this );
084: }
085:
086: public CasaNode createNode_consumesList(List<CasaConsumes> data) {
087: return new ConsumesListNode(data, this );
088: }
089:
090: public CasaNode createNode_providesList(List<CasaProvides> data) {
091: return new ProvidesListNode(data, this );
092: }
093:
094: public CasaNode createNode_process(CasaEndpoint data) {
095: return new ServiceUnitProcessNode(data, this );
096: }
097:
098: public CasaNode createNode_suList(
099: List<CasaServiceEngineServiceUnit> data) {
100: return new ServiceEnginesNode(data, this );
101: }
102:
103: public CasaNode createNode_portList(List<CasaPort> data) {
104: return new WSDLEndpointsNode(data, this );
105: }
106:
107: public CasaNode createNodeFor(CasaComponent component) {
108: CasaNodeCreationVisitor visitor = new CasaNodeCreationVisitor(
109: this );
110: component.accept(visitor);
111: return visitor.getNode();
112: }
113:
114: /**
115: * Checks if the classes from source array are assignable to the
116: * corresponding classes from target array.
117: * Both arrays has to have the same quantity of elements.
118: *
119: private boolean isAssignable(Class<?>[] source, Class<?>[] target) {
120: if (source == null || target == null || source.length != target.length) {
121: return false;
122: }
123: for (int index = 0; index < source.length; index++) {
124: if (!target[index].isAssignableFrom(source[index])) {
125: return false;
126: }
127: }
128: return true;
129: }
130: */
131: }
|