001 /* 002 * file CcView.java 003 * 004 * Licensed Materials - Property of IBM 005 * Restricted Materials of IBM 006 * 007 * com.ibm.rational.wvcm.stp.cc.CcView 008 * 009 * (C) Copyright IBM Corporation 2004, 2011. 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 static com.ibm.rational.wvcm.stpex.StpExBase.PROPERTY_NAMESPACE; 017 018 import java.io.File; 019 import java.util.List; 020 import java.util.Map; 021 022 import javax.wvcm.Feedback; 023 import javax.wvcm.Resource; 024 import javax.wvcm.ResourceList; 025 import javax.wvcm.Stream; 026 import javax.wvcm.WvcmException; 027 import javax.wvcm.PropertyNameList.PropertyName; 028 029 import com.ibm.rational.wvcm.stp.StpActivity; 030 import com.ibm.rational.wvcm.stp.cc.CcFileAreaLockedCallback.CcFileAreaLockInfo; 031 import com.ibm.rational.wvcm.stp.cc.CcViewTag.ViewType; 032 import com.ibm.rational.wvcm.stpex.StpExEnumeration; 033 034 /** 035 * <p>A proxy for a ClearCase view. ClearCase "view" and WVCM "workspace" 036 * are equivalent terms for the same type of resource. 037 * </p> 038 * <p>As of the ClearCase 8.0 release, CM API supports web views and dynamic 039 * views. ClearCase snapshot views are not currently supported. 040 * </p> 041 */ 042 public interface CcView 043 extends CcDirectory, javax.wvcm.Workspace 044 { 045 /** Values for view text mode */ 046 enum TextMode implements StpExEnumeration { 047 048 /** 049 * A transparent interop text mode. The line terminator for text files 050 * is a single <code>NL</code> character. The view does not transform 051 * text file line terminators in any way. This is the default text mode 052 * if no value is set upon view creation. 053 */ 054 TRANSPARENT("transparent"), 055 056 /** 057 * An insert_cr interop text mode. The view converts <code>NL</code> line 058 * terminators to the <code>CR NL</code> sequence when reading from a VOB, 059 * and <code>CR NL</code> line terminators to single <code>NL</code> 060 * characters when writing to the VOB. 061 */ 062 INSERT_CR("insert_cr"), 063 064 /** 065 * An nl_to_cr interop text mode. The view converts <code>NL</code> line 066 * terminators to <code>CR</code> characters when reading from a VOB, and 067 * <code>CR</code> line terminators to single <code>NL</code> characters 068 * wehn writing to the VOB. 069 */ 070 NL_TO_CR("cvt_nl_to_cr"), 071 072 /** 073 * A strip_cr interop text mode. The view converts <code>CR NL</code> line 074 * terminators to <code>NL</code> when reading from a VOB, and <code>NL</code> 075 * line terminators back to the <code>CR NL</code> sequence when writing to the VOB. 076 */ 077 STRIP_CR("strip_cr"); 078 079 private String m_name; 080 081 private TextMode(String name) { m_name = name; } 082 083 /* (non-Javadoc) 084 * @see java.lang.Object#toString() 085 */ 086 public String toString() { return m_name; } 087 } 088 089 /** Flags for the <code>doSynchronizeFileAreaDb</code> method */ 090 enum SynchronizeFileAreaDbFlag implements StpExEnumeration { 091 092 /** 093 * Synchronize the web view's client-side vob database with the 094 * correct information from the server. Specifying this flag 095 * requires a server connection. 096 */ 097 FILE_AREA_VOB_DB("file-area-vob-db"), 098 099 /** 100 * Synchronize the web view's client-side modified files database 101 * so that it correctly reflects files that have been modified 102 * as a result of checkouts or hijacks. Specifying this flag 103 * does <i>not</i> require a server connection. 104 */ 105 FILE_AREA_MODIFIED_FILES_DB("file-area-modified-files-db"); 106 107 private String m_name; 108 109 private SynchronizeFileAreaDbFlag(String name) { m_name = name; } 110 111 /* (non-Javadoc) 112 * @see java.lang.Object#toString() 113 */ 114 public String toString() { return m_name; } 115 } 116 117 /** Flags for the doFindMergeCandidates methods */ 118 enum FindmergeFlag { 119 120 /** 121 * Just search the directory itself when searching for merge candidates, 122 * do not search the child elements 123 */ 124 DIRECTORY_ONLY, 125 126 /** 127 * Follow VOB symbolic links when searching for merge candidates 128 */ 129 FOLLOW_SYMLINKS 130 } 131 132 /** 133 *<p> 134 * Binds a CcActivity proxy to a CqRecord proxy without making the 135 * activity the current one for this view. 136 * </p> 137 * <p> 138 * NOTE: Unlike most API methods, the optional property request will be executed 139 * on the returned StpActivity, not the CcView proxy on which the method 140 * was invoked. 141 * </p> 142 * 143 * <code>act</code> can either be a CcActivity proxy or a CqRecord proxy. 144 * <p> 145 * If <code>act</code> is a CcActivity proxy and the associated project is 146 * not CQ enabled, this operation simply executes the provided property 147 * request -- if any. If the project is CQ enabled, it additionally validates 148 * that the bound CQ record is in an active state. 149 * </p> 150 * <p> 151 * If <code>act</code> is a CqRecord proxy, this operation is more 152 * involved. First, <code>act</code> is automatically transitioned to an 153 * active state. If this transition involves required fields, the caller 154 * may be prompted to provide values for those fields. Next a CcActivity 155 * resource is created in this view's stream and is bound to 156 * <code>act</code>. 157 * </p> 158 * @param act the activity to work on - either a CqRecord or CcActivity 159 * @param feedback optional property request 160 * @return new proxy for the StpActivity, with requested properties 161 * @see javax.wvcm.Workspace#CURRENT_ACTIVITY 162 * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CC_ACTIVITY 163 * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CQ_RECORD 164 */ 165 public StpActivity doBindActivity(StpActivity act, Feedback feedback) throws WvcmException; 166 167 /** 168 * <p>Create a new ClearCase web view based on this CcView proxy. 169 * </p> 170 * <p> 171 * Preconditions: 172 * </p> 173 * <ul> 174 * <li>This proxy must have a file-based location representing the desired 175 * path of the root directory of the file area on the local machine. 176 * The directory must not yet exist.</li> 177 * <li>The location's leaf name (the directory name) will be used as 178 * the view tag of the new view. A view having that view-tag must not 179 * already exist.</li> 180 * <li>To create a view associated with a UCM stream, specify that stream 181 * by setting this view proxy's STREAM property.</li> 182 * </ul> 183 * <p> 184 * Postconditions: 185 * </p> 186 * <ul> 187 * <li>A ClearCase web view is created, with the view tag 188 * and local file area as described above.</li> 189 * <li>If the view proxy's STREAM property was set, the view will be 190 * associated with that stream.</li> 191 * <li>If the view proxy's VIEW_TAG_STRING property was set, the view will 192 * be assigned that tag. Otherwise, the file area's root directory name 193 * will be used.</li> 194 * </ul> 195 * @throws WvcmException if the preconditions are not met, or if there is an 196 * error creating the view. 197 */ 198 public CcView doCreateCcWebView(Feedback feedback) throws WvcmException; 199 200 /** 201 * <p>Create a new ClearCase dynamic view based on this CcView proxy. 202 * </p> 203 * <p> 204 * Preconditions: 205 * </p> 206 * <ul> 207 * <li>The view proxy's VIEW_TAG_STRING property must be set 208 * to the desired view tag of the new view. A view having that view 209 * tag must not already exist.</li> 210 * <li>The view proxy's VIEW_STORAGE_PATH property must be set 211 * to the desired storage path for the new view unless a storage location 212 * is being used. 213 * <li>If a storage location is desired, rather than an explicit path. 214 * then the VIEW_STORAGE_LOCATION property must be set to that storage 215 * location. 216 * <li>To create a view associated with a UCM stream, specify that stream 217 * by setting this view proxy's STREAM property.</li> 218 * <li>The proxy's location is ignored for creation.</li> 219 * </ul> 220 * <p> 221 * Postconditions: 222 * </p> 223 * <ul> 224 * <li>A ClearCase dynamic view is created, with the view tag 225 * and storage path as described above.</li> 226 * <li>If the view proxy's STREAM property was set, the view will be 227 * associated with that stream.</li> 228 * 229 * </ul> 230 * @throws WvcmException if the preconditions are not met, or if there is an 231 * error creating the view. 232 */ 233 public CcView doCreateCcDynamicView(Feedback feedback) throws WvcmException; 234 235 /** 236 * <p>The rebase command reconfigures a stream by adding, dropping, or 237 * replacing one or more of the stream's foundation baselines. The file and 238 * directory versions selected by those new baselines (and thus their 239 * associated activities) then become visible in the stream's views. 240 * </p> 241 * <p> 242 * Preconditions: 243 * </p> 244 * <ul> 245 * <li>The baseline is not from the stream that is being rebased.</li> 246 * <li>The baseline is labeled. Baselines created by deliver operations are 247 * not labeled by default.</li> 248 * <li>Another rebase operation is not in progress.</li> 249 * <li>A deliver operation is not in progress.</li> 250 * </ul> 251 * Additional rules apply to integration streams and development 252 * streams in selecting a baseline: 253 * <ul> 254 * <li>An integration stream can be rebased only to a baseline created in 255 * another project or to an imported or initial baseline of that project.</li> 256 * <li>A development stream can be rebased to a baseline that meets one 257 * of the following criteria: 258 * <ul> 259 * <li>The baseline was created in its parent stream.</li> 260 * <li>The baseline is in its parent stream's foundation.</li> 261 * <li>The baseline is an ancestor of the development stream's parent 262 * foundation baseline and created on the same stream as the parent's 263 * foundation baseline.</li> 264 * <li>The baseline was created in a stream other than its parent 265 * stream and is contained in its parent stream. A baseline is 266 * contained in another baseline if all changes in the first baseline 267 * are included in the second baseline.</li> 268 * </ul> 269 * </li> 270 * </ul> 271 * <p> 272 * Postconditions: 273 * </p> 274 * <ul> 275 * <li>A rebase is started on the specified view. Use one of the other 276 * methods to resume, complete, or cancel the rebase.</li> 277 * <li>The activity is set to the rebase activity.</li> 278 * <li>If <code>baselineList</code> is specified and those baselines meet 279 * the preconditions above, the rebase will be started to those baselines.</li> 280 * <li>If <code>baselineList</code> is not specified, the rebase will be 281 * started to the source stream's recommended baselines.</li> 282 * <li>If <code>doAutoMerge</code> is true, elements needing merge will 283 * attempt to automatically merge on the server.</li> 284 * </ul> 285 * 286 * @param baselineList optional list of baselines to include 287 * @param doAutoMerge tells the rebase operation to attempt auto merges 288 * @param integrationListener optional listener to get feedback on operation 289 * @param updateListener optional listener to get feedback on view update 290 * changes 291 * @param feedback optional property request 292 * @return new proxy to the view with requested properties 293 * 294 * @throws WvcmException if there is an error starting the rebase operation 295 */ 296 public CcView doStartRebase( 297 List<CcBaseline> baselineList, 298 boolean doAutoMerge, 299 CcListener integrationListener, 300 CcListener updateListener, 301 Feedback feedback) throws WvcmException; 302 303 /** 304 * <p> 305 * Restarts a rebase operation from the point at which it has been 306 * suspended. A rebase operation can be interrupted or when it encounters an 307 * external error or condition that requires more information. However, you 308 * cannot resume a rebase operation that has been successfully halted with 309 * the <code>CcView.doCancelRebase()</code> operation. 310 * </p> 311 * 312 * @param doAutoMerge tells the rebase operation to attempt auto merges 313 * @param integrationListener optional listener to get feedback on operation 314 * @param updateListener optional listener to get feedback on view update 315 * changes 316 * @param feedback optional property request 317 * @return new proxy to the view with requested properties 318 * @throws WvcmException if there is an error resuming the rebase operation 319 */ 320 public CcView doResumeRebase( 321 boolean doAutoMerge, 322 CcListener integrationListener, 323 CcListener updateListener, 324 Feedback feedback) throws WvcmException; 325 326 327 /** 328 * <p> 329 * Completes a rebase operation taking the following actions: 330 * </p> 331 * <ul> 332 * <li>Resumes the rebase operation</li> 333 * <li>Verifies that needed merges were made</li> 334 * <li>Checks in any versions that are checked out</li> 335 * <li>Records changes in the change set for the rebase activity</li> 336 * </ul> 337 * 338 * @param integrationListener optional listener to get feedback on operation 339 * @param updateListener optional listener to get feedback on view update 340 * changes 341 * @param feedback optional property request 342 * @return new proxy to the view with requested properties 343 * @throws WvcmException if there is an error completing the 344 * rebase operation 345 */ 346 public CcView doCompleteRebase( 347 CcListener integrationListener, 348 CcListener updateListener, 349 Feedback feedback) throws WvcmException; 350 351 /** 352 * <p> 353 * Cancels a rebase operation and restores the stream's previous 354 * configuration. Deletes the integration activity and any 355 * versions created by the rebase operation that are not yet checked in. 356 * </p> 357 * <p> 358 * Preconditions: 359 * </p> 360 * <ul> 361 * <li>None of the versions created in the integration activity can be 362 * checked in.</li> 363 * </ul> 364 * 365 * @param integrationListener optional listener to get feedback on operation 366 * @param updateListener optional listener to get feedback on view update 367 * changes 368 * @param feedback optional property request 369 * @return new proxy to the view with requested properties 370 * @throws WvcmException if there is an error canceling the 371 * rebase operation 372 */ 373 public CcView doCancelRebase( 374 CcListener integrationListener, 375 CcListener updateListener, 376 Feedback feedback) throws WvcmException; 377 378 /** 379 * <p> 380 * The deliver command lets you deliver work from a source stream to a 381 * target stream in the same or a different project. This method delivers 382 * all activities in the stream that have changed since the last deliver 383 * operation from the stream. The target stream is determined by the 384 * <code>CcView</code> integration view passed to this method. 385 * </p> 386 * <p> 387 * Preconditions: 388 * </p> 389 * <ul> 390 * <li>A deliver operation is not currently in progress.</li> 391 * <li>A rebase operation is not currently in progress.</li> 392 * <li>The checkout states must match the project's UCM policies.</li> 393 * <li>Delivering to a non-default target stream is subject to 394 * restrictions. Refer to the ClearCase cleartool deliver man page 395 * for details.</li> 396 * </ul> 397 * <p> 398 * Postconditions: 399 * </p> 400 * <ul> 401 * <li>A deliver is started on the specified view. Use one of the other 402 * deliver methods to resume, complete, or cancel the deliver.</li> 403 * <li>The deliver operation creates a UCM integration activity and sets 404 * it as the current activity in the integration view. This activity 405 * records the change set for the deliver operation.</li> 406 * </ul> 407 * 408 * @param integrationView the target view to deliver to 409 * @param doAutoMerge tells the deliver operation to attempt auto merges 410 * @param integrationListener optional listener to get feedback on operation 411 * @param feedback optional property request 412 * @return new proxy to the view with requested properties 413 * @throws WvcmException if there is an error starting the deliver operation 414 */ 415 public CcView doStartDeliver( 416 CcView integrationView, 417 boolean doAutoMerge, 418 CcListener integrationListener, 419 Feedback feedback) throws WvcmException; 420 421 /** 422 * <p> 423 * Deliver the specified baselines from the source stream associated with 424 * this view to the target stream associated with the specified integration 425 * view. A development stream can deliver activities or baselines, but an 426 * integration stream can deliver only baselines. Refer to the ClearCase 427 * cleartool deliver man page for more details. 428 * </p> 429 * <p> 430 * Preconditions: 431 * </p> 432 * <ul> 433 * <li>A deliver operation is not currently in progress.</li> 434 * <li>A rebase operation is not currently in progress.</li> 435 * <li>The checkout states must match the project's UCM policies.</li> 436 * <li>Delivering to a non-default target stream is subject to 437 * restrictions. Refer to the ClearCase cleartool deliver man page 438 * for details.</li> 439 * </ul> 440 * <p> 441 * Postconditions: 442 * </p> 443 * <ul> 444 * <li>A deliver is started on the specified view. Use one of the other 445 * deliver methods to resume, complete, or cancel the deliver.</li> 446 * <li>The deliver operation creates a UCM integration activity and sets 447 * it as the current activity in the integration view. This activity 448 * records the change set for the deliver operation.</li> 449 * </ul> 450 * 451 * @param integrationView the target view to deliver to 452 * @param baselineList list of baselines to deliver 453 * @param doAutoMerge tells the deliver operation to attempt auto merges 454 * @param integrationListener optional listener to get feedback on operation 455 * @param feedback optional property request 456 * @return new proxy to the view with requested properties 457 * @throws WvcmException if there is an error starting the deliver operation 458 */ 459 public CcView doStartDeliverBaselines( 460 CcView integrationView, 461 ResourceList<CcBaseline> baselineList, 462 boolean doAutoMerge, 463 CcListener integrationListener, 464 Feedback feedback) throws WvcmException; 465 466 /** 467 * <p> 468 * Deliver the specified activities from the source stream associated with 469 * this view to the target stream associated with the specified integration 470 * view. The list of activities must be self-consistent: the 471 * activities specified must not depend on the inclusion of any unspecified 472 * activities. Refer to the ClearCase cleartool deliver man page for more 473 * details. 474 * </p> 475 * <p> 476 * Preconditions: 477 * </p> 478 * <ul> 479 * <li>A deliver operation is not currently in progress.</li> 480 * <li>A rebase operation is not currently in progress.</li> 481 * <li>The list of activities must be self-consistent.</li> 482 * <li>The checkout states must match the project's UCM policies.</li> 483 * <li>Delivering to a non-default target stream is subject to 484 * restrictions. Refer to the ClearCase cleartool deliver man page 485 * for details.</li> 486 * </ul> 487 * <p> 488 * Postconditions: 489 * </p> 490 * <ul> 491 * <li>A deliver is started on the specified view. Use one of the other 492 * deliver methods to resume, complete, or cancel the deliver.</li> 493 * <li>The deliver operation creates a UCM integration activity and sets 494 * it as the current activity in the integration view. This activity 495 * records the change set for the deliver operation.</li> 496 * </ul> 497 * 498 * @param integrationView the target view to deliver to 499 * @param activityList optional list of activities to deliver 500 * @param doAutoMerge tells the deliver operation to attempt auto merges 501 * @param integrationListener optional listener to get feedback on operation 502 * @param feedback optional property request 503 * @return new proxy to the view with requested properties 504 * @throws WvcmException if there is an error starting the deliver operation 505 * 506 */ 507 public CcView doStartDeliverActivities( 508 CcView integrationView, 509 ResourceList<CcActivity> activityList, 510 boolean doAutoMerge, 511 CcListener integrationListener, 512 Feedback feedback) throws WvcmException; 513 514 /** 515 * <p> 516 * In a MultiSite configuration where a team of developers works at a 517 * remote site, the project's integration stream may be mastered at a 518 * different replica than the developers' development streams. In this 519 * situation, the developers cannot complete deliver operations to the 520 * integration stream. When such a stream mastership situation is 521 * detected, the deliver operation starts but no versions are merged. 522 * Instead, the deliver operation is left in a posted state. You must 523 * periodically find and complete posted deliver operations. The post 524 * deliver command lets you do such the delivery work from a source 525 * stream to a target stream in the same or a different project. This 526 * method delivers all activities in the stream that have changed since 527 * the last deliver operation from the stream. The target stream is 528 * determined by the <code>Stream</code> targetStream passed to this 529 * method. 530 * </p> 531 * <p> 532 * Preconditions: 533 * </p> 534 * <ul> 535 * <li>A deliver operation is not currently in progress.</li> 536 * <li>A rebase operation is not currently in progress.</li> 537 * <li>The checkout states must match the project's UCM policies.</li> 538 * <li>Delivering to a non-default target stream is subject to 539 * restrictions. Refer to the ClearCase cleartool deliver man page 540 * for details.</li> 541 * </ul> 542 * <p> 543 * Postconditions: 544 * </p> 545 * <ul> 546 * <li>A deliver is started but no versions are merged. Instead, the 547 * deliver operation is left in a posted state. You must periodically find 548 * and complete posted deliver operations.</li> 549 * </ul> 550 * 551 * @param targetStream the target stream to deliver to 552 * @param integrationListener optional listener to get feedback on operation 553 * @param feedback optional property request 554 * @return new proxy to the view with requested properties 555 * @throws WvcmException if there is an error starting the deliver operation 556 */ 557 public CcView doStartPostDeliver( 558 Stream targetStream, 559 CcListener integrationListener, 560 Feedback feedback) throws WvcmException; 561 562 /** 563 * <p> 564 * Post deliver the specified baselines from the source stream associated 565 * with this view to the target stream. A development stream can deliver 566 * activities or baselines, but an integration stream can deliver only 567 * baselines. Refer to the ClearCase cleartool deliver man page for more 568 * details. 569 * </p> 570 * <p> 571 * Preconditions: 572 * </p> 573 * <ul> 574 * <li>A deliver operation is not currently in progress.</li> 575 * <li>A rebase operation is not currently in progress.</li> 576 * <li>The checkout states must match the project's UCM policies.</li> 577 * <li>Delivering to a non-default target stream is subject to 578 * restrictions. Refer to the ClearCase cleartool deliver man page 579 * for details.</li> 580 * </ul> 581 * <p> 582 * Postconditions: 583 * </p> 584 * <ul> 585 * <li>A deliver is started but no versions are merged. Instead, the 586 * deliver operation is left in a posted state. You must periodically find 587 * and complete posted deliver operations.</li> 588 * </ul> 589 * 590 * @param targetStream the target stream to deliver to 591 * @param baselineList list of baselines to deliver 592 * @param integrationListener optional listener to get feedback on operation 593 * @param feedback optional property request 594 * @return new proxy to the view with requested properties 595 * @throws WvcmException if there is an error starting the deliver operation 596 */ 597 public CcView doStartPostDeliverBaselines( 598 Stream targetStream, 599 ResourceList<CcBaseline> baselineList, 600 CcListener integrationListener, 601 Feedback feedback) throws WvcmException; 602 603 /** 604 * <p> 605 * Post deliver the specified activities from the source stream associated 606 * with this view to the target stream associated with the specified 607 * integration view. The list of activities must be self-consistent: the 608 * activities specified must not depend on the inclusion of any unspecified 609 * activities. Refer to the ClearCase cleartool deliver man page for more 610 * details. 611 * </p> 612 * <p> 613 * Preconditions: 614 * </p> 615 * <ul> 616 * <li>A deliver operation is not currently in progress.</li> 617 * <li>A rebase operation is not currently in progress.</li> 618 * <li>The list of activities must be self-consistent.</li> 619 * <li>The checkout states must match the project's UCM policies.</li> 620 * <li>Delivering to a non-default target stream is subject to 621 * restrictions. Refer to the ClearCase cleartool deliver man page 622 * for details.</li> 623 * </ul> 624 * <p> 625 * Postconditions: 626 * </p> 627 * <ul> 628 * <li>A deliver is started but no versions are merged. Instead, the 629 * deliver operation is left in a posted state. You must periodically find 630 * and complete posted deliver operations.</li> 631 * </ul> 632 * 633 * @param targetStream the target stream to deliver to 634 * @param activityList optional list of activities to deliver 635 * @param integrationListener optional listener to get feedback on operation 636 * @param feedback optional property request 637 * @return new proxy to the view with requested properties 638 * @throws WvcmException if there is an error starting the deliver operation 639 * 640 */ 641 public CcView doStartPostDeliverActivities( 642 Stream targetStream, 643 ResourceList<CcActivity> activityList, 644 CcListener integrationListener, 645 Feedback feedback) throws WvcmException; 646 647 /** 648 * <p> 649 * Resumes a deliver operation from the point at which it was suspended. 650 * </p> 651 * 652 * @param integrationView the target view to deliver to 653 * @param integrationListener optional listener to get feedback on operation 654 * @param feedback optional property request 655 * @return new proxy to the view with requested properties 656 * @throws WvcmException if there is an error resuming the deliver operation 657 */ 658 public CcView doResumeDeliver( 659 CcView integrationView, 660 CcListener integrationListener, 661 Feedback feedback) throws WvcmException; 662 663 /** 664 * <p> 665 * Resets a deliver operation in progress to use the new integration view 666 * </p> 667 * 668 * @param integrationView the new integration view 669 * @param integrationListener optional listener to get feedback on operation 670 * @param feedback optional property request 671 * @return new proxy to the view with requested properties 672 * @throws WvcmException if there is an error resuming the deliver operation 673 */ 674 public CcView doResetDeliver( 675 CcView integrationView, 676 CcListener integrationListener, 677 Feedback feedback) throws WvcmException; 678 679 /** 680 * <p> 681 * Complete in-progress deliver operation taking the following actions: 682 * </p> 683 * <ul> 684 * <li>Verify that all versions in the integration view have been 685 * successfully merged and that merge conflicts have been resolved.</li> 686 * <li>Check in resulting versions in the integration view.</li> 687 * <li>Unset the integration activity in the integration view.</li> 688 * </ul> 689 * <p> 690 * If unresolved merge conflicts exist, the deliver operation is suspended. 691 * </p> 692 * 693 * @param integrationView the target view to deliver to 694 * @param integrationListener optional listener to get feedback on operation 695 * @param mergeElements optional list of client maintained 696 * <code>CcMergeElement</code>s to allow the operation to cancel any 697 * checkouts 698 * @param feedback optional property request 699 * @return new proxy to the view with requested properties 700 * @throws WvcmException if there is an error completing the deliver 701 * operation 702 */ 703 public CcView doCompleteDeliver( 704 CcView integrationView, 705 CcListener integrationListener, 706 CcMergeElement[] mergeElements, 707 Feedback feedback) throws WvcmException; 708 709 /** 710 * <p> 711 * Halt a deliver operation in progress, returning the source and 712 * destination streams to their states before the deliver operation began. 713 * Note: This method cannot cancel a deliver operation after the completion 714 * phase has begun. See ClearCase cleartool deliver man page for details. 715 * </p> 716 * 717 * @param integrationView the target view to deliver to 718 * @param integrationListener optional listener to get feedback on operation 719 * @param mergeElements optional list of client maintained 720 * <code>CcMergeElement</code>s to allow the operation to cancel any 721 * checkouts 722 * @param feedback optional property request 723 * @return new proxy to the view with requested properties 724 * @throws WvcmException if there is an error cancelling the deliver 725 * operation 726 */ 727 public CcView doCancelDeliver( 728 CcView integrationView, 729 CcListener integrationListener, 730 CcMergeElement[] mergeElements, 731 Feedback feedback) throws WvcmException; 732 733 /** 734 * <p> 735 * Runs findmerge command in this view. Searches the specified elements for merge candidates using 736 * the specified VOB resource as a search criteria. The VOB resource can be either a branch type, or 737 * a label type, or a version. Flags further define the search criteria. 738 * Found merge candidates are returned through the listener. 739 * </p> 740 * 741 * @param listener optional listener to get feedback on operation. 742 * Note: although a listener is not required, that is the only way for a consumer of this method 743 * to receive the results of the findmerge operation. 744 * @param flags array of flags which specify the behavior of the operation 745 * @param fromVobResource VOB resource to use as a search criteria; Legal argument types include 746 * CcBranchType, CcLabelType and CcVersion 747 * @param feedback optional property request 748 * @return new proxy to the view with requested properties 749 * @throws WvcmException if there is an error completing the findmerge operation 750 * 751 * @return new proxy to the view with requested properties 752 * @throws WvcmException 753 */ 754 public CcView doFindMergeCandidates( 755 CcFindmergeListener listener, 756 FindmergeFlag []flags, 757 CcVobResource fromVobResource, 758 List<CcFile> elements, 759 Feedback feedback) throws WvcmException; 760 761 /** 762 * <p> 763 * Runs findmerge command in this view. The specified activities are used as the search criteria. 764 * Flags further define the search criteria. Found merge candidates are returned through the listener. 765 * 766 * </p> 767 * 768 * @param listener optional listener to get feedback on operation. 769 * Note: although a listener is not required, that is the only way for a consumer of this method 770 * to receive the results of the findmerge operation. 771 * @param flags array of flags which specify the behavior of the operation 772 * @param activities list of activities whose change sets to search for merge candidates 773 * @param feedback optional property request 774 * @return new proxy to the view with requested properties 775 * @throws WvcmException if there is an error completing the findmerge operation 776 * 777 */ 778 public CcView doFindMergeCandidatesFromChangeSets( 779 CcFindmergeListener listener, 780 FindmergeFlag []flags, 781 List<CcActivity> activities, 782 Feedback feedback) throws WvcmException; 783 784 /** 785 * <p>Upgrade this web view's file area.</p> 786 * <p>Preconditions:</p> 787 * <ul> 788 * <li>This web view's file area schema version must be older than the 789 * version supported by the currently running CM API file area management 790 * code. 791 * </li> 792 * </ul> 793 * <p>Postconditions:</p> 794 * <ul> 795 * <li>This web view's file area schema will be upgraded to the currently 796 * supported version.</li> 797 * </ul> 798 * <p>This operation has no effect on non-web views, and on web views that 799 * are already compatible. 800 * </p> 801 * @throws WvcmException if the preconditions are not met, or if there is an 802 * error upgrading the file area. 803 */ 804 public CcView doUpgradeFileArea(Feedback feedback) throws WvcmException; 805 806 /** 807 * Work on the specified activity in this CC view. 808 * <code>act</code> can either be a CcActivity proxy or a CqRecord proxy. 809 * <p> 810 * If <code>act</code> is a CcActivity proxy and the associated project is 811 * not CQ enabled, this operation simply makes it the current activity 812 * in this view. If the project is CQ enabled, it additionally validates 813 * that the bound CQ record is in an active state. 814 * </p> 815 * <p> 816 * If <code>act</code> is a CqRecord proxy, this operation is more 817 * involved. First, <code>act</code> is automatically transitioned to an 818 * active state. If this transition involves required fields, the caller 819 * may be prompted to provide values for those fields. Next a CcActivity 820 * resource is created in this view's stream and is bound to 821 * <code>act</code>. Finally, it makes the new CC activity resource the 822 * current activity in this view. 823 * </p> 824 * @param act the activity to work on - either a CqRecord or CcActivity 825 * @param feedback optional property request 826 * @return new proxy for this view, with requested properties 827 * @see javax.wvcm.Workspace#CURRENT_ACTIVITY 828 * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CC_ACTIVITY 829 * @see com.ibm.rational.wvcm.stp.StpActivity#BOUND_CQ_RECORD 830 */ 831 public CcView doWorkOnActivity(StpActivity act, Feedback feedback) throws WvcmException; 832 833 /** 834 * <p> 835 * Transitions the specified activity to the default completed state. 836 * <code>act</code> can either be a CcActivity proxy or a CqRecord proxy. 837 * </p> 838 * <p> 839 * NOTE: Unlike most API methods, the optional property request will be executed 840 * on the returned StpActivity, not the CcView proxy on which the method 841 * was invoked. 842 * </p> 843 * <p>Preconditions:</p> 844 * <ul> 845 * <li><code>act</code> is a bound CqRecord/CcActivity pair in a CQ-enabled 846 * context.</li> 847 * </ul> 848 * <p>Postconditions:</p> 849 * <ul> 850 * <li>If <code>act</code>'s CcActivity has checkouts, the operation is 851 * cancelled and there is no change to the activity.</li> 852 * <li>Transitions <code>act</code>'s CqRecord to the default completed state. 853 * If this transition involves required fields, the caller may be prompted 854 * to provide values for those fields.</li> 855 * <li>Unsets <code>act</code>'s CcActivity from all views' 856 * {@link javax.wvcm.Workspace#CURRENT_ACTIVITY} property.</li> 857 * </ul> 858 * @param act the activity to finish 859 * @param feedback optional property request for the activity 860 * @return new proxy for the activity, with requested properties 861 * @throws WvcmException if the preconditions are not met. 862 */ 863 public StpActivity doFinishActivity(StpActivity act, Feedback feedback) 864 throws WvcmException; 865 866 /** 867 * <p> 868 * Synchronize this web view file area's local databases to accurately reflect the 869 * current state of the file area. The databases available to synchronize are: 870 * </p> 871 * <ul> 872 * <li>VOB database: This contains the loaded vobs in the web view. A server connection 873 * is required to synchronize this database.</li> 874 * <li>Modified files database: This contains the checkouts and hijacks in the web view. 875 * A server connection <i>not</i> required to synchronize this database.</li> 876 * </ul> 877 * @param flags array of flags which specify the databases to synchronize. 878 * @param feedback optional property request for the view 879 * @return A new proxy for this resource, whose properties are specified by feedback. 880 * @throws WvcmException 881 */ 882 public CcView doSynchronizeFileAreaDb(SynchronizeFileAreaDbFlag[] flags, Feedback feedback) 883 throws WvcmException; 884 885 /** 886 * Register this local web view's file area in the local file area registry. 887 * Web views are registered automatically when created, but may need to be 888 * re-registered if the registry is accidentally deleted, etc. 889 */ 890 public void registerFileArea() throws WvcmException; 891 892 /** 893 * Remove this local web view's file area from the local file area registry. 894 * Once removed, this view will no longer show up when listing local views. 895 * @see com.ibm.rational.wvcm.stp.cc.CcProvider#getClientViewList(javax.wvcm.PropertyRequestItem.PropertyRequest) 896 */ 897 public void unregisterFileArea() throws WvcmException; 898 899 /** 900 * If this is a local web view, the URL of the CCRC WAN server where this 901 * web view's view database resides. 902 */ 903 PropertyName<String> SERVER_URL = 904 new PropertyName<String>(PROPERTY_NAMESPACE, "server-url"); 905 906 /** 907 * Get the value of this proxy's {@link #SERVER_URL} property. 908 * @return this view's server URL 909 * @throws WvcmException if this proxy doesn't define a value for this property. 910 */ 911 public String getServerUrl() throws WvcmException; 912 913 /** 914 * Change the URL used to connect to the CCRC WAN server on which this web view resides. 915 * Note: Web views cannot be moved from one CCRC WAN server to another. 916 * Use this method only to change the server URL, not to try to connect to 917 * a different server. 918 * <p> 919 * This may be necessary if, for example: 920 * <ul> 921 * <li>The CCRC WAN server administrator changes the CCRC WAN server's port number</li> 922 * <li>The client needs a secure HTTP connection to the CCRC WAN server: 923 * "https://..." instead of "http://..."</li> 924 * <li>The CCRC WAN server is moved to a different internet subdomain</li> 925 * </ul> 926 * @param updatedUrl the updated URL of this web view's CCRC WAN server 927 * @throws WvcmException 928 */ 929 public void updateServerUrl(String updatedUrl) throws WvcmException; 930 931 /** 932 * This view's uuid as a string. 933 */ 934 PropertyName<String> VIEW_UUID_STRING = 935 new PropertyName<String>(PROPERTY_NAMESPACE, "view-uuid-string"); 936 937 /** 938 * Get the value of this proxy's {@link #VIEW_UUID_STRING} property. 939 * @return this view's uuid 940 * @throws WvcmException if this proxy doesn't define a value for this property. 941 */ 942 public String getViewUuidString() throws WvcmException; 943 944 /** 945 * This view's view tag as a string. 946 */ 947 PropertyName<String> VIEW_TAG_STRING = 948 new PropertyName<String>(PROPERTY_NAMESPACE, "view-tag-string"); 949 950 /** 951 * Get the value of this proxy's {@link #VIEW_TAG_STRING} property. 952 * @return this view's view tag 953 * @throws WvcmException if this proxy doesn't define a value for this property. 954 */ 955 public String getViewTagString() throws WvcmException; 956 957 /** 958 * Set the value of this view's {@link #VIEW_TAG_STRING} property. 959 * This property may only be set at view creation time. 960 * @param viewTag the view tag for the new view 961 */ 962 void setViewTagString(String viewTag); 963 964 /** 965 * This view's view tag as a {@link CcViewTag} resource. 966 */ 967 PropertyName<CcViewTag> VIEW_TAG = 968 new PropertyName<CcViewTag>(PROPERTY_NAMESPACE, "view-tag"); 969 970 /** 971 * Get the value of this proxy's {@link #VIEW_TAG} property. 972 * @return this view's view tag 973 * @throws WvcmException if this proxy doesn't define a value for this property. 974 */ 975 public CcViewTag getViewTag() throws WvcmException; 976 977 /** Kind of view to which this tag refers */ 978 PropertyName<ViewType> VIEW_TYPE = 979 new PropertyName<ViewType>(PROPERTY_NAMESPACE, 980 "view-view-type"); 981 982 /** 983 * Returns the value of this proxy's {@link #VIEW_TYPE} property. 984 * 985 * @return Kind of view this tag refers to. 986 * @throws WvcmException 987 * if this proxy doesn't define a value for this property. 988 */ 989 ViewType getViewType() throws WvcmException; 990 991 /** 992 * Whereas a CcView resource's {@link javax.wvcm.Folder#CHILD_MAP} property 993 * returns the root directories of <i>all</i> VOBs, LOADED_CHILD_MAP only 994 * returns the root directories of VOBs that are partially or fully loaded 995 * in this view (if this is a web view) or mounted (if this is a dynamic view). 996 */ 997 PropertyName<Map<String,Resource>> LOADED_CHILD_MAP = 998 new PropertyName<Map<String,Resource>>(PROPERTY_NAMESPACE, "loaded-child-map"); 999 1000 /** 1001 * Get the value of this proxy's {@link #LOADED_CHILD_MAP} property. 1002 * @return this view's loaded child map 1003 * @throws WvcmException if this proxy doesn't define a value for this property. 1004 */ 1005 public Map<String,Resource> getLoadedChildMap() throws WvcmException; 1006 1007 /** 1008 * This web view's file area root directory on the local machine. 1009 * The value of this property will be null if it does not have 1010 * a file area on the local machine. 1011 * Only supported for web views. 1012 */ 1013 PropertyName<File> FILE_AREA_ROOT_DIRECTORY = 1014 new PropertyName<File>(PROPERTY_NAMESPACE, "file-area-root-directory"); 1015 1016 /** 1017 * Returns the value of the {@link #FILE_AREA_ROOT_DIRECTORY} property. 1018 * @return This view's copy area root directory, or null if it has 1019 * no copy area on the local machine 1020 * @throws WvcmException if this property is not defined by this proxy. 1021 */ 1022 public File getFileAreaRootDirectory() throws WvcmException; 1023 1024 /** 1025 * Is this web view's local file area schema version older than the version 1026 * supported by the running CM API file management code? If so, the file 1027 * area needs to be upgraded before it can be used. 1028 * 1029 * @see com.ibm.rational.wvcm.stp.cc.CcView#doUpgradeFileArea(Feedback) 1030 */ 1031 PropertyName<Boolean> FILE_AREA_NEEDS_UPGRADE = 1032 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "file-area-needs-upgrade"); 1033 1034 /** 1035 * Get the value of this view's {@link #FILE_AREA_NEEDS_UPGRADE} property. 1036 * @return true if this view's local file area needs upgrading; false otherwise. 1037 * @throws WvcmException if this property is not defined by this proxy. 1038 */ 1039 boolean getFileAreaNeedsUpgrade() throws WvcmException; 1040 1041 /** 1042 * Is this view associated with a UCM stream?. 1043 */ 1044 PropertyName<Boolean> IS_UCM_VIEW = 1045 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-ucm-view"); 1046 1047 /** 1048 * Get the value of this view's {@link #IS_UCM_VIEW} property. 1049 * @return true if this view represents a UCM view; false otherwise. 1050 * @throws WvcmException if this property is not defined by this proxy. 1051 */ 1052 boolean getIsUcmView() throws WvcmException; 1053 1054 /** 1055 * This view's config spec. 1056 */ 1057 PropertyName<CcConfigSpec> CONFIG_SPEC = 1058 new PropertyName<CcConfigSpec>(PROPERTY_NAMESPACE, "config-spec"); 1059 1060 /** 1061 * Get the value of this view's {@link #CONFIG_SPEC} property. 1062 * @return this view's config spec as a CcConfigSpec instance 1063 */ 1064 CcConfigSpec getConfigSpec() throws WvcmException; 1065 1066 /** 1067 * Set the value of this view's {@link #CONFIG_SPEC} property. 1068 * @param configSpec the new config spec for this view 1069 */ 1070 void setConfigSpec(CcConfigSpec configSpec); 1071 1072 /** 1073 * Network region in which the dynamic view is registered. 1074 * Not supported for other view types. 1075 * This is a write only property; to determine the region for 1076 * an existing view, use the CcViewTag.REGISTRY_REGION property. 1077 */ 1078 PropertyName<CcRegistryRegion> REGION = 1079 new PropertyName<CcRegistryRegion>(PROPERTY_NAMESPACE, "view-region"); 1080 1081 /** 1082 * Set the value of this view's {@link #REGION} property. This 1083 * property may only be set at view creation time. 1084 * This is a write only property. 1085 * If unspecified, the local host's network region will be used. 1086 * @param region network region in which to register the view 1087 */ 1088 void setRegion(CcRegistryRegion region); 1089 1090 /** 1091 * Should derived objects created in this view be shared and made 1092 * available for winkin by other views? 1093 * (Dynamic views only, not supported for other view types.) 1094 */ 1095 PropertyName<Boolean> SHARE_DERIVED_OBJECTS = 1096 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "shared-dos"); 1097 1098 /** 1099 * Get the value of this view's {@link #SHARE_DERIVED_OBJECTS} property. 1100 * @return true if view creates shared derived objects, false otherwise 1101 */ 1102 Boolean getShareDerivedObjects() throws WvcmException; 1103 1104 /** 1105 * Set the value of this view's {@link #SHARE_DERIVED_OBJECTS} property. This 1106 * property may only be set at view creation time. 1107 * If unspecified, site-wide default is used. 1108 * If unspecified and no site-wide default, derived objects will be shared. 1109 * @param shareDerivedObjects true to make derived objects available for winkin 1110 * by other views, otherwise false 1111 */ 1112 void setShareDerivedObjects(Boolean shareDerivedObjects); 1113 1114 /** 1115 * The text mode of the view. The text mode specifies the line 1116 * terminator sequence for text files in the view. If no value is 1117 * set upon view creation, defaults to {@link TextMode#TRANSPARENT}. 1118 */ 1119 PropertyName<TextMode> TEXT_MODE = 1120 new PropertyName<TextMode>(PROPERTY_NAMESPACE, "text-mode"); 1121 1122 /** 1123 * Get the value of this view's {@link #TEXT_MODE} property. 1124 * @return enumeration value representing this view's text mode. 1125 * @throws WvcmException if this proxy doesn't define a value for this property. 1126 */ 1127 TextMode getTextMode() throws WvcmException; 1128 1129 /** 1130 * Set the value of this view's {@link #TEXT_MODE} property. This 1131 * property may only be set at view creation time. 1132 * @param textMode the text mode of the view. 1133 */ 1134 void setTextMode(TextMode textMode); 1135 1136 /** 1137 * Break a file area lock on this web view with the given lock info. 1138 * @param lockInfo information about the lock 1139 * @return true if the lock was broken; false otherwise 1140 * @throws WvcmException if a problem occurred breaking the lock 1141 */ 1142 boolean breakFileAreaLock(CcFileAreaLockInfo lockInfo) throws WvcmException; 1143 1144 /** 1145 * CcViewAccessInfo object contains the supported view access properties. 1146 */ 1147 public static final PropertyName<CcViewAccessInfo> VIEW_ACCESS_INFO = 1148 new PropertyName<CcViewAccessInfo>(PROPERTY_NAMESPACE, "view-access-info"); 1149 1150 /** 1151 * Returns the value of this proxy's {@link #VIEW_ACCESS_INFO} property. 1152 * 1153 * @return the CcViewAccessInfo object. 1154 * @throws WvcmException 1155 * if this proxy doesn't define a value for this property. 1156 */ 1157 public CcViewAccessInfo getViewAccessInfo() throws WvcmException; 1158 1159 /** 1160 * The storage location for a dynamic view, not supported for other 1161 * view types. 1162 */ 1163 public static final PropertyName<CcStorageLocation> VIEW_STORAGE_LOCATION = 1164 new PropertyName<CcStorageLocation>(PROPERTY_NAMESPACE, "view-stgloc"); 1165 1166 /** 1167 * Set the value of this view's {@link #VIEW_STORAGE_LOCATION} property. 1168 * This property may only be set at view creation time. 1169 * It is a write-only property. 1170 * @param viewStorageLocation the storage location for the new view 1171 */ 1172 void setViewStorageLocation(CcStorageLocation viewStorageLocation); 1173 1174 /** 1175 * The storage path for a dynamic view, not supported for other 1176 * view types. 1177 */ 1178 public static final PropertyName<String> VIEW_STORAGE_PATH = 1179 new PropertyName<String>(PROPERTY_NAMESPACE, "view-storage-path"); 1180 1181 /** 1182 * Returns the value of this proxy's {@link #VIEW_STORAGE_PATH} property. 1183 * 1184 * @return path to the view storage 1185 * @throws WvcmException 1186 * if this proxy doesn't define a value for this property. 1187 */ 1188 public String getViewStoragePath() throws WvcmException; 1189 1190 /** 1191 * Set the value of this view's {@link #VIEW_STORAGE_PATH} property. 1192 * This property may only be set at view creation time. 1193 * @param viewStoragePath the storage path for the new view 1194 */ 1195 void setViewStoragePath(String viewStoragePath); 1196 1197 /** 1198 * <p> 1199 * The permissions applied to this resource. 1200 * </p> 1201 */ 1202 public static final PropertyName<CcPermissions> PERMISSIONS = 1203 new PropertyName<CcPermissions>(PROPERTY_NAMESPACE, "cc-permissions"); 1204 1205 /** 1206 * Returns the value of this proxy's {@link #PERMISSIONS} property. 1207 * 1208 * @return A permissions object from which specific permissions 1209 * information can be extracted. 1210 * @throws WvcmException 1211 * if this proxy doesn't define a value for this property. 1212 */ 1213 public CcPermissions getPermissions() throws WvcmException; 1214 1215 /** 1216 * Does this view have non-shareable derived objects? 1217 * This property is supported for dynamic views only. 1218 */ 1219 public static final PropertyName<Boolean> IS_EXPRESS = 1220 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-express"); 1221 1222 /** 1223 * Returns the value of this proxy's {@link #IS_EXPRESS} property. 1224 * 1225 * @return true if this view has non-shareable DOs; false otherwise. 1226 * @throws WvcmException 1227 * if this proxy doesn't define a value for this property. 1228 */ 1229 public Boolean getIsExpress() throws WvcmException; 1230 1231 /** 1232 * Are this view's permissions valid? 1233 */ 1234 public static final PropertyName<Boolean> ARE_PERMISSIONS_VALID = 1235 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "are-permissions-valid"); 1236 1237 /** 1238 * Returns the value of this proxy's {@link #ARE_PERMISSIONS_VALID} property. 1239 * 1240 * @return true if this view's permissions are valid; false otherwise. 1241 * @throws WvcmException 1242 * if this proxy doesn't define a value for this property. 1243 */ 1244 public Boolean getArePermissionsValid() throws WvcmException; 1245 1246 /** 1247 * Is this view read-only? 1248 */ 1249 public static final PropertyName<Boolean> IS_READ_ONLY = 1250 new PropertyName<Boolean>(PROPERTY_NAMESPACE, "is-read-only"); 1251 1252 /** 1253 * Returns the value of this proxy's {@link #IS_READ_ONLY} property. 1254 * 1255 * @return true if this view is read-only; false otherwise. 1256 * @throws WvcmException 1257 * if this proxy doesn't define a value for this property. 1258 */ 1259 public Boolean getIsReadOnly() throws WvcmException; 1260 1261 /** 1262 * Set the {@link #STREAM} property. 1263 * 1264 * @param stream the {@link Stream} object that 1265 * identifies the {@link #STREAM} for this Workspace. 1266 * @see #getStream 1267 */ 1268 public void setStream(Stream stream); 1269 1270 }