Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package pt.webdetails.cda.xml;
  
  import  org.apache.commons.lang.StringUtils;
  import  org.dom4j.Element;
  import  org.pentaho.reporting.engine.classic.core.ParameterMapping;
  
This class implements the xml-generation for all cda elements

Author(s):
mgie
 
 public class DomVisitor {
 
 	/*
 	 * Connections
 	 */
 
 	// All Abstract connections...
 	public void visit(AbstractConnection con, Element ele) {
 
 		// ... get their common traits handled
 		Element conEle = ele.addElement("Connection");
 		conEle.addAttribute("id"con.getId());
 		conEle.addAttribute("type"con.getTypeForFile());
 
 		// ... and then are dispatched for individual handling
 		if (con instanceof MetadataConnection) {
 			visit((MetadataConnectionconconEle);
 		} else if (con instanceof pt.webdetails.cda.connections.sql.JdbcConnection) {
 		} else if (con instanceof pt.webdetails.cda.connections.sql.JndiConnection) {
 		} else if (con instanceof pt.webdetails.cda.connections.mondrian.JdbcConnection) {
 		} else if (con instanceof pt.webdetails.cda.connections.mondrian.JndiConnection) {
 		} else if (con instanceof pt.webdetails.cda.connections.olap4j.JdbcConnection) {
 		} else if (con instanceof pt.webdetails.cda.connections.olap4j.JndiConnection) {
 		} else if (con instanceof ScriptingConnection) {
 			visit((ScriptingConnectionconconEle);
 		} else if (con instanceof XPathConnection) {
 			visit((XPathConnectionconconEle);
 		} else if (con instanceof TransFromFileConnection) {
 			visit((TransFromFileConnectionconconEle);
 		};
 	}
 
 	// ...metadata.metadata
 	private void visit(MetadataConnection con, Element ele) {
 		final MetadataConnectionInfo conInfo = con.getConnectionInfo();
 		ele.addElement("XmiFile").addText(conInfo.getXmiFile());
 		ele.addElement("DomainId").addText(conInfo.getDomainId());
 	}
 	
 	// ...sql.jdbc
 	private void visit(pt.webdetails.cda.connections.sql.JdbcConnection con, Element ele) {
 		final JdbcConnectionInfo conInfo = con.getConnectionInfo();
 		ele.addElement("Driver").addText(conInfo.getDriver());
 		ele.addElement("Url").addText(conInfo.getUrl());
 		ele.addElement("User").addText(conInfo.getUser());
 		ele.addElement("Pass").addText(nvl(conInfo.getPass()));
 
 	}
 	
 	// ...sql.jndi
 	private void visit(pt.webdetails.cda.connections.sql.JndiConnection con, Element ele) {
 		final SqlJndiConnectionInfo conInfo = con.getConnectionInfo();
 		ele.addElement("Jndi").addText(conInfo.getJndi());
 	}
 	
 	// ...mondrian.jdbc
 	private void visit(pt.webdetails.cda.connections.mondrian.JdbcConnection con, Element ele) {
 		ele.addElement("Driver").addText(conInfo.getDriver());
 		ele.addElement("Url").addText(conInfo.getUrl());
 		ele.addElement("User").addText(conInfo.getUser());
		ele.addElement("Pass").addText(nvl(conInfo.getPass()));
		ele.addElement("Catalog").addText(conInfo.getCatalog());
		ele.addElement("Cube").addText(conInfo.getCube());
	}
	// ...mondrian.jndi
	private void visit(pt.webdetails.cda.connections.mondrian.JndiConnection con, Element ele) {
		ele.addElement("Jndi").addText(conInfo.getJndi());
		ele.addElement("Catalog").addText(conInfo.getCatalog());
		ele.addElement("Cube").addText(conInfo.getCube());
	}
	// ...olap4j.jdbc
	private void visit(pt.webdetails.cda.connections.olap4j.JdbcConnection con, Element ele) {
		ele.addElement("Driver").addText(conInfo.getDriver());
		ele.addElement("Url").addText(conInfo.getUrl());
		//TODO: where do these come from?
//		ele.addElement("JdbcDrivers").addText(conInfo.get);
//		ele.addElement("Jdbc").addText(conInfo.getDriver());
//		ele.addElement("JdbcUser").addText(conInfo.);
//		ele.addElement("JdbcPass").addText(conInfo.);
//		ele.addElement("Catalog").addText(conInfo.);
	}
	// ...olap4j.jndi
	private void visit(pt.webdetails.cda.connections.olap4j.JndiConnection con, Element ele) {
		//Spec missing???
	}
	// ...scripting.scripting
	private void visit(ScriptingConnection con, Element ele) {
		final ScriptingConnectionInfo conInfo = con.getConnectionInfo();
		ele.addElement("Language").addText(conInfo.getLanguage());
		ele.addElement("InitScript").addText(nvl(conInfo.getInitScript()));
	}
	// ...xpath.xPath
	private void visit(XPathConnection con, Element ele) {
		final  XPathConnectionInfo conInfo = con.getConnectionInfo();
		ele.addElement("DataFile").addText(conInfo.getXqueryDataFile());
	}
	// ...kettle.TransFromFile
	private void visit(TransFromFileConnection con, Element ele) {
		ele.addElement("KtrFile").addText(conInfo.getTransformationFile());
		//for each variable
		final ParameterMapping[] variables = conInfo.getDefinedVariableNames();
		for (int i = 0; i < variables.length; i++) {
			ParameterMapping var = variables[i];
			Element vars = ele.addElement("variables").addAttribute("datarow-name",var.getName());
			if(!var.getName().equals(var.getAlias())){
				vars.addAttribute("variable-name",var.getAlias());
			}
		}
	}
	/*
	 * DataAccess
	 */
	public void visit(SimpleDataAccess da, Element daEle) {
		daEle.addAttribute("id"da.getId());
		daEle.addAttribute("connection"da.getConnectionId());
		daEle.addAttribute("type"da.getType());
		daEle.addAttribute("access"da.getAccess().name().toLowerCase());
		if(da.isCache()) daEle.addAttribute("cache"new Boolean(da.isCache()).toString());
		if(da.getCacheDuration()!=3600) daEle.addAttribute("cacheDuration""" + da.getCacheDuration());
		daEle.addElement("Name").addText(da.getName());
		daEle.addElement("Query").addCDATA(da.getQuery());
		//daEle.addElement("Query").addText(da.getQuery());
	}
	// Compound data accesses
	public void visit(CompoundDataAccess da, Element daEle) {
		daEle.addAttribute("id"da.getId());
		daEle.addAttribute("type"da.getType());
		if(da instanceof UnionCompoundDataAccess){
			daEle.addElement("Top").addAttribute("id"uDa.getTopId());
			daEle.addElement("Bottom").addAttribute("id"uDa.getBottomId());	
		}
		else if (da instanceof JoinCompoundDataAccess){
			daEle.addElement("Left").addAttribute("id"jDa.getLeftId())
			.addAttribute("keys", StringUtils.join(jDa.getLeftKeys(),","));
			daEle.addElement("Right").addAttribute("id"jDa.getRightId())
			.addAttribute("keys", StringUtils.join(jDa.getRightKeys(),","));
		}
	}
	// Columns
	public void visit(ColumnDefinition columnDefinition, Element daEle) {
		Element colEle = null;
		if (columnDefinition.getType().equals(..)) {
			colEle = daEle.addElement("Column");
			colEle.addAttribute("idx"columnDefinition.getIndex().toString());
			colEle.addElement("Name").addText(columnDefinition.getName());
else {
			colEle = daEle.addElement("CalculatedColumn");
			colEle.addElement("Name").addText(columnDefinition.getName());
			colEle.addElement("Formula").addText(columnDefinition.getFormula());
		}
	}
	// Parameters
	public void visit(Parameter parameter, Element daEle) {
		Element paramEle = daEle.addElement("Parameter");
		paramEle.addAttribute("name"parameter.getName());
		paramEle.addAttribute("type"parameter.getTypeAsString());
		if (parameter.getPattern() != null)
			paramEle.addAttribute("pattern"parameter.getPattern());
		// Object getDefaultValue does not make sense!
		paramEle.addAttribute("default"parameter.getDefaultValue().toString());
			paramEle.addAttribute("access"parameter.getAccess().name().toLowerCase());
		}
	}
	public static String nvl(String text){
		if(text==null){
			return "";
		}else{
			return text;
		}
	}
New to GrepCode? Check out our FAQ X