// ============================================================================
//
// Copyright (C) 2006-2012 Talend Inc. - www.talend.com
//
// This source code is available under agreement available at
// %InstallDIR%\features\org.talend.rcp.branding.%PRODUCTNAME%\%PRODUCTNAME%license.txt
//
// You should have received a copy of the agreement
// along with this program; if not, write to Talend SA
// 9 rue Pages 92150 Suresnes, France
//
// ============================================================================
package org.talend.repository;
import org.talend.commons.exception.LoginException;
import org.talend.commons.exception.PersistenceException;
import org.talend.core.model.general.Project;
/**
* @param <T>
*/
public abstract class RepositoryWorkUnit<T> {
private String name;
private Project project;
protected T result;
private LoginException loginException;
private PersistenceException persistenceException;
private Object startingPoint;
private boolean forceTransaction;
private boolean avoidUnloadResourcesBeforeRun;
private boolean unloadResourcesAfterRun;
public Object getStartingPoint() {
return startingPoint;
}
public T getResult() {
return result;
}
public RepositoryWorkUnit(String name) {
this.name = name;
}
public RepositoryWorkUnit(String name, Object startingPoint) {
this(name);
this.startingPoint = startingPoint;
}
public RepositoryWorkUnit(Project project, String name) {
this.project = project;
this.name = name;
}
public Project getProject() {
return project;
}
public String getName() {
return name;
}
public void setLoginException(LoginException loginException) {
this.loginException = loginException;
}
public void setPersistenceException(PersistenceException persistenceException) {
this.persistenceException = persistenceException;
}
protected abstract void run() throws LoginException, PersistenceException;
public void executeRun() {
try {
run();
} catch (LoginException e) {
setLoginException(e);
} catch (PersistenceException e) {
setPersistenceException(e);
}
}
public void throwLoginExceptionIfAny() throws LoginException {
if (loginException != null) {
throw loginException;
}
}
public void throwPersistenceExceptionIfAny() throws PersistenceException {
if (persistenceException != null) {
throw persistenceException;
}
}
public boolean isForceTransaction() {
return this.forceTransaction;
}
public void setForceTransaction(boolean forceTransaction) {
this.forceTransaction = forceTransaction;
}
/**
* Getter for avoidUnloadResources.
*
* @return the avoidUnloadResources
*/
public boolean isAvoidUnloadResources() {
return this.avoidUnloadResourcesBeforeRun;
}
/**
* Sets the avoidUnloadResources.
*
* @param avoidUnloadResources the avoidUnloadResources to set
*/
public void setAvoidUnloadResources(boolean avoidUnloadResources) {
this.avoidUnloadResourcesBeforeRun = avoidUnloadResources;
}
public boolean isUnloadResourcesAfterRun() {
return unloadResourcesAfterRun;
}
public void setUnloadResourcesAfterRun(boolean unloadResourcesAfterRun) {
this.unloadResourcesAfterRun = unloadResourcesAfterRun;
}
}