Package eu.planets_project.tb.impl.model

Source Code of eu.planets_project.tb.impl.model.ExperimentExecutionImpl

/*******************************************************************************
* Copyright (c) 2007, 2010 The Planets Project Partners.
*
* All rights reserved. This program and the accompanying
* materials are made available under the terms of the
* Apache License, Version 2.0 which accompanies
* this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
/**
*
*/
package eu.planets_project.tb.impl.model;

import java.net.URI;
import java.util.Calendar;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Vector;
import java.util.Map.Entry;

import javax.persistence.Entity;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlTransient;

import eu.planets_project.tb.api.TestbedManager;
import eu.planets_project.tb.api.model.Experiment;
import eu.planets_project.tb.api.model.ExperimentExecutable;
import eu.planets_project.tb.api.model.ExperimentExecution;
import eu.planets_project.tb.api.services.TestbedServiceTemplate;
import eu.planets_project.tb.api.system.mockup.SystemMonitoring;
import eu.planets_project.tb.impl.TestbedManagerImpl;

/**
* @author alindley
*
*/
@SuppressWarnings("serial")
@Entity
@XmlAccessorType(XmlAccessType.FIELD)
public class ExperimentExecutionImpl extends ExperimentPhaseImpl
  implements ExperimentExecution, java.io.Serializable {

  //the EntityID and it's setter and getters are inherited from ExperimentPhase
  //a helper reference pointer, for retrieving the experiment in the phase
    @XmlTransient
    private long lExperimentIDRef;
    // These don't seem to be used anywhere, but removing them will break the Hibernate mapping.
  @SuppressWarnings("unused")
  private boolean bExecutionInProgress;
  @SuppressWarnings("unused")
  private boolean bExecuted;
 
  public ExperimentExecutionImpl(){
    lExperimentIDRef = -1;
    bExecutionInProgress = false;
    bExecuted = false;
    setPhasePointer(PHASE_EXPERIMENTEXECUTION);
  }
 
    /**
     * A helper reference pointer on the experiment's ID to retrieve other phases or the
     * experiment itself if this is required.
     * @return
     */
    public long getExperimentRefID(){
        return this.lExperimentIDRef;
    }

    /**
     * @param lExperimentIDRef
     */
    public void setExperimentRefID(long lExperimentIDRef){
        this.lExperimentIDRef = lExperimentIDRef;
    }
   
    /* (non-Javadoc)
     * @see eu.planets_project.tb.api.model.ExperimentExecution#getMigrationOutputDataEntries()
     */
    public Collection<Map.Entry<URI,URI>> getMigrationOutputDataEntries(){
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        //get the migration experiment's results
        return executable.getMigrationHttpDataEntries();
      }
    }
    return null;
  }


    /* (non-Javadoc)
     * @see eu.planets_project.tb.api.model.ExperimentExecution#getMigrationOutputDataEntry(java.lang.String)
     */
    public Map.Entry<URI, URI> getMigrationOutputDataEntry(URI inputFileURI){
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        //check if requested inputFileURI is part of the execution input
        boolean bContains = executable.getAllInputHttpDataEntries().contains(inputFileURI);
        if(bContains){
          //find the matching entry
          Iterator<Entry<URI,URI>> itEntry = executable.getMigrationHttpDataEntries().iterator();
          while(itEntry.hasNext()){
            Entry<URI,URI> entry = itEntry.next();
            //check if we've found the matchin inputFileURI
            if(entry.getKey().equals(inputFileURI)){
              //build return value Map and then Entry
              HashMap<URI,URI> ret = new HashMap<URI,URI>();
              ret.put(entry.getKey(), entry.getValue());
              Iterator<Entry<URI,URI>> itRet = ret.entrySet().iterator();
              while(itRet.hasNext()){
                return itRet.next();
              }
            }
          }
        }
      }
    }
    return null;
  }
   
   
    /* (non-Javadoc)
     * @see eu.planets_project.tb.api.model.ExperimentExecution#getCharacterisationOutputDataEntries()
     */
    public Collection<Map.Entry<URI, String>> getCharacterisationOutputDataEntries(){
      TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data - this is fetched and returned
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        //get the characterisation experiment's results
        return executable.getCharacterisationHttpDataEntries();
      }
    }
    return null;
    }
   
   
    /* (non-Javadoc)
     * @see eu.planets_project.tb.api.model.ExperimentExecution#getCharacterisationOutputDataEntry(java.net.URI)
     */
    public Map.Entry<URI, String> getCharacterisationOutputDataEntry(URI inputFileURI){
      TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        //check if requested inputFileURI is part of the execution input
        boolean bContains = executable.getAllInputHttpDataEntries().contains(inputFileURI);
        if(bContains){
          //find the matching entry
          Iterator<Entry<URI,String>> itEntry = executable.getCharacterisationHttpDataEntries().iterator();
          while(itEntry.hasNext()){
            Entry<URI,String> entry = itEntry.next();
            //check if we've found the matchin inputFileURI
            if(entry.getKey().equals(inputFileURI)){
              //build return value Map and then Entry
              HashMap<URI,String> ret = new HashMap<URI,String>();
              ret.put(entry.getKey(), entry.getValue());
              Iterator<Entry<URI,String>> itRet = ret.entrySet().iterator();
              while(itRet.hasNext()){
                return itRet.next();
              }
            }
          }
        }
      }
    }
    return null;
    }

  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#getMigrationOutputData()
   */
  public Collection<URI> getMigrationOutputData() {
    Collection<URI> ret = new Vector<URI>();
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null && exp.getExperimentExecutable().getOutputData() != null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        //get the Migration's output data (as URI)
        return executable.getAllMigrationOutputHttpData();
      }
    }
    return ret;
  }

  public Collection<String> getCharacterisationOutputData() {
    Collection<String> ret = new Vector<String>();
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        //get the Characterisation's output data (as URI)
        return executable.getAllCharacterisationOutputHttpData();
      }
    }
    return ret;
  }
 
  public List<String> getExecutionMetadata(URI inputFile) {
    // TODO Auto-generated method stub
    return null;
  }

  public String getExecutionState(URI inputFile) {
    // TODO Auto-generated method stub
    return null;
  }

  public Calendar getScheduledExecutionDate() {
    // TODO Auto-generated method stub
    return null;
  }

  public SystemMonitoring getSystemMonitoringData() {
    // TODO Auto-generated method stub
    return null;
  }

  public void setScheduledExecutionDate(long millis) {
    // TODO Auto-generated method stub
   
  }

  public void setScheduledExecutionDate(Calendar date) {
    // TODO Auto-generated method stub
   
  }

  public void setSystemMonitoringData(SystemMonitoring systemState) {
    // TODO Auto-generated method stub
   
  }
 
  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#getExecutionStartedDate()
   */
  public Calendar getExecutionStartedDate(){
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        return executable.getExecutionStartDate();
      }
    }
    return null;
  }

  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#getExecutionEndedDate()
   */
  public Calendar getExecutionEndedDate(){
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        return executable.getExecutionEndDate();
      }
    }
    return null;
  }

  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#isExecutionInProgress()
   */
  public boolean isExecutionInvoked() {
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        return executable.isExecutableInvoked();
      }
    }
    return false;
  }

 
  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#isExecuted()
   */
  public boolean isExecutionCompleted() {
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        return executable.isExecutionCompleted();
      }
    }
    return false;
  }
 
 
  public boolean isExecutionSuccess() {
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        return executable.isExecutionSuccess();
      }
    }
    return false;
  }


  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#getSelectedTBServiceTemplate()
   */
  public TestbedServiceTemplate getSelectedTBServiceTemplate() {
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        return executable.getServiceTemplate();
      }
    }
    return null;
  }


  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#getselectedTBServiceTemplateOperation()
   */
  public TestbedServiceTemplate.ServiceOperation getselectedTBServiceTemplateOperation() {
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    Experiment exp = manager.getExperiment(this.lExperimentIDRef);
    if(exp!=null){
      //contains the experiment's execution data
      ExperimentExecutable executable = exp.getExperimentExecutable();
      if(executable!=null){
        String sOpName = executable.getSelectedServiceOperationName();
       
        //fetch the object for the selected service operation name
        return executable.getServiceTemplate().getServiceOperation(sOpName);
      }
    }
    return null;
  }

 
  /* (non-Javadoc)
   * @see eu.planets_project.tb.api.model.ExperimentExecution#getExperimentExecutable()
   */
  public ExperimentExecutable getExperimentExecutable() {
    TestbedManager manager = TestbedManagerImpl.getInstance(true);
    return manager.getExperiment(this.lExperimentIDRef).getExperimentExecutable();
  }

}
TOP

Related Classes of eu.planets_project.tb.impl.model.ExperimentExecutionImpl

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.