1 /************************************************************** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one 4 * or more contributor license agreements. See the NOTICE file 5 * distributed with this work for additional information 6 * regarding copyright ownership. The ASF licenses this file 7 * to you under the Apache License, Version 2.0 (the 8 * "License"); you may not use this file except in compliance 9 * with the License. You may obtain a copy of the License at 10 * 11 * http://www.apache.org/licenses/LICENSE-2.0 12 * 13 * Unless required by applicable law or agreed to in writing, 14 * software distributed under the License is distributed on an 15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16 * KIND, either express or implied. See the License for the 17 * specific language governing permissions and limitations 18 * under the License. 19 * 20 *************************************************************/ 21 22 23 24 #ifndef __FRAMEWORK_JOBS_JOBURL_HXX_ 25 #define __FRAMEWORK_JOBS_JOBURL_HXX_ 26 27 //_______________________________________ 28 // my own includes 29 30 #include <threadhelp/threadhelpbase.hxx> 31 #include <macros/debug.hxx> 32 #include <stdtypes.h> 33 #include <general.h> 34 35 //_______________________________________ 36 // interface includes 37 38 //_______________________________________ 39 // other includes 40 #include <rtl/ustring.hxx> 41 42 //_______________________________________ 43 // namespace 44 45 namespace framework{ 46 47 //_______________________________________ 48 // const 49 50 #define JOBURL_PROTOCOL_STR "vnd.sun.star.job:" 51 #define JOBURL_PROTOCOL_LEN 17 52 53 #define JOBURL_EVENT_STR "event=" 54 #define JOBURL_EVENT_LEN 6 55 56 #define JOBURL_ALIAS_STR "alias=" 57 #define JOBURL_ALIAS_LEN 6 58 59 #define JOBURL_SERVICE_STR "service=" 60 #define JOBURL_SERVICE_LEN 8 61 62 #define JOBURL_PART_SEPERATOR ';' 63 #define JOBURL_PARTARGS_SEPERATOR ',' 64 65 //_______________________________________ 66 /** 67 @short can be used to parse, validate and work with job URL's 68 @descr Job URLs are specified by the following syntax: 69 vnd.sun.star.job:{[event=<name>]|[alias=<name>]|[service=<name>]} 70 This class can analyze this structure and separate it into his different parts. 71 After doing that these parts are accessible by the methods of this class. 72 */ 73 class JobURL : private ThreadHelpBase 74 { 75 //___________________________________ 76 // types 77 78 private: 79 80 /** 81 possible states of a job URL 82 Note: These values are used in combination. So they must be 83 values in form 2^n. 84 */ 85 enum ERequest 86 { 87 /// mark a job URL as not valid 88 E_UNKNOWN = 0, 89 /// it's an event 90 E_EVENT = 1, 91 /// it's an alias 92 E_ALIAS = 2, 93 /// it's a service 94 E_SERVICE = 4 95 }; 96 97 //___________________________________ 98 // types 99 100 private: 101 102 /** knows the state of this URL instance */ 103 sal_uInt32 m_eRequest; 104 105 /** holds the event part of a job URL */ 106 ::rtl::OUString m_sEvent; 107 108 /** holds the alias part of a job URL */ 109 ::rtl::OUString m_sAlias; 110 111 /** holds the service part of a job URL */ 112 ::rtl::OUString m_sService; 113 114 /** holds the event arguments */ 115 ::rtl::OUString m_sEventArgs; 116 117 /** holds the alias arguments */ 118 ::rtl::OUString m_sAliasArgs; 119 120 /** holds the service arguments */ 121 ::rtl::OUString m_sServiceArgs; 122 123 //___________________________________ 124 // native interface 125 126 public: 127 128 JobURL ( const ::rtl::OUString& sURL ); 129 sal_Bool isValid ( ) const; 130 sal_Bool getEvent ( ::rtl::OUString& sEvent ) const; 131 sal_Bool getAlias ( ::rtl::OUString& sAlias ) const; 132 sal_Bool getService ( ::rtl::OUString& sService ) const; 133 134 //___________________________________ 135 // private helper 136 137 private: 138 139 static sal_Bool implst_split( const ::rtl::OUString& sPart , 140 const sal_Char* pPartIdentifier , 141 sal_Int32 nPartLength , 142 ::rtl::OUString& rPartValue , 143 ::rtl::OUString& rPartArguments ); 144 145 //___________________________________ 146 // debug methods! 147 148 #ifdef ENABLE_COMPONENT_SELF_CHECK 149 150 public: 151 static void impldbg_checkIt(); 152 153 private: 154 static void impldbg_checkURL( const sal_Char* pURL , 155 sal_uInt32 eExpectedPart , 156 const sal_Char* pExpectedEvent , 157 const sal_Char* pExpectedAlias , 158 const sal_Char* pExpectedService , 159 const sal_Char* pExpectedEventArgs , 160 const sal_Char* pExpectedAliasArgs , 161 const sal_Char* pExpectedServiceArgs ); 162 ::rtl::OUString impldbg_toString() const; 163 164 sal_Bool getServiceArgs( ::rtl::OUString& sServiceArgs ) const; 165 sal_Bool getEventArgs ( ::rtl::OUString& sEventArgs ) const; 166 sal_Bool getAliasArgs ( ::rtl::OUString& sAliasArgs ) const; 167 168 #endif // ENABLE_COMPONENT_SELF_CHECK 169 }; 170 171 } // namespace framework 172 173 #endif // __FRAMEWORK_JOBS_JOBURL_HXX_ 174