0001: /**
0002: * ChainBuilder ESB
0003: * Visual Enterprise Integration
0004: *
0005: * Copyright (C) 2006 Bostech Corporation
0006: *
0007: * This program is free software; you can redistribute it and/or modify it
0008: * under the terms of the GNU General Public License as published by the
0009: * Free Software Foundation; either version 2 of the License, or (at your option)
0010: * any later version.
0011: *
0012: * This program is distributed in the hope that it will be useful,
0013: * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
0014: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0015: * for more details.
0016: *
0017: * You should have received a copy of the GNU General Public License along with
0018: * this program; if not, write to the Free Software Foundation, Inc.,
0019: * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
0020: *
0021: *
0022: * $Id$
0023: */package com.bostechcorp.cbesb.ui.ide.customcomponent.wizard;
0024:
0025: import java.net.MalformedURLException;
0026: import java.net.URL;
0027: import java.util.ArrayList;
0028: import java.util.Date;
0029: import java.util.HashMap;
0030: import java.util.List;
0031:
0032: import org.apache.commons.logging.Log;
0033: import org.apache.commons.logging.LogFactory;
0034: import org.eclipse.core.runtime.IPath;
0035: import org.eclipse.jdt.core.IPackageFragment;
0036:
0037: import com.bostechcorp.cbesb.common.util.EsbPathHelper;
0038: import com.bostechcorp.cbesb.common.util.FileUtil;
0039: import com.bostechcorp.cbesb.common.util.TemplateProcessorIO;
0040:
0041: /**
0042: * This class generates the whole project initial content
0043: * all java files necessary for Chainbuilder Custom component.
0044: * @author LPS
0045: */
0046: public class CBCCStructureGenerator {
0047:
0048: protected final transient Log logger = LogFactory
0049: .getLog(getClass());
0050:
0051: private IPath projectPath;
0052: public IPackageFragment javaPackage;
0053: public IPackageFragment javaProcessorsPackage;
0054: public IPackageFragment javaWsdlPackage;
0055: public IPackageFragment javaUiPackage;
0056:
0057: public HashMap<String, String> properties;
0058:
0059: List<PagesModelTableItem> consumerList = null;
0060: List<PagesModelTableItem> providerList = null;
0061:
0062: public String templateRoot = EsbPathHelper.getCbesbHomeDir()
0063: + "/config/template/custom.component/";
0064:
0065: public HashMap<String, String> holders = new HashMap<String, String>();
0066: TemplateProcessorIO writer;
0067:
0068: public CBCCStructureGenerator(IPath projectPath,
0069: IPackageFragment javaPackagePath,
0070: IPackageFragment javaProcessorsPackagePath,
0071: IPackageFragment javaWsdlPackagePath,
0072: IPackageFragment javaUiPackagePath,
0073: HashMap<String, String> props,
0074: List<PagesModelTableItem> consumerList,
0075: List<PagesModelTableItem> providerList) {
0076: this .projectPath = projectPath;
0077: this .javaPackage = javaPackagePath;
0078: this .javaProcessorsPackage = javaProcessorsPackagePath;
0079: this .javaWsdlPackage = javaWsdlPackagePath;
0080: this .javaUiPackage = javaUiPackagePath;
0081: this .properties = props;
0082: this .consumerList = consumerList;
0083: this .providerList = providerList;
0084:
0085: initHolders();
0086: }
0087:
0088: private void initHolders() {
0089: //UI file holders
0090: //HashMap<String, String> holders = new HashMap<String, String>();
0091: holders.put("#UIpackageName#", javaUiPackage.getElementName());
0092: holders.put("#CompUIClassName#", capitalizeFirst(properties
0093: .get(ComponentPropertiesComposite.NAME))
0094: + "CustomComponent");
0095:
0096: holders.put("#bigIconName#", "default32.ico");
0097: holders.put("#smallIconName#", "default16.ico");
0098: holders
0099: .put(
0100: "#ScheduleableConsumer#",
0101: properties
0102: .get(ComponentPropertiesComposite.CONSUMER_IS_SCHEDULED));
0103: //
0104: String surl = "";
0105: try {
0106: surl = new URL(properties
0107: .get(ComponentPropertiesComposite.URI)).toString()
0108: + ""
0109: + properties.get(ComponentPropertiesComposite.NAME)
0110: .toLowerCase().trim()
0111: + "/"
0112: + properties.get(
0113: ComponentPropertiesComposite.VERSION)
0114: .toLowerCase().trim();
0115: } catch (MalformedURLException e) {
0116: e.printStackTrace();
0117: logger.error("wrong URI", e);
0118: }
0119:
0120: holders.put("#componentURI#", surl);
0121: holders.put("#name#", properties
0122: .get(ComponentPropertiesComposite.NAME));
0123: holders.put("#description#", properties
0124: .get(ComponentPropertiesComposite.DESCRIPTION));
0125: holders.put("#componentName#", properties
0126: .get(ComponentPropertiesComposite.COMPONENT_NAME));
0127: holders.put("#vendor#", properties
0128: .get(ComponentPropertiesComposite.VENDOR));
0129: holders.put("#version#", properties
0130: .get(ComponentPropertiesComposite.VERSION));
0131:
0132: holders.put("#useDefaultDeploy#", properties
0133: .get(ComponentPropertiesComposite.DEFAULT_DEPLOY));
0134: holders.put("#useDefaultWSDLGenerator#", properties
0135: .get(ComponentPropertiesComposite.DEFAULT_WSDL));
0136: holders.put("#useCCSL#", properties
0137: .get(ComponentPropertiesComposite.USE_CCSL));
0138:
0139: holders.put("#role#", "Role."
0140: + properties.get(ComponentPropertiesComposite.ROLE));
0141: holders
0142: .put(
0143: "#providerDefaultMep#",
0144: "DefaultMEP."
0145: + properties
0146: .get(ComponentPropertiesComposite.PROVIDER_MEP));
0147: holders
0148: .put(
0149: "#consumerDefaultMep#",
0150: "DefaultMEP."
0151: + properties
0152: .get(ComponentPropertiesComposite.CONSUMER_MEP));
0153:
0154: holders.put("#WizardPagesAndProperties#",
0155: makePagesAndPropertiesStructure(consumerList,
0156: providerList));
0157:
0158: //bootstrap
0159: holders.put("#RootPackageName#", javaPackage.getElementName());
0160: holders.put("#bootstrapClassName#", capitalizeFirst(properties
0161: .get(ComponentPropertiesComposite.NAME))
0162: + "Bootstrap");
0163:
0164: // wsdl1Deployer
0165:
0166: holders.put("#Wsdl1DeployerClassName#",
0167: capitalizeFirst(properties
0168: .get(ComponentPropertiesComposite.NAME))
0169: + "Wsdl1Deployer");
0170: holders.put("#endpointClassName#", capitalizeFirst(properties
0171: .get(ComponentPropertiesComposite.NAME))
0172: + "Endpoint");
0173: holders.put("#consumerClassName#", capitalizeFirst(properties
0174: .get(ComponentPropertiesComposite.NAME))
0175: + "Consumer");
0176:
0177: holders
0178: .put(
0179: "#consumerProviderPackageAndClassName#",
0180: generateWsdl1DeployerConsumerProviderPackageAndClassName());
0181: holders.put("#providerClassName#", capitalizeFirst(properties
0182: .get(ComponentPropertiesComposite.NAME))
0183: + "Provider");
0184: holders.put("#extentionRegisrtation#",
0185: generateWsdl1DeployerExtentionRegistrstion());
0186: holders.put("#extentionRegisrtationPackages#",
0187: generateWsdl1DeployerExtentionRegistrstionPackages());
0188: holders.put("#endpointConsumerProperties#",
0189: generateWsdl1DeployerEndpointConsumerProperties());
0190: holders.put("#endpointProviderProperties#",
0191: generateWsdl1DeployerEndpointProviderProperties());
0192:
0193: //components
0194: holders.put("#componentClassName#", capitalizeFirst(properties
0195: .get(ComponentPropertiesComposite.NAME))
0196: + "Component");
0197:
0198: //endpoint
0199:
0200: holders.put("#consumerProcessorClassName#",
0201: capitalizeFirst(properties
0202: .get(ComponentPropertiesComposite.NAME))
0203: + "ConsumerHandler");
0204: holders.put("#providerProcessorClassName#",
0205: capitalizeFirst(properties
0206: .get(ComponentPropertiesComposite.NAME))
0207: + "ProviderProcessor");
0208: holders.put("#name#", capitalizeFirst(properties
0209: .get(ComponentPropertiesComposite.NAME)));
0210: holders.put("#EndpointAllProperties#",
0211: generateEndpointAllProperties());
0212: holders.put("#EndpointAllGettersAndSetters#",
0213: generateEndpointAllGettersAndSetters());
0214:
0215: //Processors files
0216:
0217: holders.put("#ProcessorsPackageName#", javaProcessorsPackage
0218: .getElementName());
0219: holders.put("#endpointClassName#", capitalizeFirst(properties
0220: .get(ComponentPropertiesComposite.NAME))
0221: + "Endpoint");
0222: holders.put("#rootPackage#", javaPackage.getElementName());
0223: holders.put("#consumerProcessorClassName#",
0224: capitalizeFirst(properties
0225: .get(ComponentPropertiesComposite.NAME))
0226: + "ConsumerHandler");
0227: holders.put("#providerProcessorClassName#",
0228: capitalizeFirst(properties
0229: .get(ComponentPropertiesComposite.NAME))
0230: + "ProviderProcessor");
0231:
0232: //Build Script
0233: holders.put("#componentName#", properties
0234: .get(ComponentPropertiesComposite.COMPONENT_NAME));
0235: holders.put("#version#", properties
0236: .get(ComponentPropertiesComposite.VERSION));
0237:
0238: holders.put("#CompUIClassName#", capitalizeFirst(properties
0239: .get(ComponentPropertiesComposite.NAME))
0240: + "CustomComponent");
0241: holders.put("#name#", properties
0242: .get(ComponentPropertiesComposite.NAME));
0243:
0244: // metaInf - ccsl
0245:
0246: //holders.put("#RootPackageName#",javaPackage.getElementName());
0247: holders.put("#componentClassName#", capitalizeFirst(properties
0248: .get(ComponentPropertiesComposite.NAME))
0249: + "Component");
0250:
0251: //jbi
0252:
0253: holders.put("#componentType#", getComponentType());
0254: holders.put("#componentName#", properties
0255: .get(ComponentPropertiesComposite.COMPONENT_NAME));
0256: holders.put("#description#", properties
0257: .get(ComponentPropertiesComposite.DESCRIPTION));
0258: holders.put("#projectName#", javaPackage.getPath().segment(0));
0259: holders.put("#JBIbootstrapClassName#", javaPackage
0260: .getElementName()
0261: + "."
0262: + capitalizeFirst(properties
0263: .get(ComponentPropertiesComposite.NAME))
0264: + "Bootstrap");
0265:
0266: // wsdl Provider files
0267: holders.put("#packageName#", javaWsdlPackage.getElementName());
0268: holders.put("#providerClassName#", capitalizeFirst(properties
0269: .get(ComponentPropertiesComposite.NAME))
0270: + "Provider");
0271: holders.put("#ProviderProperties#",
0272: generateProviderProperties());
0273: holders.put("#ProviderPropertiesGettersAndSetters#",
0274: generateProviderGettersAndSetters());
0275:
0276: // wsdl provider deserializer
0277:
0278: holders.put("#providerDeserializerClassName#",
0279: capitalizeFirst(properties
0280: .get(ComponentPropertiesComposite.NAME))
0281: + "ProviderDeserializer");
0282: holders.put("#ProviderUnmarshallSetters#",
0283: generateProviderUnmarshallSetters());
0284: //provider extention
0285:
0286: holders.put("#providerExtensionClassName#",
0287: capitalizeFirst(properties
0288: .get(ComponentPropertiesComposite.NAME))
0289: + "ProviderExtension");
0290: holders.put("#ProviderStaticConstants#",
0291: generateProviderExtentionStaticConstants());
0292: holders.put("#ComponentNamespace#", surl);
0293:
0294: // WSDL comnsumer files
0295: holders.put("#WSDLpackageName#", javaWsdlPackage
0296: .getElementName());
0297: holders.put("#consumerClassName#", capitalizeFirst(properties
0298: .get(ComponentPropertiesComposite.NAME))
0299: + "Consumer");
0300: holders.put("#ConsumerProperties#",
0301: generateConsumerProperties());
0302: holders.put("#ConsumerPropertiesGettersAndSetters#",
0303: generateConsumerGettersAndSetters());
0304:
0305: //consumer deserializer
0306:
0307: holders.put("#consumerDeserializerClassName#",
0308: capitalizeFirst(properties
0309: .get(ComponentPropertiesComposite.NAME))
0310: + "ConsumerDeserializer");
0311: holders.put("#ConsumerUnmarshallSetters#",
0312: generateConsumerUnmarshallSetters());
0313: holders.put("#consumerExtensionClassName#",
0314: capitalizeFirst(properties
0315: .get(ComponentPropertiesComposite.NAME))
0316: + "ConsumerExtension");
0317:
0318: //extention
0319: holders.put("#ConsumerStaticConstants#",
0320: generateConsumerExtendtionStaticConstants());
0321: holders.put("#ComponentNamespace#", surl);
0322:
0323: //TODO: put version holders
0324: //holders.put("#version#", xxsxs); already exist
0325: holders.put("#creationDate#", new Date(System
0326: .currentTimeMillis()).toString());
0327: }
0328:
0329: private String getComponentType() {
0330: String componentType = "";
0331: if (properties.get(
0332: ComponentPropertiesComposite.COMPONENT_NAME_AUX_PART2)
0333: .equals(ComponentPropertiesComposite.BC)) {
0334: componentType = "binding-component";
0335: } else if (properties.get(
0336: ComponentPropertiesComposite.COMPONENT_NAME_AUX_PART2)
0337: .equals(ComponentPropertiesComposite.SE)) {
0338: componentType = "service-engine";
0339: } else {
0340: componentType = "binding-component";
0341: }
0342: return componentType;
0343: }
0344:
0345: private void createWsdlFiels() throws Exception {
0346: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0347: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0348: generateWsdlConsumerFiles();
0349: } else if (((String) properties
0350: .get(ComponentPropertiesComposite.ROLE))
0351: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0352: generateWsdlProviderFiles();
0353: } else if (((String) properties
0354: .get(ComponentPropertiesComposite.ROLE))
0355: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0356: generateWsdlConsumerFiles();
0357: generateWsdlProviderFiles();
0358: }
0359: }
0360:
0361: private void createUIFiles() throws Exception {
0362: String inFile = templateRoot + "ui/CompUI.template";
0363: String outFile = projectPath.append(
0364: javaUiPackage.getPath().removeFirstSegments(1)).append(
0365: capitalizeFirst(properties
0366: .get(ComponentPropertiesComposite.NAME))
0367: + "CustomComponent.java").toOSString();
0368: writer = new TemplateProcessorIO(inFile, outFile, holders);
0369: writer.filterFile();
0370: }
0371:
0372: private void createRootPackageFiles() throws Exception {
0373: //bootStrap
0374: String inFile = templateRoot + "Bootstrap.template";
0375: String outFile = projectPath.append(
0376: javaPackage.getPath().removeFirstSegments(1)).append(
0377: capitalizeFirst(properties
0378: .get(ComponentPropertiesComposite.NAME))
0379: + "Bootstrap.java").toOSString();
0380: writer = new TemplateProcessorIO(inFile, outFile, holders);
0381: writer.filterFile();
0382:
0383: //wsdl deployer
0384:
0385: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0386: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0387: inFile = templateRoot + "Wsdl1Deployer_Consumer.template";
0388:
0389: } else if (((String) properties
0390: .get(ComponentPropertiesComposite.ROLE))
0391: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0392: inFile = templateRoot + "Wsdl1Deployer_Provider.template";
0393: } else if (((String) properties
0394: .get(ComponentPropertiesComposite.ROLE))
0395: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0396: inFile = templateRoot + "Wsdl1Deployer.template";
0397: }
0398:
0399: outFile = projectPath.append(
0400: javaPackage.getPath().removeFirstSegments(1)).append(
0401: capitalizeFirst(properties
0402: .get(ComponentPropertiesComposite.NAME))
0403: + "Wsdl1Deployer.java").toOSString();
0404: writer = new TemplateProcessorIO(inFile, outFile, holders);
0405: writer.filterFile();
0406:
0407: //component
0408: inFile = templateRoot + "Component.template";
0409: outFile = projectPath.append(
0410: javaPackage.getPath().removeFirstSegments(1)).append(
0411: capitalizeFirst(properties
0412: .get(ComponentPropertiesComposite.NAME))
0413: + "Component.java").toOSString();
0414: writer = new TemplateProcessorIO(inFile, outFile, holders);
0415: writer.filterFile();
0416:
0417: //endpoint
0418: outFile = projectPath.append(
0419: javaPackage.getPath().removeFirstSegments(1)).append(
0420: capitalizeFirst(properties
0421: .get(ComponentPropertiesComposite.NAME))
0422: + "Endpoint.java").toOSString();
0423:
0424: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0425: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0426: inFile = templateRoot
0427: + "Endpoint_ConsumerOnly_Sched.template";
0428: } else if (((String) properties
0429: .get(ComponentPropertiesComposite.ROLE))
0430: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0431: inFile = templateRoot + "Endpoint_ProviderOnly.template";
0432: } else if (((String) properties
0433: .get(ComponentPropertiesComposite.ROLE))
0434: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0435: inFile = templateRoot + "Endpoint_Both_Sched.template";
0436: }
0437: writer = new TemplateProcessorIO(inFile, outFile, holders);
0438: writer.filterFile();
0439: }
0440:
0441: private String generateWsdl1DeployerConsumerProviderPackageAndClassName() {
0442: String content = "\n";
0443: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0444: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0445: content += "import "
0446: + javaWsdlPackage.getElementName()
0447: + "."
0448: + capitalizeFirst(properties
0449: .get(ComponentPropertiesComposite.NAME))
0450: + "Consumer" + ";";
0451: } else if (((String) properties
0452: .get(ComponentPropertiesComposite.ROLE))
0453: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0454: content += "import "
0455: + javaWsdlPackage.getElementName()
0456: + "."
0457: + capitalizeFirst(properties
0458: .get(ComponentPropertiesComposite.NAME))
0459: + "Provider" + ";";
0460: } else if (((String) properties
0461: .get(ComponentPropertiesComposite.ROLE))
0462: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0463: content += "import "
0464: + javaWsdlPackage.getElementName()
0465: + "."
0466: + capitalizeFirst(properties
0467: .get(ComponentPropertiesComposite.NAME))
0468: + "Consumer" + ";";
0469: content += "\n";
0470: content += "import "
0471: + javaWsdlPackage.getElementName()
0472: + "."
0473: + capitalizeFirst(properties
0474: .get(ComponentPropertiesComposite.NAME))
0475: + "Provider" + ";";
0476: }
0477: return content;
0478: }
0479:
0480: private String generateWsdl1DeployerEndpointProviderProperties() {
0481: String content = "\n\t\t";
0482: String providerClassName = capitalizeFirst(properties
0483: .get(ComponentPropertiesComposite.NAME))
0484: + "Provider";
0485: for (PagesModelTableItem page : providerList)
0486: for (PropertiesModelTableItem property : page.properties) {
0487: if (property.type != 4) {
0488: content += "endpoint.set"
0489: + capitalizeFirst(validPropertyName(property.name));
0490: content += "("
0491: + "(("
0492: + providerClassName
0493: + ") portElement[0]).get"
0494: + capitalizeFirst(validPropertyName(property.name))
0495: + "());";
0496: content += "\n\t\t";
0497: } else {
0498: content += "endpoint.set"
0499: + capitalizeFirst(validPropertyName(property.name))
0500: + "ServiceName";
0501: content += "("
0502: + "(("
0503: + providerClassName
0504: + ") portElement[0]).get"
0505: + capitalizeFirst(validPropertyName(property.name))
0506: + "ServiceName" + "());";
0507: content += "\n\t\t";
0508: content += "endpoint.set"
0509: + capitalizeFirst(validPropertyName(property.name))
0510: + "EndpointName";
0511: content += "("
0512: + "(("
0513: + providerClassName
0514: + ") portElement[0]).get"
0515: + capitalizeFirst(validPropertyName(property.name))
0516: + "EndpointName" + "());";
0517: content += "\n\t\t";
0518: }
0519: }
0520: return content;
0521: }
0522:
0523: private String generateWsdl1DeployerEndpointConsumerProperties() {
0524: String content = "\n\t\t";
0525: String consumerClassName = capitalizeFirst(properties
0526: .get(ComponentPropertiesComposite.NAME))
0527: + "Consumer";
0528: for (PagesModelTableItem page : consumerList)
0529: for (PropertiesModelTableItem property : page.properties) {
0530: if (property.type != 4) {
0531: content += "endpoint.set"
0532: + capitalizeFirst(validPropertyName(property.name));
0533: content += "("
0534: + "(("
0535: + consumerClassName
0536: + ") portElement[0]).get"
0537: + capitalizeFirst(validPropertyName(property.name))
0538: + "());";
0539: content += "\n\t\t";
0540: } else {
0541: content += "endpoint.set"
0542: + capitalizeFirst(validPropertyName(property.name))
0543: + "ServiceName";
0544: content += "("
0545: + "(("
0546: + consumerClassName
0547: + ") portElement[0]).get"
0548: + capitalizeFirst(validPropertyName(property.name))
0549: + "ServiceName" + "());";
0550: content += "\n\t\t";
0551: content += "endpoint.set"
0552: + capitalizeFirst(validPropertyName(property.name))
0553: + "EndpointName";
0554: content += "("
0555: + "(("
0556: + consumerClassName
0557: + ") portElement[0]).get"
0558: + capitalizeFirst(validPropertyName(property.name))
0559: + "EndpointName" + "());";
0560: content += "\n\t\t";
0561: }
0562: }
0563: return content;
0564: }
0565:
0566: private String generateWsdl1DeployerExtentionRegistrstionPackages() {
0567: String content = "\n";
0568: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0569: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0570: content += "import "
0571: + javaWsdlPackage.getElementName()
0572: + "."
0573: + capitalizeFirst(properties
0574: .get(ComponentPropertiesComposite.NAME))
0575: + "ConsumerExtension" + ";";
0576: } else if (((String) properties
0577: .get(ComponentPropertiesComposite.ROLE))
0578: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0579: content += "import "
0580: + javaWsdlPackage.getElementName()
0581: + "."
0582: + capitalizeFirst(properties
0583: .get(ComponentPropertiesComposite.NAME))
0584: + "ProviderExtension" + ";";
0585: } else if (((String) properties
0586: .get(ComponentPropertiesComposite.ROLE))
0587: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0588: content += "import "
0589: + javaWsdlPackage.getElementName()
0590: + "."
0591: + capitalizeFirst(properties
0592: .get(ComponentPropertiesComposite.NAME))
0593: + "ConsumerExtension" + ";";
0594: content += "\n";
0595: content += "import "
0596: + javaWsdlPackage.getElementName()
0597: + "."
0598: + capitalizeFirst(properties
0599: .get(ComponentPropertiesComposite.NAME))
0600: + "ProviderExtension" + ";";
0601: }
0602: return content;
0603: }
0604:
0605: private String generateWsdl1DeployerExtentionRegistrstion() {
0606: String content = "\n\t\t";
0607: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0608: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0609: content += capitalizeFirst(properties
0610: .get(ComponentPropertiesComposite.NAME))
0611: + "ConsumerExtension";
0612: content += ".register(registry);";
0613: } else if (((String) properties
0614: .get(ComponentPropertiesComposite.ROLE))
0615: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0616: content += capitalizeFirst(properties
0617: .get(ComponentPropertiesComposite.NAME))
0618: + "ProviderExtension";
0619: content += ".register(registry);";
0620:
0621: } else if (((String) properties
0622: .get(ComponentPropertiesComposite.ROLE))
0623: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0624: content += capitalizeFirst(properties
0625: .get(ComponentPropertiesComposite.NAME))
0626: + "ConsumerExtension";
0627: content += ".register(registry);";
0628: content += "\n\t\t";
0629: content += capitalizeFirst(properties
0630: .get(ComponentPropertiesComposite.NAME))
0631: + "ProviderExtension";
0632: content += ".register(registry);";
0633: }
0634: content += "\n\t\t";
0635: return content;
0636: }
0637:
0638: private void createProcessorsFiles() throws Exception {
0639: String inFile = templateRoot + "Bootstrap.template";
0640: if (((String) properties.get(ComponentPropertiesComposite.ROLE))
0641: .equalsIgnoreCase(ComponentPropertiesComposite.CONSUMER)) {
0642: inFile = templateRoot
0643: + "processors/ScheduledConsumerProcessor.template";
0644: String outFile = projectPath.append(
0645: javaProcessorsPackage.getPath()
0646: .removeFirstSegments(1)).append(
0647: capitalizeFirst(properties
0648: .get(ComponentPropertiesComposite.NAME))
0649: + "ConsumerHandler.java").toOSString();
0650: writer = new TemplateProcessorIO(inFile, outFile, holders);
0651: writer.filterFile();
0652: } else if (((String) properties
0653: .get(ComponentPropertiesComposite.ROLE))
0654: .equalsIgnoreCase(ComponentPropertiesComposite.PROVIDER)) {
0655: inFile = templateRoot
0656: + "processors/ProviderProcessor.template";
0657: String outFile = projectPath.append(
0658: javaProcessorsPackage.getPath()
0659: .removeFirstSegments(1)).append(
0660: capitalizeFirst(properties
0661: .get(ComponentPropertiesComposite.NAME))
0662: + "ProviderProcessor.java").toOSString();
0663: writer = new TemplateProcessorIO(inFile, outFile, holders);
0664: writer.filterFile();
0665: } else if (((String) properties
0666: .get(ComponentPropertiesComposite.ROLE))
0667: .equalsIgnoreCase(ComponentPropertiesComposite.BOTH)) {
0668: inFile = templateRoot
0669: + "processors/ScheduledConsumerProcessor.template";
0670: String outFile = projectPath.append(
0671: javaProcessorsPackage.getPath()
0672: .removeFirstSegments(1)).append(
0673: capitalizeFirst(properties
0674: .get(ComponentPropertiesComposite.NAME))
0675: + "ConsumerHandler.java").toOSString();
0676: writer = new TemplateProcessorIO(inFile, outFile, holders);
0677: writer.filterFile();
0678: inFile = templateRoot
0679: + "processors/ProviderProcessor.template";
0680: outFile = projectPath.append(
0681: javaProcessorsPackage.getPath()
0682: .removeFirstSegments(1)).append(
0683: capitalizeFirst(properties
0684: .get(ComponentPropertiesComposite.NAME))
0685: + "ProviderProcessor.java").toOSString();
0686: writer = new TemplateProcessorIO(inFile, outFile, holders);
0687: writer.filterFile();
0688: }
0689: }
0690:
0691: private void createScriptFiles() throws Exception {
0692: //build
0693: String inFile = templateRoot + "build.template";
0694: String outFile = projectPath.append("scripts").append(
0695: "build.xml").toOSString();
0696: writer = new TemplateProcessorIO(inFile, outFile, holders);
0697: writer.filterFile();
0698:
0699: //build_ui
0700: inFile = templateRoot + "build_ui.template";
0701: outFile = projectPath.append("scripts").append("build_ui.xml")
0702: .toOSString();
0703: writer = new TemplateProcessorIO(inFile, outFile, holders);
0704: writer.filterFile();
0705: }
0706:
0707: private void createMetaInfFiles() throws Exception {
0708: //ccsl
0709: String inFile = templateRoot + "ccsl.template";
0710: String outFile = projectPath.append("src").append("resources")
0711: .append("META-INF").append("ccsl.xml").toOSString();
0712: writer = new TemplateProcessorIO(inFile, outFile, holders);
0713: writer.filterFile();
0714:
0715: //jbi
0716: inFile = templateRoot + "jbi.template";
0717: outFile = projectPath.append("src").append("resources").append(
0718: "META-INF").append("jbi.xml").toOSString();
0719: writer = new TemplateProcessorIO(inFile, outFile, holders);
0720: writer.filterFile();
0721: //version.properties
0722: inFile = templateRoot + "version.template";
0723: outFile = projectPath.append("src").append("resources").append(
0724: "META-INF").append("version.properties").toOSString();
0725: writer = new TemplateProcessorIO(inFile, outFile, holders);
0726: writer.filterFile();
0727: }
0728:
0729: /**
0730: * the only merthod that should be called
0731: * @throws Exception
0732: */
0733: public void createAllFiles() throws Exception {
0734: createMetaInfFiles();
0735: createProcessorsFiles();
0736: createRootPackageFiles();
0737: createScriptFiles();
0738: createUIFiles();
0739: createWsdlFiels();
0740: copyIcons();
0741: }
0742:
0743: private void copyIcons() {
0744: FileUtil.copyFile(templateRoot + "icons/default16.ico",
0745: projectPath.append("src/resources/default16.ico")
0746: .toString());
0747: FileUtil.copyFile(templateRoot + "icons/default32.ico",
0748: projectPath.append("src/resources/default32.ico")
0749: .toString());
0750: }
0751:
0752: /**
0753: * Used in GenerateWSDL
0754: * @throws Exception
0755: */
0756: private void generateWsdlProviderFiles() throws Exception {
0757: String inFile = templateRoot + "wsdl/Provider.template";
0758: String outFile = projectPath
0759: .append(
0760: javaWsdlPackage.getPath()
0761: .removeFirstSegments(1))
0762: .append(
0763: capitalizeFirst(properties
0764: .get(ComponentPropertiesComposite.NAME))
0765: + "Provider.java").toOSString();
0766: writer = new TemplateProcessorIO(inFile, outFile, holders);
0767: writer.filterFile();
0768: //deserializer
0769: inFile = templateRoot + "wsdl/ProviderDeserializer.template";
0770: outFile = projectPath
0771: .append(
0772: javaWsdlPackage.getPath()
0773: .removeFirstSegments(1))
0774: .append(
0775: capitalizeFirst(properties
0776: .get(ComponentPropertiesComposite.NAME))
0777: + "ProviderDeserializer.java")
0778: .toOSString();
0779: writer = new TemplateProcessorIO(inFile, outFile, holders);
0780: writer.filterFile();
0781:
0782: //extension
0783: inFile = templateRoot + "wsdl/ProviderExtension.template";
0784: outFile = projectPath
0785: .append(
0786: javaWsdlPackage.getPath()
0787: .removeFirstSegments(1))
0788: .append(
0789: capitalizeFirst(properties
0790: .get(ComponentPropertiesComposite.NAME))
0791: + "ProviderExtension.java")
0792: .toOSString();
0793: writer = new TemplateProcessorIO(inFile, outFile, holders);
0794: writer.filterFile();
0795: }
0796:
0797: /**
0798: * Used in GenerateWSDL
0799: * @throws Exception
0800: */
0801: private void generateWsdlConsumerFiles() throws Exception {
0802: String inFile = templateRoot + "wsdl/Consumer.template";
0803: String outFile = projectPath
0804: .append(
0805: javaWsdlPackage.getPath()
0806: .removeFirstSegments(1))
0807: .append(
0808: capitalizeFirst(properties
0809: .get(ComponentPropertiesComposite.NAME))
0810: + "Consumer.java").toOSString();
0811: writer = new TemplateProcessorIO(inFile, outFile, holders);
0812: writer.filterFile();
0813:
0814: //deserializer
0815: inFile = templateRoot + "wsdl/ConsumerDeserializer.template";
0816: outFile = projectPath
0817: .append(
0818: javaWsdlPackage.getPath()
0819: .removeFirstSegments(1))
0820: .append(
0821: capitalizeFirst(properties
0822: .get(ComponentPropertiesComposite.NAME))
0823: + "ConsumerDeserializer.java")
0824: .toOSString();
0825: writer = new TemplateProcessorIO(inFile, outFile, holders);
0826: writer.filterFile();
0827:
0828: //extension
0829: inFile = templateRoot + "wsdl/ConsumerExtension.template";
0830: outFile = projectPath
0831: .append(
0832: javaWsdlPackage.getPath()
0833: .removeFirstSegments(1))
0834: .append(
0835: capitalizeFirst(properties
0836: .get(ComponentPropertiesComposite.NAME))
0837: + "ConsumerExtension.java")
0838: .toOSString();
0839: writer = new TemplateProcessorIO(inFile, outFile, holders);
0840: writer.filterFile();
0841: }
0842:
0843: /**
0844: * method used in UI generation
0845: * @param consumerList
0846: * @param providerList
0847: * @return
0848: */
0849: private String makePagesAndPropertiesStructure(
0850: List<PagesModelTableItem> consumerList,
0851: List<PagesModelTableItem> providerList) {
0852: String content = "";
0853: // some comments
0854: content += "\n\t\t";
0855: content += "/* Feel free to customize and modify any parameters. Property constructors are provided with default values";
0856: content += "\n\t\t";
0857: content += "\n\t\t";
0858: content += "public BooleanProperty(String name, \n\t\t\t\t"
0859: + " boolean readOnly,\n\t\t\t\t"
0860: + " boolean required, \n\t\t\t\t "
0861: + "boolean defaultValue)";
0862: content += "\n\t\t";
0863: content += "public EnumProperty(String name,\n\t\t\t\t"
0864: + " boolean readOnly,\n\t\t\t\t"
0865: + " boolean required,\n\t\t\t\t"
0866: + "String defaultValue,\n\t\t\t\t"
0867: + " String[] values,\n\t\t\t\t" + " boolean editable)";
0868: content += "\n\t\t";
0869: content += "public FileProperty(String name,\n\t\t\t\t"
0870: + " boolean readOnly,\n\t\t\t\t"
0871: + " boolean required,\n\t\t\t\t"
0872: + "String baseFolderName,\n\t\t\t\t"
0873: + " String fileName,\n\t\t\t\t"
0874: + " boolean allowNewFile,\n\t\t\t\t"
0875: + "FolderBrowseStyle folderBrowseStyle)";
0876: content += "\n\t\t";
0877: content += "public TextProperty(String name,\n\t\t\t\t"
0878: + " boolean readOnly,\n\t\t\t\t"
0879: + " boolean required,\n\t\t\t\t"
0880: + "String defaultValue)\n\t\t\t\t"
0881: + "You can also Hide the text by using setIsPassword(true)";
0882: content += "\n\t\t";
0883: content += "EndPointProperty(String name,\n\t\t\t\t"
0884: + " boolean readOnly,\n\t\t\t\t" + " boolean required)";
0885: content += "\n\t\t";
0886: content += "*/";
0887: //now more serious stuff
0888: if (!consumerList.isEmpty()) {
0889: int pageNumber = 0;
0890: for (PagesModelTableItem page : consumerList) {
0891: pageNumber++;
0892: content += "\n\t\t";
0893: content += "// ---Consumer Pages";
0894: content += "\n\t\t";
0895: //new BaseCustWizard
0896: content += "BaseCustWizard consumerWizard" + pageNumber
0897: + "= new BaseCustWizard(" + "\"" + page.name
0898: + "\"" + ", " + "\"" + page.description + "\""
0899: + ");";
0900:
0901: int propertyNumer = 0;
0902: for (PropertiesModelTableItem property : page.properties) {
0903: //consumerWizard.addProperty
0904: propertyNumer++;
0905: content += "\n\t\t";
0906: if (property.type == 0) //text
0907: {
0908: content += "consumerWizard"
0909: + pageNumber
0910: + ".addProperty("
0911: + "new TextProperty("
0912: + "\""
0913: + property.name.trim().replaceAll(" ",
0914: "_") + "\"" + ","
0915: + property.readOnly.toString() + ","
0916: + property.required.toString() + ", "
0917: + "\"" + "Default Value" + "\"" + ")"
0918: + ");";
0919: }
0920: if (property.type == 1)//file
0921: {
0922: content += "consumerWizard"
0923: + pageNumber
0924: + ".addProperty("
0925: + "new FileProperty("
0926: + "\""
0927: + property.name.trim().replaceAll(" ",
0928: "_") + "\"" + ", "
0929: + property.readOnly.toString() + ", "
0930: + property.required.toString() + ", "
0931: + "\"" + "c:\\" + "\"" + ", " + "null"
0932: + ", " + "true" + ", "
0933: + "FolderBrowseStyle.FILE_SYSTEM" + ""
0934: + "));";
0935: }
0936: if (property.type == 2)//enumeration
0937: {
0938: content += "consumerWizard"
0939: + pageNumber
0940: + ".addProperty("
0941: + "new EnumProperty("
0942: + "\""
0943: + property.name.trim().replaceAll(" ",
0944: "_") + "\"" + ", "
0945: + property.readOnly.toString() + ", "
0946: + property.required.toString() + ", "
0947: + "\"" + "Default Value" + "\"" + ", "
0948: + "new String[] {" + "\"" + "One"
0949: + "\", " + "\"" + "Two" + "\", " + "\""
0950: + "Three" + "\"" + "}" + ", " + "false"
0951: + "" + "));";
0952: }
0953: if (property.type == 3)//boolean
0954: {
0955: content += "consumerWizard"
0956: + pageNumber
0957: + ".addProperty("
0958: + "new BooleanProperty("
0959: + "\""
0960: + property.name.trim().replaceAll(" ",
0961: "_") + "\"" + ", "
0962: + property.readOnly.toString() + ", "
0963: + property.required.toString() + ", "
0964: + "true" + "" + "));";
0965: }
0966: if (property.type == 4)//Endpoint
0967: {
0968: content += "consumerWizard"
0969: + pageNumber
0970: + ".addProperty("
0971: + "new EndPointProperty("
0972: + "\""
0973: + property.name.trim().replaceAll(" ",
0974: "_") + "\"" + ", "
0975: + property.readOnly.toString() + ", "
0976: + property.required.toString() + ""
0977: + "));";
0978: }
0979: }
0980: content += "\n\t\t";
0981: content += "this.addWizardPage(consumerWizard"
0982: + pageNumber + ", Role.CONSUMER);";
0983: }
0984: }
0985: content += "\n\t\t";
0986: if (!providerList.isEmpty()) {
0987: int pageNumber = 0;
0988: for (PagesModelTableItem page : providerList) {
0989: pageNumber++;
0990: content += "\n\t\t";
0991: content += "// ---Provider Pages";
0992: content += "\n\t\t";
0993: //new BaseCustWizard
0994: content += "BaseCustWizard providerWizard" + pageNumber
0995: + "= new BaseCustWizard(" + "\"" + page.name
0996: + "\"" + ", " + "\"" + page.description + "\""
0997: + ");";
0998:
0999: int propertyNumer = 0;
1000: for (PropertiesModelTableItem property : page.properties) {
1001: //consumerWizard.addProperty
1002: propertyNumer++;
1003: content += "\n\t\t";
1004: if (property.type == 0) //text
1005: {
1006: content += "providerWizard"
1007: + pageNumber
1008: + ".addProperty("
1009: + "new TextProperty("
1010: + "\""
1011: + property.name.trim().replaceAll(" ",
1012: "_") + "\"" + ","
1013: + property.readOnly.toString() + ","
1014: + property.required.toString() + ", "
1015: + "\"" + "Default Value" + "\"" + ")"
1016: + ");";
1017: }
1018: if (property.type == 1)//file
1019: {
1020: content += "providerWizard"
1021: + pageNumber
1022: + ".addProperty("
1023: + "new FileProperty("
1024: + "\""
1025: + property.name.trim().replaceAll(" ",
1026: "_") + "\"" + ", "
1027: + property.readOnly.toString() + ", "
1028: + property.required.toString() + ", "
1029: + "\"" + "c:\\" + "\"" + ", " + "null"
1030: + ", " + "true" + ", "
1031: + "FolderBrowseStyle.FILE_SYSTEM" + ""
1032: + "));";
1033: }
1034: if (property.type == 2)//enumeration
1035: {
1036: content += "providerWizard"
1037: + pageNumber
1038: + ".addProperty("
1039: + "new EnumProperty("
1040: + "\""
1041: + property.name.trim().replaceAll(" ",
1042: "_") + "\"" + ", "
1043: + property.readOnly.toString() + ", "
1044: + property.required.toString() + ", "
1045: + "\"" + "Default Value" + "\"" + ", "
1046: + "new String[] {" + "\"" + "One"
1047: + "\", " + "\"" + "Two" + "\", " + "\""
1048: + "Three" + "\"" + "}" + ", " + "false"
1049: + "" + "));";
1050: }
1051: if (property.type == 3)//boolean
1052: {
1053: content += "providerWizard"
1054: + pageNumber
1055: + ".addProperty("
1056: + "new BooleanProperty("
1057: + "\""
1058: + property.name.trim().replaceAll(" ",
1059: "_") + "\"" + ", "
1060: + property.readOnly.toString() + ", "
1061: + property.required.toString() + ", "
1062: + "true" + "" + "));";
1063: }
1064: if (property.type == 4)//Endpoint
1065: {
1066: content += "providerWizard"
1067: + pageNumber
1068: + ".addProperty("
1069: + "new EndPointProperty("
1070: + "\""
1071: + property.name.trim().replaceAll(" ",
1072: "_") + "\"" + ", "
1073: + property.readOnly.toString() + ", "
1074: + property.required.toString() + ""
1075: + "));";
1076: }
1077: }
1078: content += "\n\t\t";
1079: content += "this.addWizardPage(providerWizard"
1080: + pageNumber + ", Role.PROVIDER);";
1081: }
1082: }
1083:
1084: return content;
1085: }
1086:
1087: private String generateProviderUnmarshallSetters() {
1088: String content = "\n\t\t";
1089: for (PagesModelTableItem page : providerList)
1090: for (PropertiesModelTableItem property : page.properties) {
1091: if (property.type != 4) {
1092: content += "provider.set"
1093: + capitalizeFirst(validPropertyName(property.name))
1094: + "(DOMUtils.getAttribute(el,"
1095: + capitalizeFirst(properties
1096: .get(ComponentPropertiesComposite.NAME))
1097: + "ProviderExtension" + "."
1098: + validConstantName(property.name) + "));";
1099: content += "\n\t\t";
1100: } else {
1101: content += "String serviceName = DOMUtils.getAttribute(el,"
1102: + capitalizeFirst(properties
1103: .get(ComponentPropertiesComposite.NAME))
1104: + "ProviderExtension"
1105: + "."
1106: + validConstantName(property.name
1107: + "ServiceName") + ");";
1108: content += "\n\t\t";
1109: content += "if (serviceName != null && !serviceName.equals(\"\")) {"
1110: + "\n\t\t\t";
1111: content += "QName serviceNameQN = DOMUtils.getQName(serviceName, el, def);"
1112: + "\n\t\t\t";
1113: content += "provider.set"
1114: + capitalizeFirst(validPropertyName(property.name))
1115: + "ServiceName(serviceNameQN);" + "\n\t\t";
1116: content += "} else " + "\n\t\t\t";
1117: content += "{provider.set"
1118: + capitalizeFirst(validPropertyName(property.name))
1119: + "ServiceName(null);}" + "\n\t\t";
1120: content += "provider.set"
1121: + capitalizeFirst(validPropertyName(property.name))
1122: + "EndpointName(DOMUtils.getAttribute(el,"
1123: + capitalizeFirst(properties
1124: .get(ComponentPropertiesComposite.NAME))
1125: + "ProviderExtension"
1126: + "."
1127: + validConstantName(property.name
1128: + "EndpointName") + "));";
1129: content += "\n\t\t";
1130: }
1131: }
1132: content += "\n\t\t";
1133: return content;
1134: // return generateUnmarshallSetters(providerList);
1135: }
1136:
1137: private String generateProviderExtentionStaticConstants() {
1138: return generateExtentionStaticConstants(providerList);
1139: }
1140:
1141: private String generateExtentionStaticConstants(
1142: List<PagesModelTableItem> list) {
1143: String content = "\n\t\t";
1144: for (PagesModelTableItem page : list)
1145: for (PropertiesModelTableItem property : page.properties) {
1146: if (property.type != 4) {
1147: content += "public static final String "
1148: + validConstantName(property.name) + "=\""
1149: + property.name.trim().replaceAll(" ", "_")
1150: + "\";";
1151: content += "\n\t\t";
1152: } else {
1153: content += "public static final String "
1154: + validConstantName(property.name
1155: + "ServiceName") + "=\""
1156: + property.name.trim().replaceAll(" ", "_")
1157: + "ServiceName" + "\";";
1158: content += "\n\t\t";
1159:
1160: content += "public static final String "
1161: + validConstantName(property.name
1162: + "EndpointName") + "=\""
1163: + property.name.trim().replaceAll(" ", "_")
1164: + "EndpointName" + "\";";
1165: content += "\n\t\t";
1166: }
1167: }
1168: content += "\n\t\t";
1169: return content;
1170: }
1171:
1172: private String generateProviderGettersAndSetters() {
1173: return generateGettersAndSetters(providerList);
1174: }
1175:
1176: /**
1177: * Provider Properties
1178: * @return
1179: */
1180: private String generateProviderProperties() {
1181: return generateProperties(providerList);
1182: }
1183:
1184: private String generateConsumerUnmarshallSetters() {
1185: String content = "\n\t\t";
1186: for (PagesModelTableItem page : consumerList)
1187: for (PropertiesModelTableItem property : page.properties) {
1188: if (property.type != 4) {
1189: content += "consumer.set"
1190: + capitalizeFirst(validPropertyName(property.name))
1191: + "(DOMUtils.getAttribute(el,"
1192: + capitalizeFirst(properties
1193: .get(ComponentPropertiesComposite.NAME))
1194: + "ConsumerExtension" + "."
1195: + validConstantName(property.name) + "));";
1196: content += "\n\t\t";
1197: } else {
1198: content += "String serviceName = DOMUtils.getAttribute(el,"
1199: + capitalizeFirst(properties
1200: .get(ComponentPropertiesComposite.NAME))
1201: + "ConsumerExtension"
1202: + "."
1203: + validConstantName(property.name
1204: + "ServiceName") + ");";
1205: content += "\n\t\t";
1206: content += "if (serviceName != null && !serviceName.equals(\"\")) {"
1207: + "\n\t\t\t";
1208: content += "QName serviceNameQN = DOMUtils.getQName(serviceName, el, def);"
1209: + "\n\t\t\t";
1210: content += "consumer.set"
1211: + capitalizeFirst(validPropertyName(property.name))
1212: + "ServiceName(serviceNameQN);" + "\n\t\t";
1213: content += "} else " + "\n\t\t\t";
1214: content += "{consumer.set"
1215: + capitalizeFirst(validPropertyName(property.name))
1216: + "ServiceName(null);}" + "\n\t\t";
1217: content += "consumer.set"
1218: + capitalizeFirst(validPropertyName(property.name))
1219: + "EndpointName(DOMUtils.getAttribute(el,"
1220: + capitalizeFirst(properties
1221: .get(ComponentPropertiesComposite.NAME))
1222: + "ConsumerExtension"
1223: + "."
1224: + validConstantName(property.name
1225: + "EndpointName") + "));";
1226: content += "\n\t\t";
1227: }
1228:
1229: }
1230: content += "\n\t\t";
1231: return content;
1232: }
1233:
1234: private String generateConsumerExtendtionStaticConstants() {
1235: return generateExtentionStaticConstants(consumerList);
1236: }
1237:
1238: private String generateConsumerGettersAndSetters() {
1239: return generateGettersAndSetters(consumerList);
1240: }
1241:
1242: private String generateGettersAndSetters(
1243: List<PagesModelTableItem> list) {
1244: String content = "\n\t\t";
1245: for (PagesModelTableItem page : list)
1246: for (PropertiesModelTableItem property : page.properties) {
1247: if (property.type != 4) {
1248: content += "/* Setter for the "
1249: + validPropertyName(property.name) + " */";
1250: content += "\n\t\t";
1251: content += "public void set"
1252: + capitalizeFirst(validPropertyName(property.name))
1253: + "(String value)";
1254: content += "\n\t\t";
1255: content += "{ this."
1256: + validPropertyName(property.name)
1257: + "=value;}";
1258: content += "\n\t\t";
1259: content += "\n\t\t";
1260: content += "/* Getter for the "
1261: + validPropertyName(property.name) + "*/";
1262: content += "\n\t\t";
1263: content += "public String get"
1264: + capitalizeFirst(validPropertyName(property.name))
1265: + "()";
1266: content += "\n\t\t";
1267: content += "{ return this."
1268: + validPropertyName(property.name) + ";}";
1269: content += "\n\t\t";
1270: content += "\n\t\t";
1271: } else {
1272: content += "/* Setter for the "
1273: + validPropertyName(property.name)
1274: + "ServiceName */";
1275: content += "\n\t\t";
1276: content += "public void set"
1277: + capitalizeFirst(validPropertyName(property.name))
1278: + "ServiceName(QName value)";
1279: content += "\n\t\t";
1280: content += "{ this."
1281: + validPropertyName(property.name)
1282: + "ServiceName=value;}";
1283: content += "\n\t\t";
1284: content += "\n\t\t";
1285: content += "/* Getter for the "
1286: + validPropertyName(property.name)
1287: + "ServiceName */";
1288: content += "\n\t\t";
1289: content += "public QName get"
1290: + capitalizeFirst(validPropertyName(property.name))
1291: + "ServiceName()";
1292: content += "\n\t\t";
1293: content += "{ return this."
1294: + validPropertyName(property.name)
1295: + "ServiceName;}";
1296: content += "\n\t\t";
1297: content += "\n\t\t";
1298:
1299: content += "/* Setter for the "
1300: + validPropertyName(property.name)
1301: + "EndpointName */";
1302: content += "\n\t\t";
1303: content += "public void set"
1304: + capitalizeFirst(validPropertyName(property.name))
1305: + "EndpointName(String value)";
1306: content += "\n\t\t";
1307: content += "{ this."
1308: + validPropertyName(property.name)
1309: + "EndpointName=value;}";
1310: content += "\n\t\t";
1311: content += "\n\t\t";
1312: content += "/* Getter for the "
1313: + validPropertyName(property.name)
1314: + "EndpointName */";
1315: content += "\n\t\t";
1316: content += "public String get"
1317: + capitalizeFirst(validPropertyName(property.name))
1318: + "EndpointName()";
1319: content += "\n\t\t";
1320: content += "{ return this."
1321: + validPropertyName(property.name)
1322: + "EndpointName;}";
1323: content += "\n\t\t";
1324: content += "\n\t\t";
1325:
1326: }
1327: }
1328: content += "\n\t\t";
1329: return content;
1330: }
1331:
1332: /**
1333: * Consumer properties
1334: * @return
1335: */
1336: private String generateConsumerProperties() {
1337: return generateProperties(consumerList);
1338: }
1339:
1340: private String generateProperties(List<PagesModelTableItem> list) {
1341: String content = "\n\t\t";
1342: for (PagesModelTableItem page : list)
1343: for (PropertiesModelTableItem property : page.properties) {
1344: if (property.type != 4) {
1345: content += "protected String "
1346: + validPropertyName(property.name)
1347: + "=null;";
1348: content += "\n\t\t";
1349: } else {
1350: content += "protected QName "
1351: + validPropertyName(property.name)
1352: + "ServiceName=null;";
1353: content += "\n\t\t";
1354: content += "protected String "
1355: + validPropertyName(property.name)
1356: + "EndpointName=null;";
1357: content += "\n\t\t";
1358: }
1359: }
1360: content += "\n\t\t";
1361: return content;
1362: }
1363:
1364: private String generateEndpointAllGettersAndSetters() {
1365:
1366: String content = "";
1367: List<PropertiesModelTableItem> list = existIdenticalPropertyNames();
1368: if (list == null) {
1369: content += generateConsumerGettersAndSetters();
1370: content += "\n\t\t";
1371: content += generateProviderGettersAndSetters();
1372: } else {
1373: List<PagesModelTableItem> tempList = new ArrayList<PagesModelTableItem>();
1374: tempList.add(new PagesModelTableItem("", "", list));
1375: content += generateGettersAndSetters(tempList);
1376: content += "\n\t\t";
1377: }
1378: content += "\n\t\t";
1379: return content;
1380: }
1381:
1382: private String generateEndpointAllProperties() {
1383: String content = "";
1384: List<PropertiesModelTableItem> list = existIdenticalPropertyNames();
1385: if (list == null) {
1386: content += generateConsumerProperties();
1387: content += "\n\t\t";
1388: content += generateProviderProperties();
1389: } else {
1390: List<PagesModelTableItem> tempList = new ArrayList<PagesModelTableItem>();
1391: tempList.add(new PagesModelTableItem("", "", list));
1392: content += generateProperties(tempList);
1393: content += "\n\t\t";
1394: }
1395: content += "\n\t\t";
1396: return content;
1397: }
1398:
1399: /**
1400: * checks if there are in consumer and provider same property names
1401: * if there are same property names it will return a list of unique
1402: * properties names, otherwise it will return null;
1403: *
1404: * @return null if no identical names found, otherwise return a
1405: * list of all unique properties
1406: */
1407: private List<PropertiesModelTableItem> existIdenticalPropertyNames() {
1408: List<PropertiesModelTableItem> list = new ArrayList<PropertiesModelTableItem>();
1409: //unify the tree structure under the single list
1410: for (PagesModelTableItem page : consumerList)
1411: for (PropertiesModelTableItem property : page.properties) {
1412: list.add(property);
1413: }
1414: for (PagesModelTableItem page : providerList)
1415: for (PropertiesModelTableItem property : page.properties) {
1416: list.add(property);
1417: }
1418: // check for identical elements
1419: boolean identical = false;
1420: List<PropertiesModelTableItem> uniqueList = new ArrayList<PropertiesModelTableItem>();
1421: for (PropertiesModelTableItem propOne : list) {
1422: boolean add = true;
1423: if (uniqueList.size() != 0)
1424: for (PropertiesModelTableItem propTwo : uniqueList) {
1425: if (propOne.name.equalsIgnoreCase(propTwo.name)) {
1426: identical = true;
1427: add = false;
1428: break;
1429: }
1430: }
1431: if (add) {
1432: uniqueList.add(propOne);
1433: }
1434: }
1435: //otherwise no identical elements were found
1436: return identical ? uniqueList : null;
1437: }
1438:
1439: /**
1440: * just capitalize first letter
1441: * @param str
1442: * @return
1443: */
1444: protected static String capitalizeFirst(String str) {
1445: if (!str.equals(str.toLowerCase())
1446: && !str.equals(str.toUpperCase()))
1447: return str;
1448: String first = ("" + str.charAt(0)).toUpperCase();
1449: String rest = str.substring(1).toLowerCase();
1450: return first + rest;
1451: }
1452:
1453: /**
1454: * returns a valid variable name
1455: * @param s
1456: * @return
1457: */
1458: protected static String validPropertyName(String s) {
1459: String temp = s.replaceAll(" ", "_");
1460: if (!temp.equals(temp.toLowerCase())
1461: && !temp.equals(temp.toUpperCase()))
1462: return temp;
1463: return temp.toLowerCase();
1464: }
1465:
1466: /**
1467: * returns a valid constant name
1468: * @param s
1469: * @return
1470: */
1471: protected static String validConstantName(String s) {
1472: String temp = s.replaceAll(" ", "_");
1473: if (!temp.equals(temp.toLowerCase())
1474: && !temp.equals(temp.toUpperCase()))
1475: return temp;
1476: return temp.toUpperCase();
1477: }
1478:
1479: }
|