blob: d3d153cd6b58e8e190e45a433aadc01394e14a1c [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 The University of York.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Dimitrios Kolovos - initial API and implementation
******************************************************************************/
package org.eclipse.epsilon.workflow.tasks;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.eclipse.epsilon.eol.execute.context.ExtendedProperties;
import org.eclipse.epsilon.eol.execute.context.Frame;
import org.eclipse.epsilon.eol.execute.context.FrameType;
import org.eclipse.epsilon.eol.execute.context.SingleFrame;
import org.eclipse.epsilon.eol.models.ModelRepository;
import org.eclipse.epsilon.workflow.tasks.transactions.NamedTransactionSupport;
public abstract class EpsilonTask extends Task {
static final String EPSILON_REPOSITORY = "epsilon.modelRepository";
static final String EPSILON_EXTENDEDPROPERTIES = "epsilon.extendedProperties";
static final String EPSILON_FRAME = "epsilon.frame";
static final String EPSILON_ACTIVETRANSACTIONS = "epsilon.activeTransactions";
protected boolean profile;
protected boolean failOnErrors = true;
protected boolean failOnWarnings = false;
@Override
public final void execute() throws BuildException {
try {
executeImpl();
}
catch (BuildException ex) {
throw ex;
}
}
public abstract void executeImpl() throws BuildException;
protected void fail(String message, Exception exception) throws BuildException {
if (failOnErrors) {
throw new BuildException(message, exception);
}
else {
log(message, Project.MSG_ERR);
}
}
protected void warn(String message) throws BuildException {
if (failOnWarnings) {
// getProjectRepository().dispose();
throw new BuildException(message);
}
else {
log(message, Project.MSG_WARN);
}
}
protected ExtendedProperties getExtendedProperties() {
ExtendedProperties extendedProperties =
(ExtendedProperties) getProject().getReference(EpsilonTask.EPSILON_EXTENDEDPROPERTIES);
if (extendedProperties == null) {
extendedProperties = new ExtendedProperties();
getProject().addReference(EpsilonTask.EPSILON_EXTENDEDPROPERTIES, extendedProperties);
}
return extendedProperties;
}
protected ModelRepository getProjectRepository() {
ModelRepository repository =
(ModelRepository) getProject().getReference(EpsilonTask.EPSILON_REPOSITORY);
if (repository == null) {
repository = new ModelRepository();
setProjectRepository(repository);
}
return repository;
}
protected void setProjectRepository(ModelRepository repository) {
getProject().addReference(EpsilonTask.EPSILON_REPOSITORY, repository);
}
protected List<NamedTransactionSupport> getActiveTransactions() {
List<NamedTransactionSupport> activeTransactions =
(List<NamedTransactionSupport>) getProject().getReference(EpsilonTask.EPSILON_ACTIVETRANSACTIONS);
if (activeTransactions == null) {
activeTransactions = new ArrayList<NamedTransactionSupport>();
getProject().addReference(EpsilonTask.EPSILON_ACTIVETRANSACTIONS, activeTransactions);
}
return activeTransactions;
}
protected Frame getProjectStackFrame() {
Frame frame = (Frame) getProject().getReference(EpsilonTask.EPSILON_FRAME);
if (frame == null) {
frame = new SingleFrame(FrameType.PROTECTED, null);
getProject().addReference(EpsilonTask.EPSILON_FRAME, frame);
}
return frame;
}
protected File getBaseDir() {
return new File(getProject().getBaseDir(),"\\");
}
/*
protected File getFile(String path) {
File file = new File(path);
if (!file.isAbsolute()) {
file = new File(getBaseDir(), path);
}
return file;
}*/
public boolean isProfile() {
return profile;
}
public void setProfile(boolean profile) {
this.profile = profile;
}
public boolean isFailOnErrors() {
return failOnErrors;
}
public void setFailOnErrors(boolean failOnErrors) {
this.failOnErrors = failOnErrors;
}
public boolean isFailOnWarnings() {
return failOnWarnings;
}
public void setFailOnWarnings(boolean failOnWarnings) {
this.failOnWarnings = failOnWarnings;
}
}