00001 /* 00002 Copyright (c) Members of the EGEE Collaboration. 2004. 00003 See http://www.eu-egee.org/partners/ for details on the 00004 copyright holders. 00005 00006 Licensed under the Apache License, Version 2.0 (the "License"); 00007 you may not use this file except in compliance with the License. 00008 You may obtain a copy of the License at 00009 00010 http://www.apache.org/licenses/LICENSE-2.0 00011 00012 Unless required by applicable law or agreed to in writing, software 00013 distributed under the License is distributed on an "AS IS" BASIS, 00014 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 00015 either express or implied. 00016 See the License for the specific language governing permissions and 00017 limitations under the License. 00018 */ 00019 00020 00021 #ifndef GLITE_WMS_COMMON_REQUESTAD_PARAMETRICAD_H 00022 #define GLITE_WMS_COMMON_REQUESTAD_PARAMETRICAD_H 00023 /* 00024 * ParametricAd.h 00025 */ 00026 00027 #include "JobAd.h" 00028 #include "JdlAttributeList.h" 00029 00030 namespace glite { 00031 namespace jdl { 00032 00041 class ParametricAd : public glite::jdl::JobAd{ 00042 public: 00044 ParametricAd():JobAd(){}; 00048 ParametricAd(const std::string& jdl):JobAd(){fromString(jdl);}; 00050 ParametricAd(const classad::ClassAd& classAd):JobAd(){fromClassAd(classAd);}; 00052 ParametricAd(const ParametricAd& nodead); 00054 void operator=(const ParametricAd& nodead); 00056 virtual ~ParametricAd() throw(); 00060 std::vector<classad::ExprTree*> getRemoteSandbox() ; 00065 std::vector<std::string> getStringValue(const std::string& attr_name) ; 00070 void addUserTag ( const std::string& attr_name, const std::string& attr_value ); 00075 void checkSyntax( const std::string& attr_name , classad::Value attr_value ) ; 00076 protected: 00081 std::vector<std::string> getISBStrings(); 00085 void checkInputSandbox( std::vector<std::string>& extracted ) ; 00088 void checkSpecials( ) ; 00094 void insertAttribute(const std::string& attr_name , classad::ExprTree* val); 00095 00096 private: 00097 // This vector contains all ISB expr Values, later will be used 00098 std::vector<classad::ExprTree*> inputRemotes ; 00099 friend class ExpDagAd ; 00100 }; 00101 00102 } // jdl namespace 00103 } // glite namespace 00104 00105 #endif 00106 00107 //EOF