⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patternstrategy.java

📁 一个java 代码生成器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/**
 * Copyright (c) 2002, Siddhartha P. Chandurkar siddhartha@visioncodified.com
 * All rights reserved.
 * Licensed under the Academic Free License version 1.1
 * See the file LICENSE.TXT for details.
 * LICENSE.txt is located in the directory  <install-directory>\Jenerator
 * of your Jenertaor Installation.
 *
 */
package com.jenerator.transformer;

import com.jenerator.struct.ConfigStructs;
import com.jenerator.struct.pattern.*;
import com.jenerator.util.Configurator;
import org.apache.log4j.Logger;

import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Vector;

/**
 * PatternStrategy
 *
 * @author Siddhartha P. Chandurkar
 * @version 0.9.0
 */

public class PatternStrategy extends TransformStrategy {


    private static Logger log = Logger.getLogger(com.jenerator.transformer.PatternStrategy.class.getName());

    /**
     * This is an abstract method which each class which extends from this
     * class has to override. This method cordinates the transformation
     * of XML to code using appropriate templates
     * @exception   TransformFailedExceptoin    The transformation from XML to code
     *                                          code has failed
     */
    public void transform() throws TransformFailedException {
        try {
            ConfigStructs configStructs = Configurator.getInstance().getConfigStructs();
            Vector patternStructs = configStructs.getPatternStructs();
            for (int i = 0; i < patternStructs.size(); i++) {

                if (patternStructs.elementAt(i) instanceof com.jenerator.struct.pattern.SingletonStruct) {

                    log.debug("Generating Singleton Pattern");

                    SingletonStruct singletonStruct = (SingletonStruct) patternStructs.elementAt(i);
                    processor.process(singletonStruct.toXml(), "patterns.xsl", singletonStruct.getName() + ".java", singletonStruct.getPackageDir());
                } else if (patternStructs.elementAt(i) instanceof com.jenerator.struct.pattern.CompositeStruct) {
                    log.debug("Generating Composite Pattern");
                    StringBuffer xmlEpilog = new StringBuffer();
                    xmlEpilog.append("<?xml version='1.0'?>");
                    xmlEpilog.append("<pattern type=\"Composite\">");
                    CompositeStruct compositeStruct = (CompositeStruct) patternStructs.elementAt(i);
                    StringBuffer xmlBuffer = new StringBuffer();
                    //For composite-class
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>composite-name</pattern-class>");
                    xmlBuffer.append(compositeStruct.toXml());
                    processor.process(xmlBuffer.toString(), "patterns.xsl", compositeStruct.getCompositeName() + ".java", compositeStruct.getPackageDir());
                    xmlBuffer = null;
                    //For component-name
                    xmlBuffer = new StringBuffer();
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>component-name</pattern-class>");
                    xmlBuffer.append(compositeStruct.toXml());
                    processor.process(xmlBuffer.toString(), "patterns.xsl", compositeStruct.getComponentName() + ".java", compositeStruct.getPackageDir());
                    xmlBuffer = null;
                    //For Leaf(s)
                    Vector leafNames = compositeStruct.getLeafNames();
                    for (int k = 0; k < leafNames.size(); k++) {
                        String leafName = (String) leafNames.elementAt(k);
                        xmlBuffer = new StringBuffer();
                        xmlBuffer.append(xmlEpilog.toString());
                        xmlBuffer.append("<pattern-class>leaf-name</pattern-class>");
                        xmlBuffer.append("<l-name>" + leafName + "</l-name>");
                        xmlBuffer.append(compositeStruct.toXml());
                        processor.process(xmlBuffer.toString(), "patterns.xsl", leafName + ".java", compositeStruct.getPackageDir());
                        xmlBuffer = null;
                    }

                } else if (patternStructs.elementAt(i) instanceof com.jenerator.struct.pattern.TemplateMethodStruct) {
                    log.debug("Generating TemplateMethod Pattern");
                    StringBuffer xmlEpilog = new StringBuffer();
                    xmlEpilog.append("<?xml version='1.0'?>");
                    xmlEpilog.append("<pattern type=\"TemplateMethod\">");
                    TemplateMethodStruct templateMethodStruct = (TemplateMethodStruct) patternStructs.elementAt(i);
                    //For abstract-class
                    StringBuffer xmlBuffer = new StringBuffer();
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>abstract</pattern-class>");
                    xmlBuffer.append(templateMethodStruct.toXml());
                    processor.process(xmlBuffer.toString(), "patterns.xsl", templateMethodStruct.getAbstractClassName() + ".java", templateMethodStruct.getPackageDir());
                    xmlBuffer = null;
                    //For concrete-class
                    xmlBuffer = new StringBuffer();
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>concrete</pattern-class>");
                    xmlBuffer.append(templateMethodStruct.toXml());

                    processor.process(xmlBuffer.toString(), "patterns.xsl", templateMethodStruct.getConcreteClassName() + ".java", templateMethodStruct.getPackageDir());
                    xmlBuffer = null;

                } else if (patternStructs.elementAt(i) instanceof com.jenerator.struct.pattern.StrategyStruct) {
                    log.debug("Generating Strategy Pattern");
                    StringBuffer xmlEpilog = new StringBuffer();
                    xmlEpilog.append("<?xml version='1.0'?>");
                    xmlEpilog.append("<pattern type=\"Strategy\">");
                    StrategyStruct strategyStruct = (StrategyStruct) patternStructs.elementAt(i);
                    //For Strategy Interface
                    StringBuffer xmlBuffer = new StringBuffer();
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>strategy-interface</pattern-class>");
                    xmlBuffer.append(strategyStruct.toXml());
                    processor.process(xmlBuffer.toString(), "patterns.xsl", strategyStruct.getStrategyInterfaceName() + ".java", strategyStruct.getPackageDir());
                    xmlBuffer = null;
                    //For Concrete Strategies
                    Vector strategyNames = strategyStruct.getConcreteStrategies();
                    for (int k = 0; k < strategyNames.size(); k++) {
                        String strategyName = (String) strategyNames.elementAt(k);
                        xmlBuffer = new StringBuffer();
                        xmlBuffer.append(xmlEpilog.toString());
                        xmlBuffer.append("<pattern-class>concrete-strategy</pattern-class>");
                        xmlBuffer.append("<s-name>" + strategyName + "</s-name>");
                        xmlBuffer.append(strategyStruct.toXml());
                        processor.process(xmlBuffer.toString(), "patterns.xsl", strategyName + ".java", strategyStruct.getPackageDir());
                        xmlBuffer = null;
                    }
                } else if (patternStructs.elementAt(i) instanceof com.jenerator.struct.pattern.CommandStruct) {
                    log.debug("Generating Command Pattern");
                    StringBuffer xmlEpilog = new StringBuffer();
                    xmlEpilog.append("<?xml version='1.0'?>");
                    xmlEpilog.append("<pattern type=\"Command\">");
                    CommandStruct commandStruct = (CommandStruct) patternStructs.elementAt(i);
                    //For Abstract Command
                    StringBuffer xmlBuffer = new StringBuffer();
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>abstract-command</pattern-class>");
                    xmlBuffer.append(commandStruct.toXml());
                    processor.process(xmlBuffer.toString(), "patterns.xsl", commandStruct.getAbstractCommandName() + ".java", commandStruct.getPackageDir());
                    xmlBuffer = null;
                    //For Receiver
                    xmlBuffer = new StringBuffer();
                    xmlBuffer.append(xmlEpilog.toString());
                    xmlBuffer.append("<pattern-class>receiver</pattern-class>");

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -