00001 /**************************************************************** 00002 * 00003 * Copyright (c) 2011, 2012 00004 * 00005 * School of Engineering, Cardiff University, UK 00006 * 00007 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00008 * 00009 * Project name: srs EU FP7 (www.srs-project.eu) 00010 * ROS stack name: srs 00011 * ROS package name: srs_knowledge 00012 * Description: 00013 * 00014 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00015 * 00016 * @author Ze Ji, email: jiz1@cf.ac.uk 00017 * 00018 * Date of creation: Oct 2011: 00019 * ToDo: 00020 * 00021 * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 00022 * 00023 * Redistribution and use in source and binary forms, with or without 00024 * modification, are permitted provided that the following conditions are met: 00025 * 00026 * * Redistributions of source code must retain the above copyright 00027 * notice, this list of conditions and the following disclaimer. 00028 * * Redistributions in binary form must reproduce the above copyright 00029 * notice, this list of conditions and the following disclaimer in the 00030 * documentation and/or other materials provided with the distribution. 00031 * * Neither the name of the school of Engineering, Cardiff University nor 00032 * the names of its contributors may be used to endorse or promote products 00033 * derived from this software without specific prior written permission. 00034 * 00035 * This program is free software: you can redistribute it and/or modify 00036 * it under the terms of the GNU Lesser General Public License LGPL as 00037 * published by the Free Software Foundation, either version 3 of the 00038 * License, or (at your option) any later version. 00039 * 00040 * This program is distributed in the hope that it will be useful, 00041 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00042 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00043 * GNU Lesser General Public License LGPL for more details. 00044 * 00045 * You should have received a copy of the GNU Lesser General Public 00046 * License LGPL along with this program. 00047 * If not, see <http://www.gnu.org/licenses/>. 00048 * 00049 ****************************************************************/ 00050 00051 package org.srs.srs_knowledge.task; 00052 00053 import java.io.*; 00054 import java.util.StringTokenizer; 00055 import java.util.ArrayList; 00056 import java.util.HashMap; 00057 import java.util.Set; 00058 import ros.pkg.srs_knowledge.msg.*; 00059 import ros.pkg.geometry_msgs.msg.Pose2D; 00060 00061 import org.srs.srs_knowledge.task.*; 00062 import org.srs.srs_knowledge.knowledge_engine.*; 00063 00064 import com.hp.hpl.jena.rdf.model.*; 00065 import com.hp.hpl.jena.query.QueryExecutionFactory; 00066 import com.hp.hpl.jena.query.ResultSet; 00067 import com.hp.hpl.jena.query.QueryExecution; 00068 import com.hp.hpl.jena.query.QuerySolution; 00069 import com.hp.hpl.jena.ontology.Individual; 00070 00071 public class HighLevelActionSequence { 00072 public HighLevelActionSequence() { 00073 indOfCurrent = 0; 00074 } 00075 00076 public void appendHighLevelAction(HighLevelActionUnit actUnit) { 00077 highLevelActionList.add(actUnit); 00078 } 00079 00080 public int getSizeOfHighLevelActionList() { 00081 return highLevelActionList.size(); 00082 } 00083 00084 public boolean hasNextHighLevelActionUnit() { 00085 if(indOfCurrent + 1 < getSizeOfHighLevelActionList() && indOfCurrent + 1 >= 0) { 00086 return true; 00087 } 00088 else { 00089 return false; 00090 } 00091 } 00092 00093 public HighLevelActionUnit getNextHighLevelActionUnit() { 00094 HighLevelActionUnit ha; 00095 //System.out.println("++++++++ >> " + indOfCurrent + " SIZE: " + highLevelActionList.size()); 00096 try{ 00097 ha = highLevelActionList.get(indOfCurrent + 1); 00098 indOfCurrent = indOfCurrent + 1; 00099 } 00100 catch(NullPointerException ne) { 00101 System.out.println(ne.getMessage()); 00102 return null; 00103 } 00104 return ha; 00105 } 00106 00107 public HighLevelActionUnit getCurrentHighLevelActionUnit() { 00108 try{ 00109 return highLevelActionList.get(indOfCurrent); 00110 } 00111 catch(Exception ne) { 00112 System.out.println(ne.getMessage()); 00113 return null; 00114 } 00115 } 00116 00117 public boolean shiftToNextActionUnit() { 00118 HighLevelActionUnit ha; 00119 if((indOfCurrent + 1 )< highLevelActionList.size()) { 00120 indOfCurrent++; 00121 return true; 00122 } 00123 return false; 00124 } 00125 00126 public void setParameter(String key, Object value) { 00127 parameters.put(key, value); 00128 } 00129 00130 public Object getParameter(String key) { 00131 return parameters.get(key); 00132 } 00133 00134 public Set<String> parametersSet() { 00135 return (Set<String>)parameters.keySet(); 00136 } 00137 00138 protected int indOfCurrent; 00139 00140 protected ArrayList<HighLevelActionUnit> highLevelActionList = new ArrayList<HighLevelActionUnit>(); 00141 00142 protected HashMap<String, Object> parameters = new HashMap<String, Object>(); 00143 }