blob: fd8206dd7ef088e2c805dcbc26c81cd6c92a0e68 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004, 2007 Boeing.
* 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:
* Boeing - initial API and implementation
*******************************************************************************/
package org.eclipse.osee.ote.ui.test.manager.models;
import java.io.File;
import org.eclipse.core.filebuffers.manipulation.ContainerCreator;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.osee.framework.jdk.core.util.Strings;
import org.eclipse.osee.framework.ui.ws.AJavaProject;
import org.eclipse.osee.ote.core.TestScript;
import org.eclipse.osee.ote.core.environment.config.ScriptVersionConfig;
import org.eclipse.osee.ote.version.FileVersion;
public class ScriptModel extends FileModel {
public enum ScriptInteractionEnum {
BATCH,
MANUAL,
UNKNOWN
}
public class TestFileData {
public String absoluteFilePath = null;
public String classPath = null;
public String error = "";
public String name = null;
public String outFile = null;
public String projectPath = null;
public String rawFileName;
public ScriptVersionConfig getVersionInfo(FileVersion version) {
ScriptVersionConfig scriptVersion = new ScriptVersionConfig();
if (version != null) {
scriptVersion.setLastChangedRevision(version.getLastChangedRevision());
scriptVersion.setLocation(version.getURL());
scriptVersion.setRepositoryType(version.getVersionControlSystem());
scriptVersion.setLastAuthor(version.getLastAuthor());
scriptVersion.setLastModificationDate(version.getLastModificationDate());
scriptVersion.setModifiedFlag(version.getModifiedFlag());
}
return scriptVersion;
}
}
private TestFileData javaFileData;
private OutputModel outputModel;
private TestScript testScript;
/**
* @param outputDir alternate output directory for tmo output files null will default to script directory
*/
public ScriptModel(String rawFilename, String outputDir) {
super(rawFilename);
javaFileData = new TestFileData();
javaFileData = getSunData(outputDir);
javaFileData.rawFileName = rawFilename;
outputModel = new OutputModel(javaFileData.outFile);
}
public ScriptInteractionEnum getInteraction() {
if (testScript == null) {
return ScriptInteractionEnum.UNKNOWN;
}
if (testScript.isBatchable()) {
return ScriptInteractionEnum.BATCH;
} else {
return ScriptInteractionEnum.MANUAL;
}
}
/**
* @return Returns the outputModel.
*/
public OutputModel getOutputModel() {
outputModel.setRawFilename(javaFileData.outFile);
return outputModel;
}
/**
* @param alternateOutputDir place output files here instead of at location of the script
* @return Returns sun data.
*/
private TestFileData getSunData(String alternateOutputDir) {
javaFileData.absoluteFilePath = getRawFilename();
String temp = null;
if (javaFileData.absoluteFilePath.endsWith(".java")) {
temp = AJavaProject.getClassName(this.getRawFilename());
}
javaFileData.name = temp == null ? new File(getRawFilename()).getName() : temp;
javaFileData.classPath = "";
alternateOutputDir = alternateOutputDir.trim();
if (!Strings.isValid(alternateOutputDir)) {
javaFileData.outFile = javaFileData.absoluteFilePath.replaceFirst(".java$", ".tmo");
if (!javaFileData.outFile.endsWith(".tmo")) {
javaFileData.outFile += ".tmo";
}
} else {
try {
File dir = new File(alternateOutputDir);
if (dir.exists() && dir.isDirectory()) {
javaFileData.outFile = alternateOutputDir;
} else {
if (getIFile() != null) {
IProject project = getIFile().getProject();
IFolder folder = project.getFolder(alternateOutputDir);
if (!folder.exists()) {
ContainerCreator containerCreator =
new ContainerCreator(folder.getWorkspace(), folder.getFullPath());
containerCreator.createContainer(new NullProgressMonitor());
}
javaFileData.outFile = folder.getLocation().toFile().getAbsolutePath();
}
}
javaFileData.outFile += File.separator;
javaFileData.outFile += getName();
javaFileData.outFile = javaFileData.outFile.replaceFirst(".java$", ".tmo");
if (!javaFileData.outFile.endsWith(".tmo")) {
javaFileData.outFile += ".tmo";
}
} catch (CoreException ex) {
ex.printStackTrace();
javaFileData.outFile = javaFileData.absoluteFilePath.replaceFirst(".java$", ".tmo");
if (!javaFileData.outFile.endsWith(".tmo")) {
javaFileData.outFile += ".tmo";
}
}
}
// outputModel = new OutputModel(javaFileData.outFile);
// OseeLog.log(TestManagerPlugin.class, Level.FINE, "javaFileData.absoluteJavaPath *"+ javaFileData.absoluteFilePath + "*");
// OseeLog.log(TestManagerPlugin.class, Level.FINE, "javaFileData.className *" + javaFileData.name + "*");
// OseeLog.log(TestManagerPlugin.class, Level.FINE, "javaFileData.classPath *" + javaFileData.classPath + "*");
// OseeLog.log(TestManagerPlugin.class, Level.FINE, "javaFileData.outFile *" + javaFileData.outFile+ "*");
return javaFileData;
}
public TestFileData updateScriptModelInfo(String alternateOutputDir) {
TestFileData javaFileData = getSunData(alternateOutputDir);
outputModel = new OutputModel(javaFileData.outFile);
return javaFileData;
}
public String getTestClass() {
return javaFileData.name;
}
/**
* @param outputModel The outputModel to set.
*/
public void setOutputModel(OutputModel outputModel) {
this.outputModel = outputModel;
}
}