All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.reprezen.genflow.api.template.GenTemplateContext Maven / Gradle / Ivy

/*******************************************************************************
 * Copyright © 2013, 2016 Modelsolv, Inc.
 * All Rights Reserved.
 *
 * NOTICE: All information contained herein is, and remains the property
 * of ModelSolv, Inc. See the file license.html in the root directory of
 * this project for further information.
 *******************************************************************************/
package com.reprezen.genflow.api.template;

import java.io.File;
import java.util.Map;
import java.util.logging.Logger;

import com.reprezen.genflow.api.GenerationException;
import com.reprezen.genflow.api.source.ISource;
import com.reprezen.genflow.api.target.GenTarget;
import com.reprezen.genflow.api.template.builders.NamedSourceBuilder.NamedSourceSpec;
import com.reprezen.genflow.api.template.builders.ParameterBuilder.ParameterSpec;
import com.reprezen.genflow.api.template.builders.PrerequisiteBuilder.PrerequisiteSpec;
import com.reprezen.genflow.api.template.builders.PrimarySourceBuilder.PrimarySourceSpec;
import com.reprezen.genflow.api.trace.GenTemplateTrace;
import com.reprezen.genflow.api.trace.GenTemplateTraceBuilder;
import com.reprezen.genflow.api.trace.GenTemplateTraceBuilder.GenTemplateTraceItemBuilder;
import com.reprezen.genflow.api.trace.GenTemplateTraces;

public class GenTemplateContext implements IGenTemplateContext {

	private Logger logger;
	private GenTarget controllingGenTarget;
	private GenTemplateTraces traces;
	private GenTemplateTraceBuilder traceBuilder;
	private IGenTemplate executingGenTemplate;
	private GenTemplateDependencies dependencies;
	private ISource primarySource;
	private File outputDirectory;
	private File currentOutputFile;

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.reprezen.genflow.api.template.IGenTemplateContext#getLogger()
	 */
	@Override
	public Logger getLogger() {
		return logger;
	}

	public void setLogger(Logger logger) {
		this.logger = logger;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#getControllingGenTarget
	 * ()
	 */
	@Override
	public GenTarget getControllingGenTarget() {
		return controllingGenTarget;
	}

	public void setControllingGenTarget(GenTarget controllingGenTarget) {
		this.controllingGenTarget = controllingGenTarget;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.reprezen.genflow.api.template.IGenTemplateContext#getTraces()
	 */
	@Override
	public GenTemplateTraces getTraces() {
		return traces;
	}

	public void setTraces(GenTemplateTraces traces) {
		this.traces = traces;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.reprezen.genflow.api.template.IGenTemplateContext#getTraceBuilder()
	 */
	@Override
	public GenTemplateTraceBuilder getTraceBuilder() {
		return traceBuilder;
	}

	public void setTraceBuilder(GenTemplateTraceBuilder traceBuilder) {
		this.traceBuilder = traceBuilder;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#getExecutingGenTemplate
	 * ()
	 */
	@Override
	public IGenTemplate getExecutingGenTemplate() {
		return executingGenTemplate;
	}

	public void setExecutingGenTemplate(IGenTemplate executingGenTemplate) {
		this.executingGenTemplate = executingGenTemplate;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.reprezen.genflow.api.template.IGenTemplateContext#getPrimarySource()
	 */
	@Override
	public ISource getPrimarySource() {
		return primarySource;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see com.reprezen.genflow.api.template.IGenTemplateContext#getDependencies()
	 */
	@Override
	public GenTemplateDependencies getDependencies() {
		return dependencies;
	}

	public void setDependencies(GenTemplateDependencies dependencies) {
		this.dependencies = dependencies;
	}

	public void setPrimarySource(ISource primarySource) {
		this.primarySource = primarySource;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#getOutputDirectory()
	 */
	@Override
	public File getOutputDirectory() {
		return outputDirectory;
	}

	public void setOutputDirectory(File outputDirectory) {
		this.outputDirectory = outputDirectory;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#getCurrentOutputFile()
	 */
	@Override
	public File getCurrentOutputFile() {
		return currentOutputFile;
	}

	public void setCurrentOutputFile(File currentOutputFile) {
		this.currentOutputFile = currentOutputFile;
	}

	// Following are convenience methods that make use of context items

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#getGenTargetParameters(
	 * )
	 */
	@Override
	public Map getGenTargetParameters() {
		return controllingGenTarget.getParameters();
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#getPrerequisiteTrace(
	 * java.lang.String)
	 */
	@Override
	public GenTemplateTrace getPrerequisiteTrace(String prerequisiteName) throws GenerationException {
		File prerequisiteGenFile = controllingGenTarget.getPrerequisites().get(prerequisiteName).getGenFilePath();
		return traces.get(controllingGenTarget.resolvePath(prerequisiteGenFile));
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#resolveOutputPath(java.
	 * io.File)
	 */
	@Override
	public File resolveOutputPath(File path) throws GenerationException {
		return controllingGenTarget.resolveOutputPath(path);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#addTraceItem(java.lang.
	 * String)
	 */
	@Override
	public GenTemplateTraceItemBuilder addTraceItem(String type) {
		return traceBuilder.newItem(type);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * com.reprezen.genflow.api.template.IGenTemplateContext#addPrimaryTraceItem(
	 * java.io.File, java.lang.String)
	 */
	@Override
	public GenTemplateTraceBuilder addPrimaryTraceItem(File outputFile, String locator) {
		return traceBuilder.addPrimaryItem(outputFile, locator);
	}

	public void addPrimarySouceDependency(PrimarySourceSpec spec) {
		dependencies.addPrimarySouceDependency(spec);
	}

	public void addNamedSourceDependency(NamedSourceSpec spec) {
		dependencies.addNamedSourceDependency(spec);
	}

	public void addGeneratorDependency(PrerequisiteSpec spec) {
		dependencies.addGeneratorDependency(spec);
	}

	public void addRequiredGeneratorDependency(String name, String genTemplateId, String description) {
		dependencies.addRequiredGeneratorDependency(name, genTemplateId, description);
	}

	public void addParameterDependency(ParameterSpec spec) {
		dependencies.addParameterDependency(spec);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy