001 /* 002 * file CcProvider.java 003 * 004 * Licensed Materials - Property of IBM 005 * Restricted Materials of IBM 006 * 007 * com.ibm.rational.wvcm.stp.cc.CcProvider 008 * 009 * © Copyright IBM Corporation 2004, 2008. All Rights Reserved. 010 * Note to U.S. Government Users Restricted Rights: Use, duplication or 011 * disclosure restricted by GSA ADP Schedule Contract with IBM Corp. 012 */ 013 014 package com.ibm.rational.wvcm.stp.cc; 015 016 import java.util.List; 017 018 import javax.wvcm.ResourceList; 019 import javax.wvcm.WorkspaceProvider; 020 import javax.wvcm.WvcmException; 021 import javax.wvcm.PropertyRequestItem.PropertyRequest; 022 import javax.wvcm.ProviderFactory.Callback.Authentication; 023 024 import com.ibm.rational.wvcm.stp.StpLocation; 025 import com.ibm.rational.wvcm.stp.StpProvider; 026 import com.ibm.rational.wvcm.stp.cc.CcMergeHandlingCallback.CheckinMergeHandling; 027 import com.ibm.rational.wvcm.stp.cc.CcView.TextMode; 028 import com.ibm.rational.wvcm.stp.ccex.CcExServer; 029 030 /** 031 * A ClearCase-specific extension of the javax.wvcm.Provider interface. 032 * <p> 033 * The CcProvider interface contains factory methods for constructing proxies 034 * for various ClearCase-specific resources. Note that there are many resource 035 * types where a ClearCase-specific interface exists for a standard WVCM 036 * interface. For instance, CcFile is the ClearCase specialization of 037 * javax.wvcm.ControllableResource. 038 * </p> 039 * <p> 040 * The CcProvider interface also contains methods for listing client-side 041 * and server-side ClearCase resources: 042 * <bl> 043 * <li>{@link #getClientViewList} lists the web views 044 * available on the local machine 045 * </li> 046 * <li>{@link #doGetDefaultCcRegistryRegion} gets the default 047 * ClearCase registry region, which in turn has properties representing the 048 * ClearCase VOBs and views in that region. 049 * </li> 050 * </bl> 051 * </p> 052 */ 053 public interface CcProvider 054 extends StpProvider, WorkspaceProvider 055 { 056 /** 057 * The name of a CcProvider class whose instances also provide access to a 058 * CcProvider object. Pass this name to ProviderFactory.createProvider to 059 * obtain an object that implements this interface and provides access to an 060 * implementation of CcProvider interface. 061 * 062 * @see com.ibm.rational.wvcm.stp.ccex.CcExProvider#NETWORK_PROVIDERS 063 * @deprecated Use 064 * com.ibm.rational.wvcm.stp.ccex.CcExProvider#NETWORK_PROVIDERS 065 */ 066 String PROVIDER_CLASS = 067 "com.ibm.rational.stp.client.internal.cc.CcSubproviderImpl"; 068 069 /** 070 * The name of a CcProvider class whose instances provide only support for 071 * ClearCase via a server. Pass this name to ProviderFactory.createProvider 072 * to obtain an object that implements just this interface. 073 */ 074 String CC_ONLY_PROVIDER_CLASS = 075 "com.ibm.rational.stp.client.internal.cc.CcOnlyProviderImpl"; 076 077 /** 078 * An extension of ProviderFactory.Callback that client call-backs can 079 * return to provide a Primary Group or Group List for a ClearCase login 080 */ 081 public interface CcAuthentication extends Authentication { 082 083 /** 084 * <p>ClearCase checks the user's "primary group" to determine whether 085 * the user can peform certain operations in a given VOB, such as 086 * creating a new CC element. 087 * </p> 088 * <p>On Windows operating systems, the user's primary group cannot be 089 * reliably determined, so it must be set explicitly here. 090 * </p> 091 * <p>On Unix, this setting may be used to override the user's primary 092 * group as specified in the /etc/password file or equivalent. 093 * </p> 094 * @return The primary group name to use performing ClearCase operations, 095 * or <code>null</code> to use the default primary group 096 */ 097 String getPrimaryGroupName(); 098 099 /** 100 * <p>ClearCase checks the user's group list (the list of OS groups 101 * to which the user belongs) to determine whether the user can peform 102 * certain operations in a given VOB. 103 * </p> 104 * <p>If the user belongs to more than 32 groups, in certain situations 105 * ClearCase may ignore some of those groups, causing the operation to 106 * fail unnecessarily. In this case, use this setting to define which 107 * groups (up to 32) ClearCase should use. 108 * </p> 109 * @return The group list to use when performing ClearCase operations, 110 * or empty list to use the default group list 111 */ 112 List<String> getGroupList(); 113 } 114 115 /** 116 * Get the server's default ClearCase registry region. 117 * @param wantedProps list of properties to be returned with registry region proxy 118 * @return proxy for server's default registry region. 119 * @throws WvcmException 120 */ 121 public CcRegistryRegion doGetDefaultCcRegistryRegion(PropertyRequest wantedProps) throws WvcmException; 122 123 /** 124 * <p> 125 * Get the default text mode for web views. This depends on two pieces 126 * of information: the {@link CcExServer#DEFAULT_VOB_LINE_TERM} property 127 * and the client OS. It is defined as follows: 128 * </p> 129 * 130 * <table border="1"> 131 * <tr> 132 * <th>server default VOB line term</th> 133 * <th>client OS</th> 134 * <th>web view default text mode</th> 135 * </tr> 136 * <td>LF (UNIX)</td> 137 * <td>UNIX</td> 138 * <td>{@link TextMode#TRANSPARENT}</td> 139 * </tr> 140 * <tr> 141 * <td>LF (UNIX)</td> 142 * <td>Windows</td> 143 * <td>{@link TextMode#INSERT_CR}</td> 144 * </tr> 145 * <tr> 146 * <td>CR-LF (MSDOS)</td> 147 * <td>UNIX</td> 148 * <td>{@link TextMode#STRIP_CR}</td> 149 * </tr> 150 * <tr> 151 * <td>CR-LF (MSDOS)</td> 152 * <td>Windows</td> 153 * <td>{@link TextMode#TRANSPARENT}</td> 154 * </tr> 155 * <tr> 156 * <td>No default set</td> 157 * <td>Both UNIX and Windows</td> 158 * <td>{@link TextMode#TRANSPARENT}</td> 159 * </tr> 160 * </table> 161 * 162 * @return enumeration representing the view's default text mode 163 * @throws WvcmException 164 */ 165 public TextMode doGetDefaultViewTextMode() throws WvcmException; 166 167 /** 168 * Get the list of web views belonging to the current user, and whose 169 * file areas reside on the local machine. 170 * @param wantedProps list of properties to retrieve for each web view 171 * proxy. 172 * @return list of local web views as a list of CcView proxies 173 * @throws WvcmException 174 */ 175 public ResourceList<CcView> getClientViewList(PropertyRequest wantedProps) 176 throws WvcmException; 177 178 /** 179 * Create a proxy for a ClearCase UCM activity. 180 * @param location Location for UCM activity. 181 * @return UCM activity proxy. 182 */ 183 public CcActivity ccActivity(StpLocation location); 184 185 /** 186 * Create a proxy for a ClearCase UCM baseline. 187 * @param location Location for UCM baseline. 188 * @return UCM baseline proxy. 189 */ 190 public CcBaseline ccBaseline(StpLocation location); 191 192 /** 193 * Create a proxy for a ClearCase UCM component. 194 * @param location Location for UCM component. 195 * @return UCM component proxy. 196 */ 197 public CcComponent ccComponent(StpLocation location); 198 199 /** 200 * Create a proxy for a ClearCase UCM project. 201 * @param location Location for UCM project. 202 * @return UCM project proxy. 203 */ 204 public CcProject ccProject(StpLocation location); 205 206 /** 207 * Create a proxy for a ClearCase UCM project folder. 208 * @param location Location for UCM project folder. 209 * @return UCM project folder proxy. 210 */ 211 public CcProjectFolder ccProjectFolder(StpLocation location); 212 213 /** 214 * Create a proxy for a ClearCase UCM stream. 215 * @param location Location for UCM stream. 216 * @return UCM stream proxy. 217 */ 218 public CcStream ccStream(StpLocation location); 219 220 /** 221 * Construct a proxy for the CcDirectory (directory in a ClearCase view) 222 * specified by the given location. 223 * @param loc the location of the directory 224 * @return a new CcDirectory proxy for a directory at this Location. 225 */ 226 public CcDirectory ccDirectory(StpLocation loc); 227 228 /** 229 * Construct a proxy for the CcFile (file in a ClearCase view) 230 * specified by the given location. 231 * @param loc the location of the file. 232 * @return a new CcFile proxy for a file at this Location. 233 */ 234 public CcFile ccFile(StpLocation loc); 235 236 /** 237 * Construct a directory version proxy for the given location. 238 * @param loc the location of the directory version. 239 * @return a new proxy for a directory version at this Location. 240 */ 241 public CcDirectoryVersion ccDirectoryVersion(StpLocation loc); 242 243 /** 244 * Construct a version proxy for the given location. 245 * @param loc the location of the version. 246 * @return a new proxy for a version at this Location. 247 */ 248 public CcVersion ccVersion(StpLocation loc); 249 250 /** 251 * Construct a element proxy for the given location. 252 * @param loc the location of the element. 253 * @return a new proxy for a element at this Location. 254 */ 255 public CcElement ccElement(StpLocation loc); 256 257 /** 258 * Construct a registry region proxy for the given location. 259 * @param loc the location of the registry region 260 * @return a new proxy for the registry region at this location 261 */ 262 public CcRegistryRegion ccRegistryRegion(StpLocation loc); 263 264 /** 265 * Construct a VOB proxy for the given location. 266 * @param loc the location of the VOB. 267 * @return a new proxy for a VOB at this Location. 268 */ 269 public CcVob ccVob(StpLocation loc); 270 271 /** 272 * Construct a VOB tag proxy for the given location. 273 * @param loc the location of the VOB tag. 274 * @return a new proxy for a VOB tag at this Location. 275 */ 276 public CcVobTag ccVobTag(StpLocation loc); 277 278 /** 279 * Construct a view proxy for the given location. 280 * @param loc the location of the view. 281 * @return a new proxy for a view at this Location. 282 */ 283 public CcView ccView(StpLocation loc); 284 285 /** 286 * Construct a view tag proxy for the given location. 287 * @param loc the location of the view tag. 288 * @return a new proxy for a view tag at this Location. 289 */ 290 public CcViewTag ccViewTag(StpLocation loc); 291 292 /** 293 * Construct a attribute type proxy for the given location. 294 * @param loc the location of the attribute type. 295 * @return a new proxy for a attribute type at this Location. 296 */ 297 public CcAttributeType ccAttributeType(StpLocation loc); 298 299 /** 300 * Construct a branch type proxy for the given location. 301 * @param loc the location of the branch type. 302 * @return a new proxy for a branch type at this Location. 303 */ 304 public CcBranchType ccBranchType(StpLocation loc); 305 306 /** 307 * Construct a element type proxy for the given location. 308 * @param loc the location of the element type. 309 * @return a new proxy for a element type at this Location. 310 */ 311 public CcElementType ccElementType(StpLocation loc); 312 313 /** 314 * Construct a hyperlink type proxy for the given location. 315 * @param loc the location of the hyperlink type. 316 * @return a new proxy for a hyperlink type at this Location. 317 */ 318 public CcHyperlinkType ccHyperlinkType(StpLocation loc); 319 320 /** 321 * Construct a label type proxy for the given location. 322 * @param loc the location of the label type. 323 * @return a new proxy for a label type at this Location. 324 */ 325 public CcLabelType ccLabelType(StpLocation loc); 326 327 /** 328 * Construct an empty CcLockInfo object for using 329 * as a property to set on a CcVobResource. 330 * @return a new lock information object 331 */ 332 public CcLockInfo CcLockInfo(); 333 334 /** 335 * Construct a replica proxy for the given location. 336 * @param loc the location of the replica. 337 * @return a new proxy for a replica at this Location. 338 */ 339 public CcReplica ccReplica(StpLocation loc); 340 341 /** 342 * Construct a symbolic link proxy for the given location. 343 * @param loc the location of the symbolic link. 344 * @return a new proxy for a symbolic link at this Location. 345 */ 346 public CcSymlink ccSymlink(StpLocation loc); 347 348 /** 349 * Construct a trigger type proxy for the given location. 350 * @param loc the location of the trigger type. 351 * @return a new proxy for a trigger type at this Location. 352 */ 353 public CcTriggerType ccTriggerType(StpLocation loc); 354 355 /** 356 * Register a callback to process ClearPrompt interaction requests. 357 * @param callback callback 358 */ 359 public void 360 registerClearPromptCallback(CcClearPromptCallback callback); 361 362 /** 363 * Register a callback to handle a FileAreaLockedException. 364 * @param callback The new callback 365 * @return The previous callback 366 */ 367 public CcFileAreaLockedCallback registerCcFileAreaLockedCallback( 368 CcFileAreaLockedCallback callback) throws WvcmException; 369 370 /** 371 * Register a callback to handling manual merges. 372 * @param callback The new callback 373 * @return The previous callback 374 */ 375 public CcMergeHandlingCallback registerMergeHandlingCallback( 376 CcMergeHandlingCallback callback) throws WvcmException; 377 378 /** 379 * Register a callback to handle state transitions of ClearQuest records. 380 * The callback is invoked if the transition involves required 381 * fields that the user needs to provide. 382 * @param callback the callback we're registering 383 * @return the previous registered callback 384 */ 385 public CqRecordAutoTransitionCallback registerCqRecordAutoTransitionCallback( 386 CqRecordAutoTransitionCallback callback) throws WvcmException; 387 388 /** 389 * Handle the manual merge using the provider's callback. 390 * @return CheckinMergeHandling specifying how the checkin 391 * is to be handled after the merge 392 */ 393 public CheckinMergeHandling handleManualMerge( 394 CcFile file, 395 CcVersion fromVersion, 396 CcVersion toVersion) throws WvcmException; 397 }