Java tutorial
/* * Copyright 2007 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.googlecode.gmaps4jsf.jsfplugin.mojo; import java.io.BufferedWriter; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import com.googlecode.gmaps4jsf.jsfplugin.digester.Attribute; import com.googlecode.gmaps4jsf.jsfplugin.digester.Component; import org.apache.commons.digester.Digester; import org.apache.commons.lang.StringUtils; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.project.MavenProject; /** * Base class for all the jsf mojos, parses the component config files and generates output directories * * @author Latest modification by $Author: cagatay_civici $ * @version $Revision: 748 $ $Date: 2007-07-04 14:55:12 +0300 (Wed, 04 Jul 2007) $ */ public abstract class BaseFacesMojo extends AbstractMojo { /** * @parameter expression="${project}" * @required * @readonly */ protected MavenProject project; /** * @parameter * @required */ protected String componentConfigsDir; /** * @parameter */ protected String templatesDir; protected String[] uicomponentAttributes = new String[] { "id", "rendered", "binding" }; protected String[] specialAttributes = new String[] { "value", "converter", "validator", "valueChangeListener", "immediate", "required", "action", "actionListener" }; protected File[] getResources() { return new File(project.getBasedir() + File.separator + componentConfigsDir).listFiles(); } protected Digester getDigester() { Digester digester = new Digester(); digester.setValidating(false); digester.addObjectCreate("component", Component.class); digester.addBeanPropertySetter("component/tag", "tag"); digester.addBeanPropertySetter("component/tagClass", "tagClass"); digester.addBeanPropertySetter("component/componentClass", "componentClass"); digester.addBeanPropertySetter("component/componentType", "componentType"); digester.addBeanPropertySetter("component/componentFamily", "componentFamily"); digester.addBeanPropertySetter("component/rendererType", "rendererType"); digester.addBeanPropertySetter("component/rendererClass", "rendererClass"); digester.addBeanPropertySetter("component/parent", "parent"); digester.addObjectCreate("component/attributes/attribute", Attribute.class); digester.addBeanPropertySetter("component/attributes/attribute/name", "name"); digester.addBeanPropertySetter("component/attributes/attribute/required", "required"); digester.addBeanPropertySetter("component/attributes/attribute/type", "type"); digester.addBeanPropertySetter("component/attributes/attribute/description", "description"); digester.addBeanPropertySetter("component/attributes/attribute/defaultValue", "defaultValue"); digester.addBeanPropertySetter("component/attributes/attribute/ignoreInComponent", "ignoreInComponent"); digester.addSetNext("component/attributes/attribute", "addAttribute"); return digester; } protected List getComponents() { File[] resources = getResources(); Digester digester = getDigester(); List components = new ArrayList(); for (int i = 0; i < resources.length; i++) { try { File resource = resources[i]; if (resource.getName().endsWith(".xml")) { components.add(digester.parse(resources[i])); } } catch (Exception e) { getLog().info(e.getMessage()); getLog().info("Error in generation"); return null; } } return components; } protected String getCreateOutputDirectory() { String outputPath = project.getBuild().getDirectory() + File.separator + "maven-jsf-plugin" + File.separator + "main" + File.separator + "java"; File componentsDirectory = new File(outputPath); if (!componentsDirectory.exists()) componentsDirectory.mkdirs(); return outputPath; } protected String createPackageDirectory(String outputPath, Component component) { String basePackage = StringUtils.replaceChars(component.getPackage(), '.', File.separatorChar); String packagePath = outputPath + File.separator + basePackage; File packageDirectory = new File(packagePath); if (!packageDirectory.exists()) packageDirectory.mkdirs(); return packagePath; } protected String getLicense() { String license = "/*\n" + " * Copyright 2007 The Apache Software Foundation.\n" + " *\n" + " * Licensed under the Apache License, Version 2.0 (the \"License\");\n" + " * you may not use this file except in compliance with the License.\n" + " * You may obtain a copy of the License at\n" + " *\n" + " * http://www.apache.org/licenses/LICENSE-2.0\n" + " *\n" + " * Unless required by applicable law or agreed to in writing, software\n" + " * distributed under the License is distributed on an \"AS IS\" BASIS,\n" + " * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n" + " * See the License for the specific language governing permissions and\n" + " * limitations under the License.\n" + " */\n"; return license; } protected void writeLicense(BufferedWriter writer) throws IOException { writer.write(getLicense()); } }